1. 02 Mar, 2017 23 commits
  2. 01 Mar, 2017 2 commits
  3. 28 Feb, 2017 13 commits
  4. 27 Feb, 2017 2 commits
    • Chao Yu's avatar
      f2fs: introduce free nid bitmap · 4ac91242
      Chao Yu authored
      In scenario of intensively node allocation, free nids will be ran out
      soon, then it needs to stop to load free nids by traversing NAT blocks,
      in worse case, if NAT blocks does not be cached in memory, it generates
      IOs which slows down our foreground operations.
      
      In order to speed up node allocation, in this patch we introduce a new
      free_nid_bitmap array, so there is an bitmap table for each NAT block,
      Once the NAT block is loaded, related bitmap cache will be switched on,
      and bitmap will be set during traversing nat entries in NAT block, later
      we can query and update nid usage status in memory completely.
      
      With such implementation, I expect performance of node allocation can be
      improved in the long-term after filesystem image is mounted.
      Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      4ac91242
    • Jaegeuk Kim's avatar
      f2fs: add bitmaps for empty or full NAT blocks · 22ad0b6a
      Jaegeuk Kim authored
      This patches adds bitmaps to represent empty or full NAT blocks containing
      free nid entries.
      
      If we can find valid crc|cp_ver in the last block of checkpoint pack, we'll
      use these bitmaps when building free nids. In order to avoid checkpointing
      burden, up-to-date bitmaps will be flushed only during umount time. So,
      normally we can get this gain, but when power-cut happens, we rely on fsck.f2fs
      which recovers this bitmap again.
      
      After this patch, we build free nids from nid #0 at mount time to make more
      full NAT blocks, but in runtime, we check empty NAT blocks to load free nids
      without loading any NAT pages from disk.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      22ad0b6a