]> git.baikalelectronics.ru Git - kernel.git/commitdiff
orangefs: cache NULL when both default_acl and acl are NULL
authorChengguang Xu <cgxu519@gmx.com>
Fri, 31 Aug 2018 14:33:52 +0000 (22:33 +0800)
committerMike Marshall <hubcap@omnibond.com>
Wed, 10 Oct 2018 13:54:25 +0000 (09:54 -0400)
default_acl and acl of newly created inode will be initiated
as ACL_NOT_CACHED in vfs function inode_init_always() and later
will be updated by calling xxx_init_acl() in specific filesystems.
Howerver, when default_acl and acl are NULL then they keep the value
of ACL_NOT_CACHED, this patch tries to cache NULL for acl/default_acl
in this case.

Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
fs/orangefs/acl.c

index 10587413b20e464299829ec32bc32ced475a37ff..72d2ff17d27b3d692b97ec4f3c95bfa471b6ed1b 100644 (file)
@@ -167,12 +167,16 @@ int orangefs_init_acl(struct inode *inode, struct inode *dir)
                error = __orangefs_set_acl(inode, default_acl,
                                           ACL_TYPE_DEFAULT);
                posix_acl_release(default_acl);
+       } else {
+               inode->i_default_acl = NULL;
        }
 
        if (acl) {
                if (!error)
                        error = __orangefs_set_acl(inode, acl, ACL_TYPE_ACCESS);
                posix_acl_release(acl);
+       } else {
+               inode->i_acl = NULL;
        }
 
        /* If mode of the inode was changed, then do a forcible ->setattr */