mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 12:30:53 +07: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
@ -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;
|
||||
}
|
||||
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user