jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()'
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Aug 2009 19:29:03 +0000 (12:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Sep 2009 18:09:04 +0000 (11:09 -0700)
This avoids an indirect call in the VFS for each path component lookup.

Well, at least as long as you own the directory in question, and the ACL
check is unnecessary.

Reviewed-by: James Morris <jmorris@namei.org>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/jffs2/acl.c
fs/jffs2/acl.h
fs/jffs2/dir.c
fs/jffs2/file.c
fs/jffs2/symlink.c
fs/jfs/acl.c
fs/jfs/file.c
fs/jfs/jfs_acl.h
fs/jfs/namei.c
fs/xfs/linux-2.6/xfs_iops.c

index 8fcb6239218e53b7b9ced59a0ee9a854f4c77175..7edb62e97419c57d9e1ba28de2ca810798bfed6a 100644 (file)
@@ -258,7 +258,7 @@ static int jffs2_set_acl(struct inode *inode, int type, struct posix_acl *acl)
        return rc;
 }
 
-static int jffs2_check_acl(struct inode *inode, int mask)
+int jffs2_check_acl(struct inode *inode, int mask)
 {
        struct posix_acl *acl;
        int rc;
@@ -274,11 +274,6 @@ static int jffs2_check_acl(struct inode *inode, int mask)
        return -EAGAIN;
 }
 
-int jffs2_permission(struct inode *inode, int mask)
-{
-       return generic_permission(inode, mask, jffs2_check_acl);
-}
-
 int jffs2_init_acl_pre(struct inode *dir_i, struct inode *inode, int *i_mode)
 {
        struct posix_acl *acl, *clone;
index fc929f2a14f6bfe16d1554767f67abe52986d137..f0ba63e3c36bcc607fb879a1beb219133902f09f 100644 (file)
@@ -26,7 +26,7 @@ struct jffs2_acl_header {
 
 #ifdef CONFIG_JFFS2_FS_POSIX_ACL
 
-extern int jffs2_permission(struct inode *, int);
+extern int jffs2_check_acl(struct inode *, int);
 extern int jffs2_acl_chmod(struct inode *);
 extern int jffs2_init_acl_pre(struct inode *, struct inode *, int *);
 extern int jffs2_init_acl_post(struct inode *);
@@ -36,7 +36,7 @@ extern struct xattr_handler jffs2_acl_default_xattr_handler;
 
 #else
 
-#define jffs2_permission                       (NULL)
+#define jffs2_check_acl                                (NULL)
 #define jffs2_acl_chmod(inode)                 (0)
 #define jffs2_init_acl_pre(dir_i,inode,mode)   (0)
 #define jffs2_init_acl_post(inode)             (0)
index 6f60cc910f4c568f527354357f60d63349a1d8c5..7aa4417e085f2870acd84598c2a5bd0c3654b20c 100644 (file)
@@ -55,7 +55,7 @@ const struct inode_operations jffs2_dir_inode_operations =
        .rmdir =        jffs2_rmdir,
        .mknod =        jffs2_mknod,
        .rename =       jffs2_rename,
-       .permission =   jffs2_permission,
+       .check_acl =    jffs2_check_acl,
        .setattr =      jffs2_setattr,
        .setxattr =     jffs2_setxattr,
        .getxattr =     jffs2_getxattr,
index 23c947539864a0c0613ade018cb9e6400149de3a..b7b74e299142bd964330ca2b88570b381420ad8b 100644 (file)
@@ -56,7 +56,7 @@ const struct file_operations jffs2_file_operations =
 
 const struct inode_operations jffs2_file_inode_operations =
 {
-       .permission =   jffs2_permission,
+       .check_acl =    jffs2_check_acl,
        .setattr =      jffs2_setattr,
        .setxattr =     jffs2_setxattr,
        .getxattr =     jffs2_getxattr,
index b7339c3b6ad9d7d62d51d9653371f3602182e264..4ec11e8bda8c75a33336cba971128c2cd5ca073e 100644 (file)
@@ -21,7 +21,7 @@ const struct inode_operations jffs2_symlink_inode_operations =
 {
        .readlink =     generic_readlink,
        .follow_link =  jffs2_follow_link,
-       .permission =   jffs2_permission,
+       .check_acl =    jffs2_check_acl,
        .setattr =      jffs2_setattr,
        .setxattr =     jffs2_setxattr,
        .getxattr =     jffs2_getxattr,
index a29c7c3e3fb81a58148c93e0dd56e858bac04939..d66477c34306aae7730cb79ec3793ca220109aea 100644 (file)
@@ -114,7 +114,7 @@ out:
        return rc;
 }
 
-static int jfs_check_acl(struct inode *inode, int mask)
+int jfs_check_acl(struct inode *inode, int mask)
 {
        struct posix_acl *acl = jfs_get_acl(inode, ACL_TYPE_ACCESS);
 
@@ -129,11 +129,6 @@ static int jfs_check_acl(struct inode *inode, int mask)
        return -EAGAIN;
 }
 
-int jfs_permission(struct inode *inode, int mask)
-{
-       return generic_permission(inode, mask, jfs_check_acl);
-}
-
 int jfs_init_acl(tid_t tid, struct inode *inode, struct inode *dir)
 {
        struct posix_acl *acl = NULL;
index 7f6063acaa3b2460c395ced0da2c82bb21a579b2..2b70fa78e4a7ab664a1dff1b7c32698b3f269474 100644 (file)
@@ -96,7 +96,7 @@ const struct inode_operations jfs_file_inode_operations = {
        .removexattr    = jfs_removexattr,
 #ifdef CONFIG_JFS_POSIX_ACL
        .setattr        = jfs_setattr,
-       .permission     = jfs_permission,
+       .check_acl      = jfs_check_acl,
 #endif
 };
 
index 88475f10a3899dca4c6fa15eceffbbccb97cdab0..b07bd417ef85f66a53bcd13425c4548d660f6c6d 100644 (file)
@@ -20,7 +20,7 @@
 
 #ifdef CONFIG_JFS_POSIX_ACL
 
-int jfs_permission(struct inode *, int);
+int jfs_check_acl(struct inode *, int);
 int jfs_init_acl(tid_t, struct inode *, struct inode *);
 int jfs_setattr(struct dentry *, struct iattr *);
 
index 514ee2edb92a9046c40661a81abf26ee1e558da6..c79a4270f0837a42e4f52d7e3eacf56dabe9745f 100644 (file)
@@ -1543,7 +1543,7 @@ const struct inode_operations jfs_dir_inode_operations = {
        .removexattr    = jfs_removexattr,
 #ifdef CONFIG_JFS_POSIX_ACL
        .setattr        = jfs_setattr,
-       .permission     = jfs_permission,
+       .check_acl      = jfs_check_acl,
 #endif
 };
 
index 8070b34cc287db18f8eb40653d4a8f59f8bd3aa7..6c32f1d63d8c43966b9f319610008831f63178bb 100644 (file)
@@ -484,14 +484,6 @@ xfs_vn_put_link(
                kfree(s);
 }
 
-STATIC int
-xfs_vn_permission(
-       struct inode            *inode,
-       int                     mask)
-{
-       return generic_permission(inode, mask, xfs_check_acl);
-}
-
 STATIC int
 xfs_vn_getattr(
        struct vfsmount         *mnt,
@@ -696,7 +688,7 @@ xfs_vn_fiemap(
 }
 
 static const struct inode_operations xfs_inode_operations = {
-       .permission             = xfs_vn_permission,
+       .check_acl              = xfs_check_acl,
        .truncate               = xfs_vn_truncate,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
@@ -724,7 +716,7 @@ static const struct inode_operations xfs_dir_inode_operations = {
        .rmdir                  = xfs_vn_unlink,
        .mknod                  = xfs_vn_mknod,
        .rename                 = xfs_vn_rename,
-       .permission             = xfs_vn_permission,
+       .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,
@@ -749,7 +741,7 @@ static const struct inode_operations xfs_dir_ci_inode_operations = {
        .rmdir                  = xfs_vn_unlink,
        .mknod                  = xfs_vn_mknod,
        .rename                 = xfs_vn_rename,
-       .permission             = xfs_vn_permission,
+       .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,
@@ -762,7 +754,7 @@ static const struct inode_operations xfs_symlink_inode_operations = {
        .readlink               = generic_readlink,
        .follow_link            = xfs_vn_follow_link,
        .put_link               = xfs_vn_put_link,
-       .permission             = xfs_vn_permission,
+       .check_acl              = xfs_check_acl,
        .getattr                = xfs_vn_getattr,
        .setattr                = xfs_vn_setattr,
        .setxattr               = generic_setxattr,