• Hisashi Hifumi's avatar
    Btrfs: fdatasync should skip metadata writeout · 524724ed
    Hisashi Hifumi authored
    
    
    In btrfs, fdatasync and fsync are identical, but
    fdatasync should skip committing transaction when
    inode->i_state is set just I_DIRTY_SYNC and this indicates
    only atime or/and mtime updates.
    Following patch improves fdatasync throughput.
    
    --file-block-size=4K --file-total-size=16G --file-test-mode=rndwr
    --file-fsync-mode=fdatasync run
    
    Results:
    -2.6.30-rc8
    Test execution summary:
        total time:                          1980.6540s
        total number of events:              10001
        total time taken by event execution: 1192.9804
        per-request statistics:
             min:                            0.0000s
             avg:                            0.1193s
             max:                            15.3720s
             approx.  95 percentile:         0.7257s
    
    Threads fairness:
        events (avg/stddev):           625.0625/151.32
        execution time (avg/stddev):   74.5613/9.46
    
    -2.6.30-rc8-patched
    Test execution summary:
        total time:                          1695.9118s
        total number of events:              10000
        total time taken by event execution: 871.3214
        per-request statistics:
             min:                            0.0000s
             avg:                            0.0871s
             max:                            10.4644s
             approx.  95 percentile:         0.4787s
    
    Threads fairness:
        events (avg/stddev):           625.0000/131.86
        execution time (avg/stddev):   54.4576/8.98
    Signed-off-by: default avatarHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    524724ed