Whamcloud - gitweb
LU-12657 llite: forget cached ACLs properly 56/35756/5
authorAlex Zhuravlev <bzzz@whamcloud.com>
Fri, 9 Aug 2019 19:43:45 +0000 (23:43 +0400)
committerOleg Drokin <green@whamcloud.com>
Wed, 21 Aug 2019 04:52:42 +0000 (04:52 +0000)
Lustre with linux-4.* fails ACL tests (e.g. sanity/103 and sanityn/25)
because ll_lock_cancel_bits() does not reset i_acl and i_default_acl
into initial state.  use kernel's forget_all_cached_acls() to do so.

Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Change-Id: I468b775e13ba0f7279a6aa320983705f5e79187a
Reviewed-on: https://review.whamcloud.com/35756
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.com>
Tested-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/namei.c

index 30d5198..4a412cc 100644 (file)
@@ -362,6 +362,9 @@ static void ll_lock_cancel_bits(struct ldlm_lock *lock, __u64 to_cancel)
            inode != inode->i_sb->s_root->d_inode)
                ll_invalidate_aliases(inode);
 
+       if (bits & (MDS_INODELOCK_LOOKUP | MDS_INODELOCK_PERM))
+               forget_all_cached_acls(inode);
+
        iput(inode);
        RETURN_EXIT;
 }