[patch 2/5] fs: improve scalability of bdi writeback work queues

npiggin
2009-09-15T19:26:08Z

[-- Attachment #1: fs-bdiwb-scale.patch --]
[-- Type: text/plain, Size: 823 bytes --]

If you're going to do an atomic RMW on each list entry, there's not much
point in all the RCU complexities of the list walking. This is only going
to help the multi-thread case I guess, but it doesn't hurt to do now.

Signed-off-by: Nick Piggin <npiggin@suse.de>
---
fs/fs-writeback.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Index: linux-2.6/fs/fs-writeback.c
===================================================================
--- linux-2.6.orig/fs/fs-writeback.c
+++ linux-2.6/fs/fs-writeback.c
@@ -736,8 +736,9 @@ static struct bdi_work *get_next_work_it
rcu_read_lock();

list_for_each_entry_rcu(work, &bdi->work_list, list) {
- if (!test_and_clear_bit(wb->nr, &work->seen))
+ if (!test_bit(wb->nr, &work->seen))
continue;
+ clear_bit(wb->nr, &work->seen);

ret = work;
break;