Skip to content
  • Chao Yu's avatar
    f2fs: expose f2fs_write_cache_pages · 8f46dcae
    Chao Yu authored
    
    
    If there are gced dirty pages and normal dirty pages in the mapping
    of one inode, we might writeback them alternately with discontinuous
    block address, resulting in low performance.
    
    This patch introduces f2fs_write_cache_pages with codes copied from
    write_cache_pages in mm/page-writeback.c.
    
    In this function, we refactor flow with two steps:
    1) writeback all cold type pages.
    2) writeback all non-cold type pages.
    
    By using this method, f2fs will writeback dirty pages with the same
    temperature in bunch mode, it makes writeouted block being with
    more continuous address, so they can be merged as much as possible
    in f2fs bio cache, and also it will reduce the chance of submiting
    small IO from block layer.
    
    Test environment: 8g nokia sd card (very old sd card, but it shows
    better effect when testing with this patch, and with a 32g kingston
    sd card, I didn't see much more improvement).
    
    Test step:
    1. touch testfile;
    2. truncate -s 512K testfile;
    3. write all pages with odd index;
    4. trigger gc by ioctl;
    5. write all pages with even index;
    6. time fsync testfile.
    
    before:
    real	0m0.402s
    user	0m0.000s
    sys	0m0.000s
    
    after:
    real	0m0.143s
    user	0m0.004s
    sys	0m0.004s
    
    Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    8f46dcae