[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240122-reclaim-fix-v1-1-761234a6d005@wdc.com>
Date: Mon, 22 Jan 2024 02:51:03 -0800
From: Johannes Thumshirn <johannes.thumshirn@....com>
To: Josef Bacik <josef@...icpanda.com>, David Sterba <dsterba@...e.com>
Cc: Naohiro Aota <naohiro.aota@....com>, linux-btrfs@...r.kernel.org,
linux-kernel@...r.kernel.org,
Johannes Thumshirn <johannes.thumshirn@....com>,
Damien Le Moal <dlemoal@...nel.org>
Subject: [PATCH 1/2] btrfs: zoned: use rcu list for iterating devices to
collect stats
As btrfs_zoned_should_reclaim only has to iterate the device list in order
to collect stats on the device's total and used bytes, we don't need to
take the full blown mutex, but can iterate the device list in a rcu_read
context.
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@....com>
---
fs/btrfs/zoned.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
index 168af9d000d1..b7e7b5a5a6fa 100644
--- a/fs/btrfs/zoned.c
+++ b/fs/btrfs/zoned.c
@@ -2423,15 +2423,15 @@ bool btrfs_zoned_should_reclaim(struct btrfs_fs_info *fs_info)
if (fs_info->bg_reclaim_threshold == 0)
return false;
- mutex_lock(&fs_devices->device_list_mutex);
- list_for_each_entry(device, &fs_devices->devices, dev_list) {
+ rcu_read_lock();
+ list_for_each_entry_rcu(device, &fs_devices->devices, dev_list) {
if (!device->bdev)
continue;
total += device->disk_total_bytes;
used += device->bytes_used;
}
- mutex_unlock(&fs_devices->device_list_mutex);
+ rcu_read_unlock();
factor = div64_u64(used * 100, total);
return factor >= fs_info->bg_reclaim_threshold;
--
2.43.0
Powered by blists - more mailing lists