]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: check for shutdown before going to sleep in xfs_select_zone
authorChristoph Hellwig <hch@lst.de>
Thu, 5 Jun 2025 06:16:27 +0000 (08:16 +0200)
committerCarlos Maiolino <cem@kernel.org>
Mon, 16 Jun 2025 08:05:08 +0000 (10:05 +0200)
Ensure the file system hasn't been shut down before waiting for a free
zone to become available, because that won't happen on a shut down
file system.  Without this processes can occasionally get stuck in
the allocator wait loop when racing with a file system shutdown.
This sporadically happens when running generic/388 or generic/475.

Fixes: 4e4d52075577 ("xfs: add the zoned space allocator")
Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hans Holmberg <hans.holmberg@wdc.com>
Tested-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_zone_alloc.c

index 80add26c0111a8952b8e69bd46525568262386f9..0de6f64b3169ec4fc776e4fb61b5bce98d81cfbe 100644 (file)
@@ -727,7 +727,7 @@ xfs_select_zone(
        for (;;) {
                prepare_to_wait(&zi->zi_zone_wait, &wait, TASK_UNINTERRUPTIBLE);
                oz = xfs_select_zone_nowait(mp, write_hint, pack_tight);
-               if (oz)
+               if (oz || xfs_is_shutdown(mp))
                        break;
                schedule();
        }