1. 16 8月, 2017 1 次提交
  2. 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
  3. 09 5月, 2017 1 次提交
  4. 03 5月, 2017 1 次提交
  5. 25 4月, 2017 2 次提交
  6. 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
  7. 11 4月, 2017 4 次提交
  8. 06 4月, 2017 1 次提交
  9. 30 3月, 2017 1 次提交
  10. 28 2月, 2017 1 次提交
  11. 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
  12. 23 2月, 2017 2 次提交
  13. 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
  14. 08 12月, 2016 1 次提交
  15. 24 11月, 2016 2 次提交
  16. 13 9月, 2016 1 次提交
  17. 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
  18. 16 7月, 2016 1 次提交
  19. 07 7月, 2016 1 次提交
  20. 14 6月, 2016 1 次提交
  21. 03 6月, 2016 3 次提交
  22. 08 5月, 2016 1 次提交
  23. 23 2月, 2016 3 次提交
    • C
      f2fs: split journal cache from curseg cache · b7ad7512
      Chao Yu 提交于
      In curseg cache, f2fs caches two different parts:
       - datas of current summay block, i.e. summary entries, footer info.
       - journal info, i.e. sparse nat/sit entries or io stat info.
      
      With this approach, 1) it may cause higher lock contention when we access
      or update both of the parts of cache since we use the same mutex lock
      curseg_mutex to protect the cache. 2) current summary block with last
      journal info will be writebacked into device as a normal summary block
      when flushing, however, we treat journal info as valid one only in current
      summary, so most normal summary blocks contain junk journal data, it wastes
      remaining space of summary block.
      
      So, in order to fix above issues, we split curseg cache into two parts:
      a) current summary block, protected by original mutex lock curseg_mutex
      b) journal cache, protected by newly introduced r/w semaphore journal_rwsem
      
      When loading curseg cache during ->mount, we store summary info and
      journal info into different caches; When doing checkpoint, we combine
      datas of two cache into current summary block for persisting.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      b7ad7512
    • C
      f2fs: support revoking atomic written pages · 28bc106b
      Chao Yu 提交于
      f2fs support atomic write with following semantics:
      1. open db file
      2. ioctl start atomic write
      3. (write db file) * n
      4. ioctl commit atomic write
      5. close db file
      
      With this flow we can avoid file becoming corrupted when abnormal power
      cut, because we hold data of transaction in referenced pages linked in
      inmem_pages list of inode, but without setting them dirty, so these data
      won't be persisted unless we commit them in step 4.
      
      But we should still hold journal db file in memory by using volatile
      write, because our semantics of 'atomic write support' is incomplete, in
      step 4, we could fail to submit all dirty data of transaction, once
      partial dirty data was committed in storage, then after a checkpoint &
      abnormal power-cut, db file will be corrupted forever.
      
      So this patch tries to improve atomic write flow by adding a revoking flow,
      once inner error occurs in committing, this gives another chance to try to
      revoke these partial submitted data of current transaction, it makes
      committing operation more like aotmical one.
      
      If we're not lucky, once revoking operation was failed, EAGAIN will be
      reported to user for suggesting doing the recovery with held journal file,
      or retrying current transaction again.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      28bc106b
    • J
      f2fs: fix conflict on page->private usage · d48dfc20
      Jaegeuk Kim 提交于
      This patch fixes confilct on page->private value between f2fs_trace_pid and
      atomic page.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      d48dfc20
  24. 13 10月, 2015 1 次提交
  25. 10 10月, 2015 2 次提交
  26. 15 8月, 2015 1 次提交
  27. 12 8月, 2015 1 次提交
    • C
      f2fs: remove inmem radix tree · decd36b6
      Chao Yu 提交于
      Previously, we use radix tree to index all registered page entries for
      atomic file, but now we only use radix tree to see whether current page
      is indexed or not, since the other user of radix tree is gone in commit
      042b7816 ("f2fs: remove unnecessary call to invalidate inmemory pages").
      
      So in this patch, we try to use one more efficient way:
      Introducing a macro ATOMIC_WRITTEN_PAGE, and setting it as page private
      value to indicate page indexing status. By using this way, we can save
      memory and lookup time.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      decd36b6
  28. 05 8月, 2015 1 次提交
  29. 02 6月, 2015 1 次提交
    • T
      writeback: separate out include/linux/backing-dev-defs.h · 66114cad
      Tejun Heo 提交于
      With the planned cgroup writeback support, backing-dev related
      declarations will be more widely used across block and cgroup;
      unfortunately, including backing-dev.h from include/linux/blkdev.h
      makes cyclic include dependency quite likely.
      
      This patch separates out backing-dev-defs.h which only has the
      essential definitions and updates blkdev.h to include it.  c files
      which need access to more backing-dev details now include
      backing-dev.h directly.  This takes backing-dev.h off the common
      include dependency chain making it a lot easier to use it across block
      and cgroup.
      
      v2: fs/fat build failure fixed.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Reviewed-by: NJan Kara <jack@suse.cz>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: NJens Axboe <axboe@fb.com>
      66114cad