summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorNaohiro Aota <naota@elisp.net>2023-06-06 14:36:36 +0900
committerDavid Sterba <dsterba@suse.com>2023-06-19 13:59:38 +0200
commit7e27180994383b7c741ad87749db01e4989a02ba (patch)
tree5d443f3448ba37637d8f91e3c4191d3ad35a2245 /fs
parent93463ff7b54626f8276c0bd3d3f968fbf8d5d380 (diff)
downloadlinux-7e27180994383b7c741ad87749db01e4989a02ba.tar.gz
linux-7e27180994383b7c741ad87749db01e4989a02ba.tar.bz2
linux-7e27180994383b7c741ad87749db01e4989a02ba.zip
btrfs: reinsert BGs failed to reclaim
The reclaim process can temporarily fail. For example, if the space is getting tight, it fails to make the block group read-only. If there are no further writes on that block group, the block group will never get back to the reclaim list, and the BG never gets reclaimed. In a certain workload, we can leave many such block groups never reclaimed. So, let's get it back to the list and give it a chance to be reclaimed. Fixes: 18bb8bbf13c1 ("btrfs: zoned: automatically reclaim zones") CC: stable@vger.kernel.org # 5.15+ Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/block-group.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 9d9f09f25f8f..49e92226f766 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1833,6 +1833,8 @@ void btrfs_reclaim_bgs_work(struct work_struct *work)
}
next:
+ if (ret)
+ btrfs_mark_bg_to_reclaim(bg);
btrfs_put_block_group(bg);
mutex_unlock(&fs_info->reclaim_bgs_lock);