• M
    vfs: re-implement writeback_inodes_sb(_nr)_if_idle() and rename them · 10ee27a0
    Miao Xie 提交于
    writeback_inodes_sb(_nr)_if_idle() is re-implemented by replacing down_read()
    with down_read_trylock() because
    
    - If ->s_umount is write locked, then the sb is not idle. That is
      writeback_inodes_sb(_nr)_if_idle() needn't wait for the lock.
    
    - writeback_inodes_sb(_nr)_if_idle() grabs s_umount lock when it want to start
      writeback, it may bring us deadlock problem when doing umount. In order to
      fix the problem, ext4 and btrfs implemented their own writeback functions
      instead of writeback_inodes_sb(_nr)_if_idle(), but it introduced the redundant
      code, it is better to implement a new writeback_inodes_sb(_nr)_if_idle().
    
    The name of these two functions is cumbersome, so rename them to
    try_to_writeback_inodes_sb(_nr).
    
    This idea came from Christoph Hellwig.
    Some code is from the patch of Kamal Mostafa.
    Reviewed-by: NJan Kara <jack@suse.cz>
    Signed-off-by: NMiao Xie <miaox@cn.fujitsu.com>
    Signed-off-by: NFengguang Wu <fengguang.wu@intel.com>
    10ee27a0
fs-writeback.c 39.3 KB