1. 26 11月, 2016 4 次提交
    • C
      f2fs: fix fdatasync · 281518c6
      Chao Yu 提交于
      For below two cases, we can't guarantee data consistence:
      
      a)
      1. xfs_io "pwrite 0 4195328" "fsync"
      2. xfs_io "pwrite 4195328 1024" "fdatasync"
      3. godown
      4. umount & mount
      --> isize we updated before fdatasync won't be recovered
      
      b)
      1. xfs_io "pwrite -S 0xcc 0 4202496" "fsync"
      2. xfs_io "fpunch 4194304 4096" "fdatasync"
      3. godown
      4. umount & mount
      --> dnode we punched before fdatasync won't be recovered
      
      The reason is that normally fdatasync won't be aware of modification
      of metadata in file, e.g. isize changing, dnode updating, so in ->fsync
      we will skip flushing node pages for above cases, result in making
      fdatasynced file being lost during recovery.
      
      Currently we have introduced DIRTY_META global list in sbi for tracking
      dirty inode selectively, so in fdatasync we can choose to flush nodes
      depend on dirty state of current inode in the list.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      281518c6
    • C
      f2fs: don't wait writeback for datas during checkpoint · 36951b38
      Chao Yu 提交于
      Normally, while committing checkpoint, we will wait on all pages to be
      writebacked no matter the page is data or metadata, so in scenario where
      there are lots of data IO being submitted with metadata, we may suffer
      long latency for waiting writeback during checkpoint.
      
      Indeed, we only care about persistence for pages with metadata, but not
      pages with data, as file system consistent are only related to metadate,
      so in order to avoid encountering long latency in above scenario, let's
      recognize and reference metadata in submitted IOs, wait writeback only
      for metadatas.
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      36951b38
    • J
      f2fs: avoid BG_GC in f2fs_balance_fs · 7702bdbe
      Jaegeuk Kim 提交于
      If many threads hit has_not_enough_free_secs() in f2fs_balance_fs() at the same
      time, all the threads would do FG_GC or BG_GC.
      In this critical path, we totally don't need to do BG_GC at all.
      Let's avoid that.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      7702bdbe
    • J
      f2fs: use err for f2fs_preallocate_blocks · a7de6086
      Jaegeuk Kim 提交于
      This patch has no functional change.
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      a7de6086
  2. 24 11月, 2016 4 次提交
  3. 08 10月, 2016 1 次提交
  4. 28 9月, 2016 1 次提交
  5. 22 9月, 2016 1 次提交
  6. 15 9月, 2016 1 次提交
  7. 14 9月, 2016 1 次提交
  8. 13 9月, 2016 2 次提交
  9. 10 9月, 2016 1 次提交
  10. 08 9月, 2016 2 次提交
  11. 30 8月, 2016 1 次提交
  12. 19 8月, 2016 2 次提交
  13. 21 7月, 2016 1 次提交
  14. 19 7月, 2016 1 次提交
  15. 16 7月, 2016 3 次提交
  16. 09 7月, 2016 2 次提交
  17. 07 7月, 2016 1 次提交
  18. 14 6月, 2016 1 次提交
  19. 08 6月, 2016 1 次提交
  20. 03 6月, 2016 5 次提交
  21. 21 5月, 2016 2 次提交
  22. 19 5月, 2016 1 次提交
  23. 12 5月, 2016 1 次提交
    • C
      f2fs: support in batch fzero in dnode page · 6e961949
      Chao Yu 提交于
      This patch tries to speedup fzero_range by making space preallocation and
      address removal of blocks in one dnode page as in batch operation.
      
      In virtual machine, with zram driver:
      
      dd if=/dev/zero of=/mnt/f2fs/file bs=1M count=4096
      time xfs_io -f /mnt/f2fs/file -c "fzero 0 4096M"
      
      Before:
      real	0m3.276s
      user	0m0.008s
      sys	0m3.260s
      
      After:
      real	0m1.568s
      user	0m0.000s
      sys	0m1.564s
      Signed-off-by: NChao Yu <yuchao0@huawei.com>
      [Jaegeuk Kim: consider ENOSPC case]
      Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
      6e961949