mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Revert "gfs2: Check for log write errors before telling dlm to unlock"
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 d93ae386ef ("gfs2: Check for log write errors
before telling dlm to unlock").
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
@@ -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);
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user