Andrew Morton
2022-Jun-08 19:16 UTC
[Ocfs2-devel] + ocfs2-kill-ebusy-from-dlmfs_evict_inode.patch added to mm-nonmm-unstable branch
The patch titled Subject: ocfs2: kill EBUSY from dlmfs_evict_inode has been added to the -mm mm-nonmm-unstable branch. Its filename is ocfs2-kill-ebusy-from-dlmfs_evict_inode.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/ocfs2-kill-ebusy-from-dlmfs_evict_inode.patch This patch will later appear in the mm-nonmm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Junxiao Bi via Ocfs2-devel <ocfs2-devel at oss.oracle.com> Subject: ocfs2: kill EBUSY from dlmfs_evict_inode Date: Tue, 7 Jun 2022 10:12:26 -0700 When unlinking a dlmfs, first it will invoke dlmfs_unlink(), and then invoke dlmfs_evict_inode(), user_dlm_destroy_lock() is invoked in both places, the second one from dlmfs_evict_inode() will get EBUSY error because USER_LOCK_IN_TEARDOWN is already set in lockres. This doesn't affect any function, just the error log is annoying. Link: https://lkml.kernel.org/r/20220607171226.86672-1-junxiao.bi at oracle.com Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com> Reviewed-by: Joseph Qi <joseph.qi at linux.alibaba.com> Cc: Mark Fasheh <mark at fasheh.com> Cc: Joel Becker <jlbec at evilplan.org> Cc: Junxiao Bi <junxiao.bi at oracle.com> Cc: Changwei Ge <gechangwei at live.cn> Cc: Gang He <ghe at suse.com> Cc: Jun Piao <piaojun at huawei.com> Signed-off-by: Andrew Morton <akpm at linux-foundation.org> --- fs/ocfs2/dlmfs/dlmfs.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) --- a/fs/ocfs2/dlmfs/dlmfs.c~ocfs2-kill-ebusy-from-dlmfs_evict_inode +++ a/fs/ocfs2/dlmfs/dlmfs.c @@ -296,17 +296,25 @@ static void dlmfs_evict_inode(struct ino { int status; struct dlmfs_inode_private *ip; + struct user_lock_res *lockres; + int teardown; clear_inode(inode); mlog(0, "inode %lu\n", inode->i_ino); ip = DLMFS_I(inode); + lockres = &ip->ip_lockres; if (S_ISREG(inode->i_mode)) { - status = user_dlm_destroy_lock(&ip->ip_lockres); - if (status < 0) - mlog_errno(status); + spin_lock(&lockres->l_lock); + teardown = !!(lockres->l_flags & USER_LOCK_IN_TEARDOWN); + spin_unlock(&lockres->l_lock); + if (!teardown) { + status = user_dlm_destroy_lock(lockres); + if (status < 0) + mlog_errno(status); + } iput(ip->ip_parent); goto clear_fields; } _ Patches currently in -mm which might be from ocfs2-devel at oss.oracle.com are ocfs2-kill-ebusy-from-dlmfs_evict_inode.patch