summaryrefslogtreecommitdiff
path: root/fs/gfs2/super.c
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruenba@redhat.com>2025-08-05 23:12:06 +0200
committerAndreas Gruenbacher <agruenba@redhat.com>2025-11-26 23:51:47 +0000
commit9c4a3de6cd5b46aa743c460b86eb58fe5f93daec (patch)
tree1e29b74efcac9b34d986fa86ec814e916ae5a755 /fs/gfs2/super.c
parent9334c73fb16b183a6d4af09ce1d445f7f89b8d49 (diff)
downloadlinux-next-9c4a3de6cd5b46aa743c460b86eb58fe5f93daec.tar.gz
linux-next-9c4a3de6cd5b46aa743c460b86eb58fe5f93daec.zip
gfs2: Asynchronous withdraw
So far, withdraws are carried out in the context of the calling task. When another task tries to withdraw while a withdraw is already underway, that task blocks as well. Change that to carry out withdraws asynchronously in workqueue context and don't block the task triggering the withdraw anymore. Fixes: syzbot+6b156e132970e550194c@syzkaller.appspotmail.com Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'fs/gfs2/super.c')
-rw-r--r--fs/gfs2/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 54c6f2098f01..ea9084e871a8 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -603,7 +603,7 @@ restart:
gfs2_quota_cleanup(sdp);
}
- WARN_ON(gfs2_withdrawing(sdp));
+ flush_work(&sdp->sd_withdraw_work);
/* At this point, we're through modifying the disk */