1. 07 Jun, 2014 1 commit
  2. 06 Jun, 2014 2 commits
  3. 04 Jun, 2014 4 commits
    • Jaegeuk Kim's avatar
      f2fs: fix to recover data written by dio · b6fe5873
      Jaegeuk Kim authored
      If data are overwritten through dio, previous f2fs doesn't remain the fsync mark
      due to no additional node writes.
      
      Note that this patch should resolve the xfstests:311.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      b6fe5873
    • Changman Lee's avatar
      f2fs: large volume support · 1dbe4152
      Changman Lee authored
      f2fs's cp has one page which consists of struct f2fs_checkpoint and
      version bitmap of sit and nat. To support lots of segments, we need more
      blocks for sit bitmap. So let's arrange sit bitmap as following:
      +-----------------+------------+
      | f2fs_checkpoint | sit bitmap |
      | + nat bitmap    |            |
      +-----------------+------------+
      0                 4k        N blocks
      Signed-off-by: default avatarChangman Lee <cm224.lee@samsung.com>
      [Jaegeuk Kim: simple code change for readability]
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      1dbe4152
    • Chao Yu's avatar
      f2fs: avoid crash when trace f2fs_submit_page_mbio event in ra_sum_pages · bac4eef6
      Chao Yu authored
      Previously we allocate pages with no mapping in ra_sum_pages(), so we may
      encounter a crash in event trace of f2fs_submit_page_mbio where we access
      mapping data of the page.
      
      We'd better allocate pages in bd_inode mapping and invalidate these pages after
      we restore data from pages. It could avoid crash in above scenario.
      
      Changes from V1
       o remove redundant code in ra_sum_pages() suggested by Jaegeuk Kim.
      
      Call Trace:
       [<f1031630>] ? ftrace_raw_event_f2fs_write_checkpoint+0x80/0x80 [f2fs]
       [<f10377bb>] f2fs_submit_page_mbio+0x1cb/0x200 [f2fs]
       [<f103c5da>] restore_node_summary+0x13a/0x280 [f2fs]
       [<f103e22d>] build_curseg+0x2bd/0x620 [f2fs]
       [<f104043b>] build_segment_manager+0x1cb/0x920 [f2fs]
       [<f1032c85>] f2fs_fill_super+0x535/0x8e0 [f2fs]
       [<c115b66a>] mount_bdev+0x16a/0x1a0
       [<f102f63f>] f2fs_mount+0x1f/0x30 [f2fs]
       [<c115c096>] mount_fs+0x36/0x170
       [<c1173635>] vfs_kern_mount+0x55/0xe0
       [<c1175388>] do_mount+0x1e8/0x900
       [<c1175d72>] SyS_mount+0x82/0xc0
       [<c16059cc>] sysenter_do_call+0x12/0x22
      Suggested-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      bac4eef6
    • Chao Yu's avatar
      f2fs: avoid overflow when large directory feathure is enabled · bfec07d0
      Chao Yu authored
      When large directory feathure is enable, We have one case which could cause
      overflow in dir_buckets() as following:
      special case: level + dir_level >= 32 and level < MAX_DIR_HASH_DEPTH / 2.
      
      Here we define MAX_DIR_BUCKETS to limit the return value when the condition
      could trigger potential overflow.
      
      Changes from V1
       o modify description of calculation in f2fs.txt suggested by Changman Lee.
      Suggested-by: default avatarChangman Lee <cm224.lee@samsung.com>
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      bfec07d0
  4. 02 Jun, 2014 1 commit
    • Jaegeuk Kim's avatar
      f2fs: fix recursive lock by f2fs_setxattr · d631abda
      Jaegeuk Kim authored
      This patch should resolve the following recursive lock.
      
      [<ffffffff8135a9c3>] call_rwsem_down_write_failed+0x13/0x20
      [<ffffffffa01749dc>] f2fs_setxattr+0x5c/0xa0 [f2fs]
      [<ffffffffa0174c99>] __f2fs_set_acl+0x1b9/0x340 [f2fs]
      [<ffffffffa017515a>] f2fs_init_acl+0x4a/0xcb [f2fs]
      [<ffffffffa0159abe>] __f2fs_add_link+0x26e/0x780 [f2fs]
      [<ffffffffa015d4d8>] f2fs_mkdir+0xb8/0x150 [f2fs]
      [<ffffffff811cebd7>] vfs_mkdir+0xb7/0x160
      [<ffffffff811cf89b>] SyS_mkdir+0xab/0xe0
      [<ffffffff817244bf>] tracesys+0xe1/0xe6
      [<ffffffffffffffff>] 0xffffffffffffffff
      
      The call path indicates:
      - f2fs_add_link
         : down_write(&fi->i_sem);
      
       - init_inode_metadata
         - f2fs_init_acl
           - __f2fs_set_acl
             - f2fs_setxattr
               : down_write(&fi->i_sem);
      
      Here we should not call f2fs_setxattr, but __f2fs_setxattr.
      But __f2fs_setxattr is a static function in xattr.c, so that I found the other
      generic approach to use f2fs_setxattr.
      
      In f2fs_setxattr, the page pointer is only given from init_inode_metadata.
      So, this patch adds this condition to avoid this in f2fs_setxattr.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      d631abda
  5. 30 May, 2014 1 commit
  6. 29 May, 2014 1 commit
  7. 08 May, 2014 2 commits
  8. 07 May, 2014 28 commits