[PATCH 0/13] Per-bdi writeback flusher threads #3

From: Jens Axboe
Date: Wed Apr 08 2009 - 08:06:18 EST


Hi,

This is the third version of the patchset. Changes since v2:

- Dropped some of the prep patches, since they are now in mainline.
Unfortunately we grew another pdflush_operation() user (emergency thaw),
so I had to introduce a new prep patch for that.

- Fix the data consistency issue in generic_sync_sb_inodes() with
WB_SYNC_ALL that Jan Kara pointed out. I had to switch bdi_list
to SRCU protection for this. I pondered using a mutex for bdi_lock,
but that does not work with the pending list <-> active list
RCU callback scheme.

- Fix race in bdi task removal, we need to synchronize_rcu() before
doing the wb task kill, not after. This ensures that once we do the
task kill, nobody is accessing our bdi anymore.

- Separate default wb task creation from filesystem initiated task
additions. The former can be racy and should check the pending bit
only to see whether it should proceed, the latter should block waiting
for previous task additions to finish.

- Move the bdi_cap_flusher_forker() back in the series to where the
BDI_CAP_FLUSH_FORKER flag was introduced.

- Fix a problem where the first incremental step ended up writing back
all the dirty inodes on a bdi, not just the ones belonging to a
specific super_block. Only a problem after the first patch, the 2nd
patch in the series got it right again. (Thanks Jan Kara).

- Allow writeback tasks to exit, if the bdi has been idle for a certain
period of time. The lazy create will recreate them if we see dirty
inodes on the bdi later on.

- btrfs must register its fs_info bdi, or direct writeback will not work
as intended. Also kill capabilities inherit from
default_backing_dev_info and fix failure to check bdi_init() return
value.

The branch can be pulled from:

git://git.kernel.dk/linux-2.6-block.git writeback

Or these patches can be applied directly to 2.6.30-rc1.

--
Jens Axboe


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/