]> Gentwo Git Trees - linux/.git/commitdiff
Revert "gfs2: Check for log write errors before telling dlm to unlock"
authorAndreas Gruenbacher <agruenba@redhat.com>
Wed, 6 Aug 2025 10:14:55 +0000 (12:14 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Wed, 26 Nov 2025 23:52:27 +0000 (23:52 +0000)
The current withdraw code duplicates the journal recovery code gfs2
already has for dealing with node failures, and it does so poorly.  That
code was added because when releasing a lockspace, we didn't have a way
to indicate that the lockspace needs recovery.  We now do have this
feature, so the current withdraw code can be removed almost entirely.
This is one of several steps towards that.

Reverts the rest of d93ae386ef3d ("gfs2: Check for log write errors
before telling dlm to unlock").

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/glock.c

index 991e514bfeed0bd06dd0bacb75f0b541b89eaacb..6fd67f5e622552bab5a10e2dc27176b19f47780e 100644 (file)
@@ -725,22 +725,6 @@ __acquires(&gl->gl_lockref.lock)
        spin_lock(&gl->gl_lockref.lock);
 
 skip_inval:
-       /*
-        * Check for an error encountered since we called go_sync and go_inval.
-        * If so, we can't withdraw from the glock code because the withdraw
-        * code itself uses glocks (see function signal_our_withdraw) to
-        * change the mount to read-only. Most importantly, we must not call
-        * dlm to unlock the glock until the journal is in a known good state
-        * (after journal replay) otherwise other nodes may use the object
-        * (rgrp or dinode) and then later, journal replay will corrupt the
-        * file system. The best we can do here is wait for the logd daemon
-        * to see sd_log_error and withdraw, and in the meantime, requeue the
-        * work for later.
-        *
-        * However, if we're just unlocking the lock (say, for unmount, when
-        * gfs2_gl_hash_clear calls clear_glock) and recovery is complete
-        * then it's okay to tell dlm to unlock it.
-        */
        if (glock_blocked_by_withdraw(gl) && target != LM_ST_UNLOCKED) {
                request_demote(gl, LM_ST_UNLOCKED, 0, false);
                /*