1. 16 Dec, 2015 1 commit
  2. 04 Dec, 2015 1 commit
  3. 09 Oct, 2015 1 commit
  4. 04 Aug, 2015 1 commit
  5. 10 Apr, 2015 1 commit
  6. 03 Mar, 2015 1 commit
  7. 12 Feb, 2015 2 commits
  8. 05 Nov, 2014 1 commit
  9. 04 Nov, 2014 1 commit
  10. 23 Sep, 2014 1 commit
  11. 16 Sep, 2014 1 commit
    • Jaegeuk Kim's avatar
      f2fs: give an option to enable in-place-updates during fsync to users · c1ce1b02
      Jaegeuk Kim authored
      
      
      If user wrote F2FS_IPU_FSYNC:4 in /sys/fs/f2fs/ipu_policy, f2fs_sync_file
      only starts to try in-place-updates.
      And, if the number of dirty pages is over /sys/fs/f2fs/min_fsync_blocks, it
      keeps out-of-order manner. Otherwise, it triggers in-place-updates.
      
      This may be used by storage showing very high random write performance.
      
      For example, it can be used when,
      
      Seq. writes (Data) + wait + Seq. writes (Node)
      
      is pretty much slower than,
      
      Rand. writes (Data)
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      c1ce1b02
  12. 29 Jul, 2014 1 commit
  13. 04 Jun, 2014 1 commit
  14. 07 Apr, 2014 1 commit
    • Jaegeuk Kim's avatar
      f2fs: introduce f2fs_issue_flush to avoid redundant flush issue · 6b4afdd7
      Jaegeuk Kim authored
      
      
      Some storage devices show relatively high latencies to complete cache_flush
      commands, even though their normal IO speed is prettry much high. In such
      the case, it needs to merge cache_flush commands as much as possible to avoid
      issuing them redundantly.
      So, this patch introduces a mount option, "-o flush_merge", to mitigate such
      the overhead.
      
      If this option is enabled by user, F2FS merges the cache_flush commands and then
      issues just one cache_flush on behalf of them. Once the single command is
      finished, F2FS sends a completion signal to all the pending threads.
      
      Note that, this option can be used under a workload consisting of very intensive
      concurrent fsync calls, while the storage handles cache_flush commands slowly.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      6b4afdd7
  15. 20 Mar, 2014 2 commits
    • Jaegeuk Kim's avatar
      f2fs: change reclaim rate in percentage · 58c41035
      Jaegeuk Kim authored
      
      
      It is more reasonable to determine the reclaiming rate of prefree segments
      according to the volume size, which is set to 5% by default.
      For example, if the volume is 128GB, the prefree segments are reclaimed
      when the number reaches to 6.4GB.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      58c41035
    • Jaegeuk Kim's avatar
      f2fs: throttle the memory footprint with a sysfs entry · cdfc41c1
      Jaegeuk Kim authored
      
      
      This patch introduces ram_thresh, a sysfs entry, which controls the memory
      footprint used by the free nid list and the nat cache.
      
      Previously, the free nid list was controlled by MAX_FREE_NIDS, while the nat
      cache was managed by NM_WOUT_THRESHOLD.
      However, this approach cannot be applied dynamically according to the system.
      
      So, this patch adds ram_thresh that users can specify the threshold, which is
      in order of 1 / 1024.
      For example, if the total ram size is 4GB and the value is set to 10 by default,
      f2fs tries to control the number of free nids and nat caches not to consume over
      10 * (4GB / 1024) = 10MB.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      cdfc41c1
  16. 27 Feb, 2014 2 commits
    • Jaegeuk Kim's avatar
      f2fs: add an sysfs entry to control the directory level · ab9fa662
      Jaegeuk Kim authored
      
      
      This patch adds an sysfs entry to control dir_level used by the large directory.
      
      The description of this entry is:
      
       dir_level                    This parameter controls the directory level to
      			      support large directory. If a directory has a
      			      number of files, it can reduce the file lookup
      			      latency by increasing this dir_level value.
      			      Otherwise, it needs to decrease this value to
      			      reduce the space overhead. The default value is 0.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      ab9fa662
    • Jaegeuk Kim's avatar
      f2fs: introduce large directory support · 38431545
      Jaegeuk Kim authored
      This patch introduces an i_dir_level field to support large directory.
      
      Previously, f2fs maintains multi-level hash tables to find a dentry quickly
      from a bunch of chiild dentries in a directory, and the hash tables consist of
      the following tree structure as below.
      
      In Documentation/filesystems/f2fs.txt,
      
      ----------------------
      A : bucket
      B : block
      N : MAX_DIR_HASH_DEPTH
      ----------------------
      
      level #0   | A(2B)
                 |
      level #1   | A(2B) - A(2B)
                 |
      level #2   | A(2B) - A(2B) - A(2B) - A(2B)
           .     |   .       .       .       .
      level #N/2 | A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B)
           .     |   .       .       .       .
      level #N   | A(4B) - A(4B) - A(4B) - A(4B) - A(4B) - ... - A(4B)
      
      But, if we can guess that a directory will handle a number of child files,
      we don't need to traverse the tree from level #0 to #N all the time.
      Since the lower level tables contain relatively small number of dentries,
      the miss ratio of the target dentry is likely to be high.
      
      In order to avoid that, we can configure the hash tables sparsely from level #0
      like this.
      
      level #0   | A(2B) - A(2B) - A(2B) - A(2B)
      
      level #1
      
         | A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B)
           .     |   .       .       .       .
      level #N/2 | A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B)
           .     |   .       .       .       .
      level #N   | A(4B) - A(4B) - A(4B) - A(4B) - A(4B) - ... - A(4B)
      
      With this structure, we can skip the ineffective tree searches in lower level
      hash tables.
      
      This patch adds just a facility for this by introducing i_dir_level in
      f2fs_inode.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      38431545
  17. 09 Jan, 2014 1 commit
  18. 26 Dec, 2013 1 commit
  19. 23 Dec, 2013 2 commits
    • Jaegeuk Kim's avatar
      f2fs: add description about small_discards in document · ba0697ec
      Jaegeuk Kim authored
      
      
      This patch adds a description about small_disacrds in the f2fs document.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      ba0697ec
    • Jaegeuk Kim's avatar
      f2fs: introduce sysfs entry to control in-place-update policy · 216fbd64
      Jaegeuk Kim authored
      
      
      This patch introduces new sysfs entries for users to control the policy of
      in-place-updates, namely IPU, in f2fs.
      
      Sometimes f2fs suffers from performance degradation due to its out-of-place
      update policy that produces many additional node block writes.
      If the storage performance is very dependant on the amount of data writes
      instead of IO patterns, we'd better drop this out-of-place update policy.
      
      This patch suggests 5 polcies and their triggering conditions as follows.
      
      [sysfs entry name = ipu_policy]
      
      0: F2FS_IPU_FORCE       all the time,
      1: F2FS_IPU_SSR         if SSR mode is activated,
      2: F2FS_IPU_UTIL        if FS utilization is over threashold,
      3: F2FS_IPU_SSR_UTIL    if SSR mode is activated and FS utilization is over
                              threashold,
      4: F2FS_IPU_DISABLE    disable IPU. (=default option)
      
      [sysfs entry name = min_ipu_util]
      
      This parameter controls the threshold to trigger in-place-updates.
      The number indicates percentage of the filesystem utilization, and used by
      F2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies.
      
      For more details, see need_inplace_update() in segment.h.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      216fbd64
  20. 01 Nov, 2013 1 commit
  21. 25 Oct, 2013 1 commit
  22. 06 Aug, 2013 2 commits
  23. 30 Jul, 2013 1 commit
  24. 17 Jun, 2013 1 commit
    • Namjae Jeon's avatar
      f2fs: add remount_fs callback support · 696c018c
      Namjae Jeon authored
      
      
      Add the f2fs_remount function call which will be used
      during the filesystem remounting. This function
      will help us to change the mount options specific to
      f2fs.
      
      Also modify the f2fs background_gc mount option, which
      will allow the user to dynamically trun on/off the
      garbage collection in f2fs based on the background_gc
      value. If background_gc=on, Garbage collection will
      be turned off & if background_gc=off, Garbage collection
      will be truned on.
      
      By default the garbage collection is on in f2fs.
      
      Change Log:
      v2: Incorporated the review comments by Gu Zheng.
          Removing the restore part for VFS flags
          Updating comments with proper flag conditions
          Display GC background option as ON/OFF
          Revised conditions to stop GC in case of remount
      
      v1: Initial changes for adding remount_fs callback
      support.
      
      Cc: Gu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarNamjae Jeon <namjae.jeon@samsung.com>
      Signed-off-by: default avatarPankaj Kumar <pankaj.km@samsung.com>
      Reviewed-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      [Jaegeuk Kim: change /** with /* for the coding style]
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      696c018c
  25. 03 Apr, 2013 1 commit
  26. 04 Jan, 2013 1 commit
  27. 11 Dec, 2012 3 commits