summaryrefslogtreecommitdiffstats
path: root/fs/jfs
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@gmx.com>2018-08-31 10:33:51 -0400
committerDave Kleikamp <dave.kleikamp@oracle.com>2018-09-06 12:56:26 -0400
commite8d4ceeb34a58d47cc031ec023d61198ec8c4a80 (patch)
tree9fd08b9062de7f0120475656257e6bbe25b2f72d /fs/jfs
parentbe65e2595b4c1fbeceba336d8ee83406726b1d8d (diff)
jfs: cache NULL when both default_acl and acl are NULL
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: Dave Kleikamp <dave.kleikamp@oracle.com>
Diffstat (limited to 'fs/jfs')
-rw-r--r--fs/jfs/acl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
index 2e71b6e7e646..8c06a6ea862d 100644
--- a/fs/jfs/acl.c
+++ b/fs/jfs/acl.c
@@ -146,12 +146,16 @@ int jfs_init_acl(tid_t tid, struct inode *inode, struct inode *dir)
146 if (default_acl) { 146 if (default_acl) {
147 rc = __jfs_set_acl(tid, inode, ACL_TYPE_DEFAULT, default_acl); 147 rc = __jfs_set_acl(tid, inode, ACL_TYPE_DEFAULT, default_acl);
148 posix_acl_release(default_acl); 148 posix_acl_release(default_acl);
149 } else {
150 inode->i_default_acl = NULL;
149 } 151 }
150 152
151 if (acl) { 153 if (acl) {
152 if (!rc) 154 if (!rc)
153 rc = __jfs_set_acl(tid, inode, ACL_TYPE_ACCESS, acl); 155 rc = __jfs_set_acl(tid, inode, ACL_TYPE_ACCESS, acl);
154 posix_acl_release(acl); 156 posix_acl_release(acl);
157 } else {
158 inode->i_acl = NULL;
155 } 159 }
156 160
157 JFS_IP(inode)->mode2 = (JFS_IP(inode)->mode2 & 0xffff0000) | 161 JFS_IP(inode)->mode2 = (JFS_IP(inode)->mode2 & 0xffff0000) |