#include <linux/capability.h>
 #include <linux/fsnotify.h>
 #include <linux/fcntl.h>
-#include <linux/quotaops.h>
 #include <linux/security.h>
 
 /* Taken over from the old code... */
                error = inode->i_op->setattr(dentry, attr);
        } else {
                error = inode_change_ok(inode, attr);
-               if (!error) {
-                       if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
-                           (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid))
-                               error = vfs_dq_transfer(inode, attr) ?
-                                       -EDQUOT : 0;
-                       if (!error)
-                               error = inode_setattr(inode, attr);
-               }
+               if (!error)
+                       error = inode_setattr(inode, attr);
        }
 
        if (ia_valid & ATTR_SIZE)
 
 
 #include <linux/sched.h>
 #include <linux/fs.h>
-#include <linux/quotaops.h>
 #include <linux/posix_acl_xattr.h>
 #include "jfs_incore.h"
 #include "jfs_txnmgr.h"
        return rc;
 }
 
-static int jfs_acl_chmod(struct inode *inode)
+int jfs_acl_chmod(struct inode *inode)
 {
        struct posix_acl *acl, *clone;
        int rc;
        posix_acl_release(clone);
        return rc;
 }
-
-int jfs_setattr(struct dentry *dentry, struct iattr *iattr)
-{
-       struct inode *inode = dentry->d_inode;
-       int rc;
-
-       rc = inode_change_ok(inode, iattr);
-       if (rc)
-               return rc;
-
-       if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
-           (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
-               if (vfs_dq_transfer(inode, iattr))
-                       return -EDQUOT;
-       }
-
-       rc = inode_setattr(inode, iattr);
-
-       if (!rc && (iattr->ia_valid & ATTR_MODE))
-               rc = jfs_acl_chmod(inode);
-
-       return rc;
-}
 
  */
 
 #include <linux/fs.h>
+#include <linux/quotaops.h>
 #include "jfs_incore.h"
 #include "jfs_inode.h"
 #include "jfs_dmap.h"
        return 0;
 }
 
+int jfs_setattr(struct dentry *dentry, struct iattr *iattr)
+{
+       struct inode *inode = dentry->d_inode;
+       int rc;
+
+       rc = inode_change_ok(inode, iattr);
+       if (rc)
+               return rc;
+
+       if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
+           (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
+               if (vfs_dq_transfer(inode, iattr))
+                       return -EDQUOT;
+       }
+
+       rc = inode_setattr(inode, iattr);
+
+       if (!rc && (iattr->ia_valid & ATTR_MODE))
+               rc = jfs_acl_chmod(inode);
+
+       return rc;
+}
+
 const struct inode_operations jfs_file_inode_operations = {
        .truncate       = jfs_truncate,
        .setxattr       = jfs_setxattr,
        .getxattr       = jfs_getxattr,
        .listxattr      = jfs_listxattr,
        .removexattr    = jfs_removexattr,
-#ifdef CONFIG_JFS_POSIX_ACL
        .setattr        = jfs_setattr,
+#ifdef CONFIG_JFS_POSIX_ACL
        .check_acl      = jfs_check_acl,
 #endif
 };
 
 
 int jfs_check_acl(struct inode *, int);
 int jfs_init_acl(tid_t, struct inode *, struct inode *);
-int jfs_setattr(struct dentry *, struct iattr *);
+int jfs_acl_chmod(struct inode *inode);
 
 #else
 
        return 0;
 }
 
+static inline int jfs_acl_chmod(struct inode *inode)
+{
+       return 0;
+}
+
 #endif
 #endif         /* _H_JFS_ACL */
 
        int fh_len, int fh_type);
 extern void jfs_set_inode_flags(struct inode *);
 extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int);
+extern int jfs_setattr(struct dentry *, struct iattr *);
 
 extern const struct address_space_operations jfs_aops;
 extern const struct inode_operations jfs_dir_inode_operations;
 
        .getxattr       = jfs_getxattr,
        .listxattr      = jfs_listxattr,
        .removexattr    = jfs_removexattr,
-#ifdef CONFIG_JFS_POSIX_ACL
        .setattr        = jfs_setattr,
+#ifdef CONFIG_JFS_POSIX_ACL
        .check_acl      = jfs_check_acl,
 #endif
 };
 
 #include <linux/errno.h>
 #include <linux/smp_lock.h>
 #include <linux/pagemap.h>
+#include <linux/quotaops.h>
 #include <linux/buffer_head.h>
 #include <linux/aio.h>
 
        .llseek                 = generic_file_llseek,
 };
 
+static int udf_setattr(struct dentry *dentry, struct iattr *iattr)
+{
+       struct inode *inode = dentry->d_inode;
+       int error;
+
+       error = inode_change_ok(inode, iattr);
+       if (error)
+               return error;
+
+       if ((iattr->ia_valid & ATTR_UID && iattr->ia_uid != inode->i_uid) ||
+            (iattr->ia_valid & ATTR_GID && iattr->ia_gid != inode->i_gid)) {
+               error = vfs_dq_transfer(inode, iattr) ? -EDQUOT : 0;
+               if (error)
+                       return error;
+       }
+
+       return inode_setattr(inode, iattr);
+}
+
 const struct inode_operations udf_file_inode_operations = {
-       .truncate = udf_truncate,
+       .truncate               = udf_truncate,
+       .setattr                = udf_setattr,
 };
 
 #include <linux/buffer_head.h>
 #include <linux/blkdev.h>
 #include <linux/sched.h>
+#include <linux/quotaops.h>
 
 #include "ufs_fs.h"
 #include "ufs.h"
        if (error)
                return error;
 
+       if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
+           (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) {
+               error = vfs_dq_transfer(inode, attr) ? -EDQUOT : 0;
+               if (error)
+                       return error;
+       }
        if (ia_valid & ATTR_SIZE &&
            attr->ia_size != i_size_read(inode)) {
                loff_t old_i_size = inode->i_size;