[PATCH 0/2] btrfs: zoned: kick reclaim earlier on fast zoned devices

From: Johannes Thumshirn
Date: Mon Jan 22 2024 - 05:51:33 EST


We had a report from the field where filling a zoned drive with one file
60% of the drive's capacity and then overwriting this file results in
ENOSPC.

If said drive is fast and small enough, the problem can be easily
triggered, as both reclaim of dirty block-groups and deletion of unused
block-groups only happen at transaction commit time. But if the whole test
is faster than we're doing transaction commits we're unnecessarily running
out of usable space on a zoned drive.

This can easily be reproduced by the following fio snippet:
fio --name=foo --filename=$TEST/foo --size=$60_PERCENT_OF_DRIVE --rw=write\
--loops=2

A fstests testcase for this issue will be sent as well.

---
Johannes Thumshirn (2):
btrfs: zoned: use rcu list for iterating devices to collect stats
btrfs: zoned: wake up cleaner sooner if needed

fs/btrfs/free-space-cache.c | 6 ++++++
fs/btrfs/zoned.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
---
base-commit: d9796b728dcbf25e0190e542be33902222098fac
change-id: 20240122-reclaim-fix-1fcae9c27fc8

Best regards,
--
Johannes Thumshirn <johannes.thumshirn@xxxxxxx>