aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruenba@redhat.com>2025-07-08 19:13:32 +0200
committerAndreas Gruenbacher <agruenba@redhat.com>2025-09-12 12:02:02 +0200
commit2309a01351e56446f43c89e200d643647d47e739 (patch)
treea5b8697630d27c691b7cc9d0f51f8331b8e5db9b
parentgfs2: Remove space before newline (diff)
downloadlinux-2309a01351e56446f43c89e200d643647d47e739.tar.gz
linux-2309a01351e56446f43c89e200d643647d47e739.zip
gfs2: do_xmote cleanup
Check for asynchronous completion and clear the GLF_PENDING_REPLY flag earlier in do_xmote(). This will make future changes more readable. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Andrew Price <anprice@redhat.com>
-rw-r--r--fs/gfs2/glock.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 09af1fe12503..f1383e9445be 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -816,6 +816,12 @@ skip_inval:
ret = ls->ls_ops->lm_lock(gl, target, lck_flags);
spin_lock(&gl->gl_lockref.lock);
+ if (!ret) {
+ /* The operation will be completed asynchronously. */
+ return;
+ }
+ clear_bit(GLF_PENDING_REPLY, &gl->gl_flags);
+
if (ret == -EINVAL && gl->gl_target == LM_ST_UNLOCKED &&
target == LM_ST_UNLOCKED &&
test_bit(DFL_UNMOUNT, &ls->ls_recover_flags)) {
@@ -823,14 +829,10 @@ skip_inval:
* The lockspace has been released and the lock has
* been unlocked implicitly.
*/
- } else if (ret) {
+ } else {
fs_err(sdp, "lm_lock ret %d\n", ret);
target = gl->gl_state | LM_OUT_ERROR;
- } else {
- /* The operation will be completed asynchronously. */
- return;
}
- clear_bit(GLF_PENDING_REPLY, &gl->gl_flags);
}
/* Complete the operation now. */