Skip to content

Commit

Permalink
ocfs2: unlock super lock if lockres refresh failed
Browse files Browse the repository at this point in the history
If lockres refresh failed, the super lock will never be released which
will cause some processes on other cluster nodes hung forever.

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Junxiao Bi authored and Linus Torvalds committed Feb 22, 2013
1 parent d787ab0 commit 3278bb7
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion fs/ocfs2/dlmglue.c
Original file line number Diff line number Diff line change
Expand Up @@ -2545,6 +2545,7 @@ int ocfs2_super_lock(struct ocfs2_super *osb,
* everything is up to the caller :) */
status = ocfs2_should_refresh_lock_res(lockres);
if (status < 0) {
ocfs2_cluster_unlock(osb, lockres, level);
mlog_errno(status);
goto bail;
}
Expand All @@ -2553,8 +2554,10 @@ int ocfs2_super_lock(struct ocfs2_super *osb,

ocfs2_complete_lock_res_refresh(lockres, status);

if (status < 0)
if (status < 0) {
ocfs2_cluster_unlock(osb, lockres, level);
mlog_errno(status);
}
ocfs2_track_lock_refresh(lockres);
}
bail:
Expand Down

0 comments on commit 3278bb7

Please sign in to comment.