diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-09-14 07:12:40 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-09-16 09:18:51 -0400 |
commit | cfc4ba5365449cb6b5c9f68d755a142f17da1e47 (patch) | |
tree | 08770de9bb0e658f2e65abd4d10187b3e9f6bb1b /fs | |
parent | f11fcae8401a3175f528e2f7917362645d570111 (diff) |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/fs-writeback.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 14f06b459197..f8cd7a97f5b7 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -868,16 +868,16 @@ static void bdi_writeback_all(struct writeback_control *wbc) | |||
868 | 868 | ||
869 | WARN_ON(wbc->sync_mode == WB_SYNC_ALL); | 869 | WARN_ON(wbc->sync_mode == WB_SYNC_ALL); |
870 | 870 | ||
871 | spin_lock(&bdi_lock); | 871 | rcu_read_lock(); |
872 | 872 | ||
873 | list_for_each_entry(bdi, &bdi_list, bdi_list) { | 873 | list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) { |
874 | if (!bdi_has_dirty_io(bdi)) | 874 | if (!bdi_has_dirty_io(bdi)) |
875 | continue; | 875 | continue; |
876 | 876 | ||
877 | bdi_alloc_queue_work(bdi, wbc); | 877 | bdi_alloc_queue_work(bdi, wbc); |
878 | } | 878 | } |
879 | 879 | ||
880 | spin_unlock(&bdi_lock); | 880 | rcu_read_unlock(); |
881 | } | 881 | } |
882 | 882 | ||
883 | /* | 883 | /* |