Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a058f52 authored by David Teigland's avatar David Teigland
Browse files

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: default avatarDavid Teigland <teigland@redhat.com>
parent 4875647a
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -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;
}