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 <[email protected]>
Cc: Joel Becker <[email protected]>
Cc: Mark Fasheh <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
biger410 authored and 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.