summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/glops.c
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruenba@redhat.com>2024-01-26 11:49:44 +0100
committerAndreas Gruenbacher <agruenba@redhat.com>2024-04-09 18:35:57 +0200
commitb01189333ee91c1ae6cd96dfd1e3a3c2e69202f0 (patch)
tree01a97b17765fbd8ce663172b6113a56336c2dade /fs/gfs2/glops.c
parent3592bfaf746a4d0fefe6fe11527aa335073674c1 (diff)
downloadlinux-b01189333ee91c1ae6cd96dfd1e3a3c2e69202f0.tar.gz
linux-b01189333ee91c1ae6cd96dfd1e3a3c2e69202f0.tar.bz2
linux-b01189333ee91c1ae6cd96dfd1e3a3c2e69202f0.zip
gfs2: Don't forget to complete delayed withdraw
Commit fffe9bee14b0 ("gfs2: Delay withdraw from atomic context") switched from gfs2_withdraw() to gfs2_withdraw_delayed() in gfs2_ail_error(), but failed to then check if a delayed withdraw had occurred. Fix that by adding the missing check in __gfs2_ail_flush(), where the spin locks are already dropped and a withdraw is possible. Fixes: fffe9bee14b0 ("gfs2: Delay withdraw from atomic context") Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'fs/gfs2/glops.c')
-rw-r--r--fs/gfs2/glops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index ae8d4731907d..68677fb69a73 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -82,6 +82,9 @@ static void __gfs2_ail_flush(struct gfs2_glock *gl, bool fsync,
GLOCK_BUG_ON(gl, !fsync && atomic_read(&gl->gl_ail_count));
spin_unlock(&sdp->sd_ail_lock);
gfs2_log_unlock(sdp);
+
+ if (gfs2_withdrawing(sdp))
+ gfs2_withdraw(sdp);
}