• Wu Fengguang's avatar
    writeback: balance_dirty_pages() shall write more than dirtied pages · 3a2e9a5a
    Wu Fengguang authored
    Some filesystem may choose to write much more than ratelimit_pages
    before calling balance_dirty_pages_ratelimited_nr(). So it is safer to
    determine number to write based on real number of dirtied pages.
    
    Otherwise it is possible that
      loop {
        btrfs_file_write():     dirty 1024 pages
        balance_dirty_pages():  write up to 48 pages (= ratelimit_pages * 1.5)
      }
    in which the writeback rate cannot keep up with dirty rate, and the
    dirty pages go all the way beyond dirty_thresh.
    
    The increased write_chunk may make the dirtier more bumpy.
    So filesystems shall be take care not to dirty too much at
    a time (eg. > 4MB) without checking the ratelimit.
    Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    3a2e9a5a
page-writeback.c 36.2 KB