]> Pileus Git - ~andy/linux/blobdiff - fs/hfsplus/inode.c
drivers: clocksource: add support for ARM architected timer event stream
[~andy/linux] / fs / hfsplus / inode.c
index f833d35630abbd4d98c4ca322e32704d792cf9e9..37213d075f3c5c9f29029b280b093781ddb526ca 100644 (file)
@@ -19,6 +19,7 @@
 #include "hfsplus_fs.h"
 #include "hfsplus_raw.h"
 #include "xattr.h"
+#include "acl.h"
 
 static int hfsplus_readpage(struct file *file, struct page *page)
 {
@@ -35,7 +36,7 @@ static void hfsplus_write_failed(struct address_space *mapping, loff_t to)
        struct inode *inode = mapping->host;
 
        if (to > inode->i_size) {
-               truncate_pagecache(inode, to, inode->i_size);
+               truncate_pagecache(inode, inode->i_size);
                hfsplus_file_truncate(inode);
        }
 }
@@ -316,6 +317,13 @@ static int hfsplus_setattr(struct dentry *dentry, struct iattr *attr)
 
        setattr_copy(inode, attr);
        mark_inode_dirty(inode);
+
+       if (attr->ia_valid & ATTR_MODE) {
+               error = hfsplus_posix_acl_chmod(inode);
+               if (unlikely(error))
+                       return error;
+       }
+
        return 0;
 }
 
@@ -383,6 +391,9 @@ static const struct inode_operations hfsplus_file_inode_operations = {
        .getxattr       = generic_getxattr,
        .listxattr      = hfsplus_listxattr,
        .removexattr    = hfsplus_removexattr,
+#ifdef CONFIG_HFSPLUS_FS_POSIX_ACL
+       .get_acl        = hfsplus_get_posix_acl,
+#endif
 };
 
 static const struct file_operations hfsplus_file_operations = {