akpm at linux-foundation.org
2014-Mar-19 21:10 UTC
[Ocfs2-devel] [patch 2/8] ocfs2: flock: drop cross-node lock when failed locally
From: Wengang Wang <wen.gang.wang at oracle.com> Subject: ocfs2: flock: drop cross-node lock when failed locally ocfs2_do_flock() calls ocfs2_file_lock() to get the cross-node clock and then call flock_lock_file_wait() to compete with local processes. In case flock_lock_file_wait() failed, say -ENOMEM, clean up work is not done. This patch adds the cleanup --drop the cross-node lock which was just granted. [akpm at linux-foundation.org: coding-style fixes] Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com> Cc: Joel Becker <jlbec at evilplan.org> Cc: Mark Fasheh <mfasheh at suse.com> Signed-off-by: Andrew Morton <akpm at linux-foundation.org> --- fs/ocfs2/locks.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN fs/ocfs2/locks.c~ocfs2-flock-drop-cross-node-lock-when-failed-locally fs/ocfs2/locks.c --- a/fs/ocfs2/locks.c~ocfs2-flock-drop-cross-node-lock-when-failed-locally +++ a/fs/ocfs2/locks.c @@ -82,6 +82,8 @@ static int ocfs2_do_flock(struct file *f } ret = flock_lock_file_wait(file, fl); + if (ret) + ocfs2_file_unlock(file); out: mutex_unlock(&fp->fp_mutex); _
Mark Fasheh
2014-Mar-31 01:30 UTC
[Ocfs2-devel] [patch 2/8] ocfs2: flock: drop cross-node lock when failed locally
On Wed, Mar 19, 2014 at 02:10:00PM -0700, Andrew Morton wrote:> From: Wengang Wang <wen.gang.wang at oracle.com> > Subject: ocfs2: flock: drop cross-node lock when failed locally > > ocfs2_do_flock() calls ocfs2_file_lock() to get the cross-node clock and > then call flock_lock_file_wait() to compete with local processes. In case > flock_lock_file_wait() failed, say -ENOMEM, clean up work is not done. > This patch adds the cleanup --drop the cross-node lock which was just > granted.Out of curiousity was this a bug someone hit, or did you catch this via code review. Reviewed-by: Mark Fasheh <mfasheh at suse.de> --Mark -- Mark Fasheh