• Zhiguo Niu's avatar
    f2fs: fix to avoid use SSR allocate when do defragment · 21327a04
    Zhiguo Niu authored
    SSR allocate mode will be used when doing file defragment
    if ATGC is working at the same time, that is because
    set_page_private_gcing may make CURSEG_ALL_DATA_ATGC segment
    type got in f2fs_allocate_data_block when defragment page
    is writeback, which may cause file fragmentation is worse.
    
    A file with 2 fragmentations is changed as following after defragment:
    
    ----------------file info-------------------
    sensorsdata :
    --------------------------------------------
    dev       [254:48]
    ino       [0x    3029 : 12329]
    mode      [0x    81b0 : 33200]
    nlink     [0x       1 : 1]
    uid       [0x    27e6 : 10214]
    gid       [0x    27e6 : 10214]
    size      [0x  242000 : 2367488]
    blksize   [0x    1000 : 4096]
    blocks    [0x    1210 : 4624]
    --------------------------------------------
    
    file_pos   start_blk     end_blk        blks
           0    11361121    11361207          87
      356352    11361215    11361216           2
      364544    11361218    11361218           1
      368640    11361220    11361221           2
      376832    11361224    11361225           2
      385024    11361227    11361238          12
      434176    11361240    11361252          13
      487424    11361254    11361254           1
      491520    11361271    11361279           9
      528384     3681794     3681795           2
      536576     3681797     3681797           1
      540672     3681799     3681799           1
      544768     3681803     3681803           1
      548864     3681805     3681805           1
      552960     3681807     3681807           1
      557056     3681809     3681809           1
    Signed-off-by: default avatarZhiguo Niu <zhiguo.niu@unisoc.com>
    Reviewed-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    21327a04
segment.c 143 KB