mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
gfs2: fix recovery during unmount
Journal recovery from lock_dlm should not be ignored if there is an unmount in progress. Ignoring it will causes the recovery to get stuck. The recovery process will correctly handle an in-progess unmount. Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
parent
4875647a08
commit
1a058f5288
@ -368,10 +368,7 @@ int gfs2_recover_set(struct gfs2_sbd *sdp, unsigned jid)
|
||||
struct gfs2_jdesc *jd;
|
||||
int rv;
|
||||
|
||||
rv = -ESHUTDOWN;
|
||||
spin_lock(&sdp->sd_jindex_spin);
|
||||
if (test_bit(SDF_NORECOVERY, &sdp->sd_flags))
|
||||
goto out;
|
||||
rv = -EBUSY;
|
||||
if (sdp->sd_jdesc->jd_jid == jid)
|
||||
goto out;
|
||||
@ -396,8 +393,13 @@ static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
|
||||
if (rv != 1)
|
||||
return -EINVAL;
|
||||
|
||||
rv = gfs2_recover_set(sdp, jid);
|
||||
if (test_bit(SDF_NORECOVERY, &sdp->sd_flags)) {
|
||||
rv = -ESHUTDOWN;
|
||||
goto out;
|
||||
}
|
||||
|
||||
rv = gfs2_recover_set(sdp, jid);
|
||||
out:
|
||||
return rv ? rv : len;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user