lkml.org 
[lkml]   [2009]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/13] Per-bdi writeback flusher threads #3
    Date
    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




    \
     
     \ /
      Last update: 2009-04-08 14:09    [W:3.070 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site