mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
ocfs2: unlock super lock if lockres refresh failed
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>
This commit is contained in:
parent
d787ab0977
commit
3278bb748d
1 changed files with 4 additions and 1 deletions
|
@ -2545,6 +2545,7 @@ int ocfs2_super_lock(struct ocfs2_super *osb,
|
||||||
* everything is up to the caller :) */
|
* everything is up to the caller :) */
|
||||||
status = ocfs2_should_refresh_lock_res(lockres);
|
status = ocfs2_should_refresh_lock_res(lockres);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
ocfs2_cluster_unlock(osb, lockres, level);
|
||||||
mlog_errno(status);
|
mlog_errno(status);
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
@ -2553,8 +2554,10 @@ int ocfs2_super_lock(struct ocfs2_super *osb,
|
||||||
|
|
||||||
ocfs2_complete_lock_res_refresh(lockres, status);
|
ocfs2_complete_lock_res_refresh(lockres, status);
|
||||||
|
|
||||||
if (status < 0)
|
if (status < 0) {
|
||||||
|
ocfs2_cluster_unlock(osb, lockres, level);
|
||||||
mlog_errno(status);
|
mlog_errno(status);
|
||||||
|
}
|
||||||
ocfs2_track_lock_refresh(lockres);
|
ocfs2_track_lock_refresh(lockres);
|
||||||
}
|
}
|
||||||
bail:
|
bail:
|
||||||
|
|
Loading…
Reference in a new issue