Whamcloud - gitweb
LU-16637 llite: call truncate_inode_pages() in inode lock 57/50857/22
authorBobi Jam <bobijam@whamcloud.com>
Thu, 4 May 2023 02:39:29 +0000 (10:39 +0800)
committerOleg Drokin <green@whamcloud.com>
Sat, 8 Jul 2023 22:41:50 +0000 (22:41 +0000)
commit51d62f2122fee14fbb3ff8333b5a830e1181e4e5
tree080dd850d0589eeaf819875cbb6a4a5ad79fbe1c
parent0cb7ebf22304e0f8ad8eaba62cad8d4c8c5aec1c
LU-16637 llite: call truncate_inode_pages() in inode lock

In some cases vvp_prune()->truncate_inode_pages() is get called
without IO context, we need protect it with inode lock as well.

So we add ll_inode_info::lli_inode_lock_owner and set it according to
vfs lock rules (Documentation/filesystems/Locking or
Documentation/filesystems/locking.rst), so before calling
truncate_inode_pages(), we'd lock the inode if it's not locked in
vfs.

Fixes: ef9be34478 ("LU-16637 llite: call truncate_inode_pages() under inode lock")
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I84d7d999a49325810062a9a7337e184d35467820
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50857
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
12 files changed:
lustre/include/cl_object.h
lustre/llite/dir.c
lustre/llite/file.c
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/llite/llite_nfs.c
lustre/llite/namei.c
lustre/llite/vvp_io.c
lustre/llite/vvp_object.c
lustre/llite/xattr.c
lustre/lov/lov_object.c
lustre/obdclass/cl_object.c