1. 26 1月, 2018 1 次提交
    • Y
      f2fs: rebuild sit page from sit info in mem · 068c3cd8
      Yunlei He 提交于
      This patch rebuild sit page from sit info in mem instead
      of issue a read io.
      
      I test this method and the result is as below:
      
      Pre:
       mmc_perf_test-12061 [001] ...1   976.819992: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [001] ...1   976.856446: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [003] ...1   998.976946: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [003] ...1   999.023269: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [003] ...1  1022.060772: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [003] ...1  1022.111034: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [002] ...1  1070.127643: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [003] ...1  1070.187352: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [003] ...1  1095.942124: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [003] ...1  1095.995975: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [003] ...1  1122.535091: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [003] ...1  1122.586521: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [001] ...1  1147.897487: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [001] ...1  1147.959438: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [003] ...1  1177.926951: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [002] ...1  1177.976823: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
       mmc_perf_test-12061 [002] ...1  1204.176087: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
       mmc_perf_test-12061 [002] ...1  1204.239046: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      
      Some sit flush consume more than 50ms.
      
      Now:
      mmc_perf_test-2187  [007] ...1   196.840684: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [007] ...1   196.841258: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [007] ...1   219.430582: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [007] ...1   219.431144: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [002] ...1   243.638678: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [000] ...1   243.638980: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [002] ...1   265.392180: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [002] ...1   265.392245: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [000] ...1   290.309051: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [000] ...1   290.309116: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [003] ...1   317.144209: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [003] ...1   317.145913: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [005] ...1   343.224954: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [005] ...1   343.225574: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [000] ...1   370.239846: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [000] ...1   370.241138: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [001] ...1   397.029043: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [001] ...1   397.030750: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      mmc_perf_test-2187  [003] ...1   425.386377: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = start flush sit
      mmc_perf_test-2187  [003] ...1   425.387735: f2fs_write_checkpoint: dev = (259,44), checkpoint for Sync, state = end flush sit
      
      Most sit flush consume no more than 1ms.
      Signed-off-by: NYunlei He <heyunlei@huawei.com>
      Reviewed-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      068c3cd8
  2. 23 1月, 2018 1 次提交
    • C
      f2fs: split need_inplace_update · bb9e3bb8
      Chao Yu 提交于
      This patch splits need_inplace_update to two functions:
      a. should_update_inplace() includes all conditions that we must use IPU.
      b. should_update_outplace() includes all conditions that we must use OPU.
      
      So that, in f2fs_ioc_set_pin_file() and f2fs_defragment_range(), we can
      use corresponding function to check whether we can trigger OPU/IPU or not.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      bb9e3bb8
  3. 03 1月, 2018 1 次提交
  4. 06 11月, 2017 2 次提交
  5. 26 10月, 2017 2 次提交
    • C
      f2fs: fix to correct no_fggc_candidate · 7e515b31
      Chao Yu 提交于
      There may be extreme case as below:
      
      For one section contains one segment, and there are total 100 segments
      with 10% over-privision ratio in f2fs partition, fggc_threshold will
      be rounded down to 460 instead of 460.8 as below caclulation:
      
      sbi->fggc_threshold = div_u64((u64)(main_count - ovp_count) *
      			BLKS_PER_SEC(sbi), (main_count - resv_count));
      
      If section usage is as:
      60 segments which contain 460 valid blocks
      40 segments which contain 462 valid blocks
      
      As valid block number in all sections is large than fggc_threshold, so
      none of them will be chosen as candidate due to incorrect fggc_threshold.
      
      Let's just soften the term of choosing foreground GC candidates.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      7e515b31
    • C
      f2fs: split discard policy · 78997b56
      Chao Yu 提交于
      There are many different scenarios such as fstrim, umount, urgent or
      background where we will issue discards, actually, they need use
      different policy in aspect of io aware, discard granularity, delay
      interval and so on. But now they just share one common discard policy,
      so there will be race when changing policy in between these scenarios,
      the interference of changing discard policy will be very serious.
      
      This patch changes to split discard policy for different scenarios.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      78997b56
  6. 12 9月, 2017 1 次提交
  7. 30 8月, 2017 1 次提交
  8. 22 8月, 2017 1 次提交
  9. 16 8月, 2017 1 次提交
  10. 24 5月, 2017 1 次提交
    • J
      f2fs: split bio cache · a912b54d
      Jaegeuk Kim 提交于
      Split DATA/NODE type bio cache according to different temperature,
      so write IOs with the same temperature can be merged in corresponding
      bio cache as much as possible, otherwise, different temperature write
      IOs submitting into one bio cache will always cause split of bio.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      a912b54d
  11. 09 5月, 2017 1 次提交
  12. 03 5月, 2017 1 次提交
  13. 25 4月, 2017 2 次提交
  14. 20 4月, 2017 1 次提交
    • H
      f2fs: introduce async IPU policy · 04485987
      Hou Pengyang 提交于
      This patch introduces an ASYNC IPU policy.
      
      Under senario of large # of async updating(e.g. log writing in Android),
      disk would be seriously fragmented, and higher frequent gc would be triggered.
      
      This patch uses IPU to rewrite the async update writting, since async is
      NOT sensitive to io latency.
      Signed-off-by: NHou Pengyang <houpengyang@huawei.com>
      04485987
  15. 11 4月, 2017 4 次提交
  16. 06 4月, 2017 1 次提交
  17. 30 3月, 2017 1 次提交
  18. 28 2月, 2017 1 次提交
  19. 24 2月, 2017 1 次提交
    • H
      f2fs: add ovp valid_blocks check for bg gc victim to fg_gc · e93b9865
      Hou Pengyang 提交于
      For foreground gc, greedy algorithm should be adapted, which makes
      this formula work well:
      
      	(2 * (100 / config.overprovision + 1) + 6)
      
      But currently, we fg_gc have a prior to select bg_gc victim segments to gc
      first, these victims are selected by cost-benefit algorithm, we can't guarantee
      such segments have the small valid blocks, which may destroy the f2fs rule, on
      the worstest case, would consume all the free segments.
      
      This patch fix this by add a filter in check_bg_victims, if segment's has # of
      valid blocks over overprovision ratio, skip such segments.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NHou Pengyang <houpengyang@huawei.com>
      Reviewed-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      e93b9865
  20. 23 2月, 2017 2 次提交
  21. 29 1月, 2017 1 次提交
    • J
      f2fs: support IO alignment for DATA and NODE writes · 0a595eba
      Jaegeuk Kim 提交于
      This patch implements IO alignment by filling dummy blocks in DATA and NODE
      write bios. If we can guarantee, for example, 32KB or 64KB for such the IOs,
      we can eliminate underlying dummy page problem which FTL conducts in order to
      close MLC or TLC partial written pages.
      
      Note that,
       - it requires "-o mode=lfs".
       - IO size should be power of 2, not exceed BIO_MAX_PAGES, 256.
       - read IO is still 4KB.
       - do checkpoint at fsync, if dummy NODE page was written.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      0a595eba
  22. 08 12月, 2016 1 次提交
  23. 24 11月, 2016 2 次提交
  24. 13 9月, 2016 1 次提交
  25. 25 8月, 2016 1 次提交
    • Y
      f2fs: not allow to write illegal blkaddr · bb413d6a
      Yunlei He 提交于
      we came across an error as below:
      
      [build_nat_area_bitmap:1710] nid[0x    1718] addr[0x         1c18ddc] ino[0x    1718]
      [build_nat_area_bitmap:1710] nid[0x    1719] addr[0x         1c193d5] ino[0x    1719]
      [build_nat_area_bitmap:1710] nid[0x    171a] addr[0x         1c1736e] ino[0x    171a]
      [build_nat_area_bitmap:1710] nid[0x    171b] addr[0x        58b3ee8f] ino[0x815f92ed]
      [build_nat_area_bitmap:1710] nid[0x    171c] addr[0x         fcdc94b] ino[0x49366377]
      [build_nat_area_bitmap:1710] nid[0x    171d] addr[0x        7cd2facf] ino[0xb3c55300]
      [build_nat_area_bitmap:1710] nid[0x    171e] addr[0x        bd4e25d0] ino[0x77c34c09]
      
      ... ...
      
      [build_nat_area_bitmap:1710] nid[0x    1718] addr[0x         1c18ddc] ino[0x    1718]
      [build_nat_area_bitmap:1710] nid[0x    1719] addr[0x         1c193d5] ino[0x    1719]
      [build_nat_area_bitmap:1710] nid[0x    171a] addr[0x         1c1736e] ino[0x    171a]
      [build_nat_area_bitmap:1710] nid[0x    171b] addr[0x        58b3ee8f] ino[0x815f92ed]
      [build_nat_area_bitmap:1710] nid[0x    171c] addr[0x         fcdc94b] ino[0x49366377]
      [build_nat_area_bitmap:1710] nid[0x    171d] addr[0x        7cd2facf] ino[0xb3c55300]
      [build_nat_area_bitmap:1710] nid[0x    171e] addr[0x        bd4e25d0] ino[0x77c34c09]
      
      One nat block may be stepped by a data block, so this patch forbid to
      write if the blkaddr is illegal
      Signed-off-by: NYunlei He <heyunlei@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      bb413d6a
  26. 16 7月, 2016 1 次提交
  27. 07 7月, 2016 1 次提交
  28. 14 6月, 2016 1 次提交
  29. 03 6月, 2016 3 次提交
  30. 08 5月, 2016 1 次提交