diff options
| author | Andreas Gruenbacher <agruenba@redhat.com> | 2025-08-05 23:12:06 +0200 |
|---|---|---|
| committer | Andreas Gruenbacher <agruenba@redhat.com> | 2025-11-26 23:51:47 +0000 |
| commit | 9c4a3de6cd5b46aa743c460b86eb58fe5f93daec (patch) | |
| tree | 1e29b74efcac9b34d986fa86ec814e916ae5a755 /fs/gfs2/super.c | |
| parent | 9334c73fb16b183a6d4af09ce1d445f7f89b8d49 (diff) | |
| download | linux-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.c | 2 |
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 */ |
