Whamcloud - gitweb
LU-12657 llite: forget cached ACLs properly 70/35870/2
authorAlex Zhuravlev <bzzz@whamcloud.com>
Fri, 9 Aug 2019 19:43:45 +0000 (23:43 +0400)
committerOleg Drokin <green@whamcloud.com>
Thu, 12 Sep 2019 03:47:33 +0000 (03:47 +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.

Lustre-change: https://review.whamcloud.com/35756
Lustre-commit: 3df034f8f46b0d22829f7ac83cbf9871823c093c

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

index 91691db..f12fdbb 100644 (file)
@@ -383,6 +383,9 @@ 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;
 }