writeback: use RCU to protect bdi_list
Now that bdi_writeback_all() no longer handles integrity writeback,
it doesn't have to block anymore. This means that we can switch
bdi_list reader side protection to RCU.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 14f06b45..f8cd7a9 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -868,16 +868,16 @@
WARN_ON(wbc->sync_mode == WB_SYNC_ALL);
- spin_lock(&bdi_lock);
+ rcu_read_lock();
- list_for_each_entry(bdi, &bdi_list, bdi_list) {
+ list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) {
if (!bdi_has_dirty_io(bdi))
continue;
bdi_alloc_queue_work(bdi, wbc);
}
- spin_unlock(&bdi_lock);
+ rcu_read_unlock();
}
/*