• J
    ext3: Speedup WB_SYNC_ALL pass · 2299432e
    Jan Kara 提交于
    When doing filesystem wide sync, there's no need to force transaction
    commit separately for each inode because ext3_sync_fs() takes care of
    forcing commit at the end. Most of the time this slowness doesn't
    manifest because previous WB_SYNC_NONE writeback doesn't leave much to
    write but when there are processes aggressively creating new files and
    several filesystems to sync, the sync slowness can be noticeable. In the
    following test script sync(1) takes around 6 minutes when there are two
    ext3 filesystems mounted on a standard SATA drive. After this patch sync
    is about twice as fast in the default data=ordered mode. For
    data=writeback mode we have even bigger speedup.
    
    function run_writers
    {
      for (( i = 0; i < 10; i++ )); do
        mkdir $1/dir$i
        for (( j = 0; j < 40000; j++ )); do
          dd if=/dev/zero of=$1/dir$i/$j bs=4k count=4 &>/dev/null
        done &
      done
    }
    
    for dir in "$@"; do
      run_writers $dir
    done
    
    sleep 40
    time sync
    Signed-off-by: NJan Kara <jack@suse.cz>
    2299432e
inode.c 104.4 KB