1. 04 Nov, 2014 3 commits
  2. 07 Oct, 2014 1 commit
    • Jaegeuk Kim's avatar
      f2fs: support atomic writes · 88b88a66
      Jaegeuk Kim authored
      This patch introduces a very limited functionality for atomic write support.
      In order to support atomic write, this patch adds two ioctls:
       o F2FS_IOC_START_ATOMIC_WRITE
       o F2FS_IOC_COMMIT_ATOMIC_WRITE
      
      The database engine should be aware of the following sequence.
      1. open
       -> ioctl(F2FS_IOC_START_ATOMIC_WRITE);
      2. writes
        : all the written data will be treated as atomic pages.
      3. commit
       -> ioctl(F2FS_IOC_COMMIT_ATOMIC_WRITE);
        : this flushes all the data blocks to the disk, which will be shown all or
        nothing by f2fs recovery procedure.
      4. repeat to #2
      
      .
      
      The IO pattens should be:
      
        ,- START_ATOMIC_WRITE                  ,- COMMIT_ATOMIC_WRITE
       CP | D D D D D D | FSYNC | D D D D | FSYNC ...
                            `- COMMIT_ATOMIC_WRITE
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      88b88a66
  3. 30 Sep, 2014 2 commits
  4. 23 Sep, 2014 2 commits
    • Chao Yu's avatar
      f2fs: fix to clean previous mount option when remount_fs · 26666c8a
      Chao Yu authored
      
      
      In manual of mount, we descript remount as below:
      
      "mount -o remount,rw /dev/foo /dir
      After  this call all old mount options are replaced and arbitrary stuff from
      fstab is ignored, except the loop= option which is internally generated and
      maintained by the mount command."
      
      Previously f2fs do not clear up old mount options when remount_fs, so we have no
      chance of disabling previous option (e.g. flush_merge). Fix it.
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      26666c8a
    • Chao Yu's avatar
      f2fs: support large sector size · 55cf9cb6
      Chao Yu authored
      
      
      Block size in f2fs is 4096 bytes, so theoretically, f2fs can support 4096 bytes
      sector device at maximum. But now f2fs only support 512 bytes size sector, so
      block device such as zRAM which uses page cache as its block storage space will
      not be mounted successfully as mismatch between sector size of zRAM and sector
      size of f2fs supported.
      
      In this patch we support large sector size in f2fs, so block device with sector
      size of 512/1024/2048/4096 bytes can be supported in f2fs.
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      55cf9cb6
  5. 16 Sep, 2014 2 commits
  6. 09 Sep, 2014 2 commits
  7. 28 Aug, 2014 1 commit
  8. 21 Aug, 2014 6 commits
  9. 19 Aug, 2014 2 commits
  10. 31 Jul, 2014 1 commit
  11. 29 Jul, 2014 2 commits
  12. 25 Jul, 2014 1 commit
  13. 09 Jul, 2014 2 commits
  14. 07 May, 2014 4 commits
  15. 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
  16. 01 Apr, 2014 1 commit
  17. 20 Mar, 2014 2 commits
    • Jaegeuk Kim's avatar
      f2fs: introduce fi->i_sem to protect fi's info · d928bfbf
      Jaegeuk Kim authored
      
      
      This patch introduces fi->i_sem to protect fi's info that includes xattr_ver,
      pino, i_nlink.
      This enables to remove i_mutex during f2fs_sync_file, resulting in performance
      improvement when a number of fsync calls are triggered from many concurrent
      threads.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      d928bfbf
    • 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
  18. 18 Mar, 2014 2 commits
    • Chao Yu's avatar
      f2fs: fix incorrect parsing with option string · 04c09388
      Chao Yu authored
      
      
      Previously 'background_gc={on***,off***}' is being parsed as correct option,
      with this patch we cloud fix the trivial bug in mount process.
      
      Change log from v1:
       o need to check length of parameter suggested by Jaegeuk Kim.
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      04c09388
    • Chao Yu's avatar
      f2fs: print type for each segment in segment_info's show · 90aa6dc9
      Chao Yu authored
      
      
      The original segment_info's show looks out-of-format:
      cat /proc/fs/f2fs/loop0/segment_info
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 512
      512 512 512 512 512 512 512 0 0 512
      348 0 263 0 0 512 0 0 512 512
      512 512 0 512 512 512 512 512 512 512
      512 512 511 328 512 512 512 512 512 512
      512 512 512 512 512 512 512 0 0 175
      
      Let's fix this and show type for each segment.
      cat /proc/fs/f2fs/loop0/segment_info
      format: segment_type|valid_blocks
      segment_type(0:HD, 1:WD, 2:CD, 3:HN, 4:WN, 5:CN)
      0    2|0   1|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0
      10   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0
      20   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0
      30   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0
      40   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0   0|0
      50   3|0   3|0   3|0   3|0   3|0   3|0   3|0   0|0   3|0   3|0
      60   3|0   3|0   3|0   3|0   3|0   3|0   3|0   3|0   3|0   3|512
      70   3|512 3|512 3|512 3|512 3|512 3|512 3|512 3|0   3|0   3|512
      80   3|0   3|0   3|0   3|0   3|0   3|512 3|0   3|0   3|512 3|512
      90   3|512 0|512 3|274 0|512 0|512 0|512 0|512 0|512 0|512 3|512
      100  3|512 0|512 3|511 0|328 3|512 0|512 0|512 3|512 0|512 0|512
      110  0|512 0|512 0|512 0|512 0|512 0|512 0|512 5|0   4|0   3|512
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      90aa6dc9
  19. 13 Mar, 2014 1 commit
    • Theodore Ts'o's avatar
      fs: push sync_filesystem() down to the file system's remount_fs() · 02b9984d
      Theodore Ts'o authored
      
      
      Previously, the no-op "mount -o mount /dev/xxx" operation when the
      file system is already mounted read-write causes an implied,
      unconditional syncfs().  This seems pretty stupid, and it's certainly
      documented or guaraunteed to do this, nor is it particularly useful,
      except in the case where the file system was mounted rw and is getting
      remounted read-only.
      
      However, it's possible that there might be some file systems that are
      actually depending on this behavior.  In most file systems, it's
      probably fine to only call sync_filesystem() when transitioning from
      read-write to read-only, and there are some file systems where this is
      not needed at all (for example, for a pseudo-filesystem or something
      like romfs).
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: linux-fsdevel@vger.kernel.org
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Artem Bityutskiy <dedekind1@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Evgeniy Dushistov <dushistov@mail.ru>
      Cc: Jan Kara <jack@suse.cz>
      Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Anders Larsen <al@alarsen.net>
      Cc: Phillip Lougher <phillip@squashfs.org.uk>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
      Cc: Petr Vandrovec <petr@vandrovec.name>
      Cc: xfs@oss.sgi.com
      Cc: linux-btrfs@vger.kernel.org
      Cc: linux-cifs@vger.kernel.org
      Cc: samba-technical@lists.samba.org
      Cc: codalist@coda.cs.cmu.edu
      Cc: linux-ext4@vger.kernel.org
      Cc: linux-f2fs-devel@lists.sourceforge.net
      Cc: fuse-devel@lists.sourceforge.net
      Cc: cluster-devel@redhat.com
      Cc: linux-mtd@lists.infradead.org
      Cc: jfs-discussion@lists.sourceforge.net
      Cc: linux-nfs@vger.kernel.org
      Cc: linux-nilfs@vger.kernel.org
      Cc: linux-ntfs-dev@lists.sourceforge.net
      Cc: ocfs2-devel@oss.oracle.com
      Cc: reiserfs-devel@vger.kernel.org
      02b9984d
  20. 12 Mar, 2014 1 commit
  21. 10 Mar, 2014 1 commit
    • Gu Zheng's avatar
      f2fs: format segment_info's show for better legibility · 46c04366
      Gu Zheng authored
      
      
      The original segment_info's show is a bit out-of-format:
      
      [root@guz Demoes]# cat /proc/fs/f2fs/loop0/segment_info
      0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      ......
      0 0 0 0 0 0 0 0 0 0
      0 0 1 0 0 1 [root@guz Demoes]#
      
      so we fix it here for better legibility.
      [root@guz Demoes]# cat /proc/fs/f2fs/loop0/segment_info
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0
      ......
      0 0 0 0 0 0 0 0 0 0
      0 0 1 0 0 1
      [root@guz Demoes]#
      Signed-off-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      46c04366