1. 18 3月, 2014 1 次提交
  2. 10 3月, 2014 2 次提交
  3. 17 2月, 2014 3 次提交
  4. 22 1月, 2014 1 次提交
  5. 20 1月, 2014 1 次提交
  6. 14 1月, 2014 1 次提交
  7. 08 1月, 2014 1 次提交
    • J
      f2fs: improve write performance under frequent fsync calls · fb5566da
      Jaegeuk Kim 提交于
      When considering a bunch of data writes with very frequent fsync calls, we
      are able to think the following performance regression.
      
      N: Node IO, D: Data IO, IO scheduler: cfq
      
      Issue    pending IOs
      	 D1 D2 D3 D4
       D1         D2 D3 D4 N1
       D2            D3 D4 N1 N2
       N1            D3 D4 N2 D1
       --> N1 can be selected by cfq becase of the same priority of N and D.
           Then D3 and D4 would be delayed, resuling in performance degradation.
      
      So, when processing the fsync call, it'd better give higher priority to data IOs
      than node IOs by assigning WRITE and WRITE_SYNC respectively.
      This patch improves the random wirte performance with frequent fsync calls by up
      to 10%.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      fb5566da
  8. 23 12月, 2013 22 次提交
    • G
      f2fs: remove the rw_flag domain from f2fs_io_info · 7e8f2308
      Gu Zheng 提交于
      When using the f2fs_io_info in the low level, we still need to merge the
      rw and rw_flag, so use the rw to hold all the io flags directly,
      and remove the rw_flag field.
      
      ps.It is based on the previous patch:
      f2fs: move all the bio initialization into __bio_alloc
      Signed-off-by: NGu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      7e8f2308
    • J
      f2fs: introduce a new direct_IO write path · bfad7c2d
      Jaegeuk Kim 提交于
      Previously, f2fs doesn't support direct IOs with high performance, which throws
      every write requests via the buffered write path, resulting in highly
      performance degradation due to memory opeations like copy_from_user.
      
      This patch introduces a new direct IO path in which every write requests are
      processed by generic blockdev_direct_IO() with enhanced get_block function.
      
      The get_data_block() in f2fs handles:
      1. if original data blocks are allocates, then give them to blockdev.
      2. otherwise,
        a. preallocate requested block addresses
        b. do not use extent cache for better performance
        c. give the block addresses to blockdev
      
      This policy induces that:
      - new allocated data are sequentially written to the disk
      - updated data are randomly written to the disk.
      - f2fs gives consistency on its file meta, not file data.
      Reviewed-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      bfad7c2d
    • J
      f2fs: introduce sysfs entry to control in-place-update policy · 216fbd64
      Jaegeuk Kim 提交于
      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: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      216fbd64
    • J
      f2fs: refactor bio->rw handling · 458e6197
      Jaegeuk Kim 提交于
      This patch introduces f2fs_io_info to mitigate the complex parameter list.
      
      struct f2fs_io_info {
      	enum page_type type;		/* contains DATA/NODE/META/META_FLUSH */
      	int rw;				/* contains R/RS/W/WS */
      	int rw_flag;			/* contains REQ_META/REQ_PRIO */
      }
      
      1. f2fs_write_data_pages
       - DATA
       - WRITE_SYNC is set when wbc->WB_SYNC_ALL.
      
      2. sync_node_pages
       - NODE
       - WRITE_SYNC all the time
      
      3. sync_meta_pages
       - META
       - WRITE_SYNC all the time
       - REQ_META | REQ_PRIO all the time
      
       ** f2fs_submit_merged_bio() handles META_FLUSH.
      
      4. ra_nat_pages, ra_sit_pages, ra_sum_pages
       - META
       - READ_SYNC
      
      Cc: Fan Li <fanofcode.li@samsung.com>
      Cc: Changman Lee <cm224.lee@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      458e6197
    • F
      f2fs: merge pages with the same sync_mode flag · 63a0b7cb
      Fan Li 提交于
      Previously f2fs submits most of write requests using WRITE_SYNC, but f2fs_write_data_pages
      submits last write requests by sync_mode flags callers pass.
      
      This causes a performance problem since continuous pages with different sync flags
      can't be merged in cfq IO scheduler(thanks yu chao for pointing it out), and synchronous
      requests often take more time.
      
      This patch makes the following modifies to DATA writebacks:
      
      1. every page will be written back using the sync mode caller pass.
      2. only pages with the same sync mode can be merged in one bio request.
      
      These changes are restricted to DATA pages.Other types of writebacks are modified
      To remain synchronous.
      
      In my test with tiotest, f2fs sequence write performance is improved by about 7%-10% ,
      and this patch has no obvious impact on other performance tests.
      Signed-off-by: NFan Li <fanofcode.li@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      63a0b7cb
    • J
      f2fs: refactor bio-related operations · 93dfe2ac
      Jaegeuk Kim 提交于
      This patch integrates redundant bio operations on read and write IOs.
      
      1. Move bio-related codes to the top of data.c.
      2. Replace f2fs_submit_bio with f2fs_submit_merged_bio, which handles read
         bios additionally.
      3. Introduce __submit_merged_bio to submit the merged bio.
      4. Change f2fs_readpage to f2fs_submit_page_bio.
      5. Introduce f2fs_submit_page_mbio to integrate previous submit_read_page and
         submit_write_page.
      Reviewed-by: NGu Zheng <guz.fnst@cn.fujitsu.com>
      Reviewed-by: Chao Yu <chao2.yu@samsung.com >
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      93dfe2ac
    • J
      f2fs: remove the own bi_private allocation · 187b5b8b
      Jaegeuk Kim 提交于
      Previously f2fs allocates its own bi_private data structure all the time even
      though we don't use it. But, can we remove this bi_private allocation?
      
      This patch removes such the additional bi_private allocation.
      
      1. Retrieve f2fs_sb_info from its page->mapping->host->i_sb.
       - This removes the usecases of bi_private in end_io.
      
      2. Use bi_private only when we really need it.
       - The bi_private is used only when the checkpoint procedure is conducted.
       - When conducting the checkpoint, f2fs submits a META_FLUSH bio to wait its bio
      completion.
       - Since we have no dependancies to remove bi_private now, let's just use
       bi_private pointer as the completion pointer.
      Reviewed-by: NGu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      187b5b8b
    • J
      f2fs: bug fix on bit overflow from 32bits to 64bits · f9a4e6df
      Jaegeuk Kim 提交于
      This patch fixes some bit overflows by the shift operations.
      
      Dan Carpenter reported potential bugs on bit overflows as follows.
      
      fs/f2fs/segment.c:910 submit_write_page()
      	warn: should 'blk_addr << ((sbi)->log_blocksize - 9)' be a 64 bit type?
      fs/f2fs/checkpoint.c:429 get_valid_checkpoint()
      	warn: should '1 << ()' be a 64 bit type?
      fs/f2fs/data.c:408 f2fs_readpage()
      	warn: should 'blk_addr << ((sbi)->log_blocksize - 9)' be a 64 bit type?
      fs/f2fs/data.c:457 submit_read_page()
      	warn: should 'blk_addr << ((sbi)->log_blocksize - 9)' be a 64 bit type?
      fs/f2fs/data.c:525 get_data_block_ro()
      	warn: should 'i << blkbits' be a 64 bit type?
      Bug-Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      f9a4e6df
    • C
      f2fs: send REQ_META or REQ_PRIO when reading meta area · 03232305
      Changman Lee 提交于
      Let's send REQ_META or REQ_PRIO when reading meta area such as NAT/SIT
      etc.
      Signed-off-by: NChangman Lee <cm224.lee@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      03232305
    • J
      f2fs: add detailed information of bio types in the tracepoints · a709f4a2
      Jaegeuk Kim 提交于
      This patch inserts information of bio types in more detail.
      So, we can now see REQ_META and REQ_PRIO too.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      a709f4a2
    • C
      f2fs: read contiguous sit entry pages by merging for mount performance · 74de593a
      Chao Yu 提交于
      Previously we read sit entries page one by one, this method lost the chance
      of reading contiguous page together. So we read pages as contiguous as
      possible for better mount performance.
      
      change log:
       o merge judgements/use 'Continue' or 'Break' instead of 'Goto' as Gu Zheng
         suggested.
       o add mark_page_accessed() before release page to delay VM reclaiming.
       o remove '*order' for simplification of function as Jaegeuk Kim suggested.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      [Jaegeuk Kim: fix a bug on the block address calculation]
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      74de593a
    • C
      f2fs: adds a tracepoint for f2fs_submit_read_bio · d4d288bc
      Chao Yu 提交于
      This patch adds a tracepoint for f2fs_submit_read_bio.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      [Jaegeuk Kim: integrate tracepoints of f2fs_submit_read(_write)_bio]
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      d4d288bc
    • C
      f2fs: adds a tracepoint for submit_read_page · 87b8872d
      Chao Yu 提交于
      This patch adds a tracepoint for submit_read_page.
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      [Jaegeuk Kim: integrate tracepoints of f2fs_submit_read(_write)_page]
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      87b8872d
    • J
      f2fs: introduce a bio array for per-page write bios · 1ff7bd3b
      Jaegeuk Kim 提交于
      The f2fs has three bio types, NODE, DATA, and META, and manages some data
      structures per each bio types.
      
      The codes are a little bit messy, thus, this patch introduces a bio array
      which groups individual data structures as follows.
      
      struct f2fs_bio_info {
      	struct bio *bio;		/* bios to merge */
      	sector_t last_block_in_bio;	/* last block number */
      	struct mutex io_mutex;		/* mutex for bio */
      };
      
      struct f2fs_sb_info {
      	...
      	struct f2fs_bio_info write_io[NR_PAGE_TYPE];	/* for write bios */
      	...
      };
      
      The code changes from this new data structure are trivial.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      1ff7bd3b
    • J
      f2fs: use sbi->write_mutex for write bios · 971767ca
      Jaegeuk Kim 提交于
      This patch removes an unnecessary semaphore (i.e., sbi->bio_sem).
      There is no reason to use the semaphore when f2fs submits read and write IOs.
      Instead, let's use a write mutex and cover the sbi->bio[] by the lock.
      
      Change log from v1:
       o split write_mutex suggested by Chao Yu
      
      Chao described,
      "All DATA/NODE/META bio buffers in superblock is protected by
      'sbi->write_mutex', but each bio buffer area is independent, So we
      should split write_mutex to three for DATA/NODE/META."
      Signed-off-by: NChao Yu <chao2.yu@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      971767ca
    • J
      f2fs: clean up the do_submit_bio flow · 7d5e5109
      Jaegeuk Kim 提交于
      This patch introduces PAGE_TYPE_OF_BIO() and cleans up do_submit_bio() with it.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      7d5e5109
    • J
      f2fs: add a tracepoint for f2fs_issue_discard · 1661d07c
      Jaegeuk Kim 提交于
      This patch adds a tracepoint for f2fs_issue_discard.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      1661d07c
    • J
      f2fs: introduce f2fs_issue_discard() to clean up · 37208879
      Jaegeuk Kim 提交于
      Change log from v1:
       o fix 32bit drops reported by Dan Carpenter
      
      This patch adds f2fs_issue_discard() to clean up blkdev_issue_discard() flows.
      
      Dan carpenter reported:
      "block_t is a 32 bit type and sector_t is a 64 bit type.  The upper 32
      bits of the sector_t are not used because the shift will wrap."
      Bug-Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      37208879
    • J
      f2fs: add key functions for small discards · b2955550
      Jaegeuk Kim 提交于
      This patch adds key functions to activate the small discard feature.
      
      Note that this procedure is conducted during the checkpoint only.
      
      In flush_sit_entries(), when a new dirty sit entry is flushed, f2fs calls
      add_discard_addrs() which searches candidates to be discarded.
      The candidates should be marked *invalidated* and also previous checkpoint
      recognizes it as *valid*.
      
      At the end of a checkpoint procedure, f2fs throws discards based on the
      discard entry list.
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      b2955550
    • J
      f2fs: add a slab cache entry for small discards · 7fd9e544
      Jaegeuk Kim 提交于
      This patch adds a slab cache entry for small discards.
      
      Each entry consists of:
      
      struct discard_entry {
      	struct list_head list;	/* list head */
      	block_t blkaddr;	/* block address to be discarded */
      	int len;		/* # of consecutive blocks of the discard */
      };
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      7fd9e544
    • C
      f2fs: improve searching speed of __next_free_blkoff · e81c93cf
      Changman Lee 提交于
      To find a zero bit using the result of OR operation between ckpt_valid_map
      and cur_valid_map is more fast than find a zero bit in each bitmap.
      Signed-off-by: NChangman Lee <cm224.lee@samsung.com>
      [Jaegeuk Kim: adjust changed function name]
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      e81c93cf
    • C
      f2fs: introduce __find_rev_next(_zero)_bit · 9a7f143a
      Changman Lee 提交于
      When f2fs_set_bit is used, in a byte MSB and LSB is reversed,
      in that case we can use __find_rev_next_bit or __find_rev_next_zero_bit.
      Signed-off-by: NChangman Lee <cm224.lee@samsung.com>
      [Jaegeuk Kim: change the function names]
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      9a7f143a
  9. 24 11月, 2013 2 次提交
    • K
      block: Abstract out bvec iterator · 4f024f37
      Kent Overstreet 提交于
      Immutable biovecs are going to require an explicit iterator. To
      implement immutable bvecs, a later patch is going to add a bi_bvec_done
      member to this struct; for now, this patch effectively just renames
      things.
      Signed-off-by: NKent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: "Ed L. Cashin" <ecashin@coraid.com>
      Cc: Nick Piggin <npiggin@kernel.dk>
      Cc: Lars Ellenberg <drbd-dev@lists.linbit.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Matthew Wilcox <willy@linux.intel.com>
      Cc: Geoff Levand <geoff@infradead.org>
      Cc: Yehuda Sadeh <yehuda@inktank.com>
      Cc: Sage Weil <sage@inktank.com>
      Cc: Alex Elder <elder@inktank.com>
      Cc: ceph-devel@vger.kernel.org
      Cc: Joshua Morris <josh.h.morris@us.ibm.com>
      Cc: Philip Kelleher <pjk1939@linux.vnet.ibm.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Alasdair Kergon <agk@redhat.com>
      Cc: Mike Snitzer <snitzer@redhat.com>
      Cc: dm-devel@redhat.com
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: linux390@de.ibm.com
      Cc: Boaz Harrosh <bharrosh@panasas.com>
      Cc: Benny Halevy <bhalevy@tonian.com>
      Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Chris Mason <chris.mason@fusionio.com>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Cc: Andreas Dilger <adilger.kernel@dilger.ca>
      Cc: Jaegeuk Kim <jaegeuk.kim@samsung.com>
      Cc: Steven Whitehouse <swhiteho@redhat.com>
      Cc: Dave Kleikamp <shaggy@kernel.org>
      Cc: Joern Engel <joern@logfs.org>
      Cc: Prasad Joshi <prasadjoshi.linux@gmail.com>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      Cc: KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Ben Myers <bpm@sgi.com>
      Cc: xfs@oss.sgi.com
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Cc: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Guo Chao <yan@linux.vnet.ibm.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Asai Thambi S P <asamymuthupa@micron.com>
      Cc: Selvan Mani <smani@micron.com>
      Cc: Sam Bradshaw <sbradshaw@micron.com>
      Cc: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
      Cc: "Roger Pau Monné" <roger.pau@citrix.com>
      Cc: Jan Beulich <jbeulich@suse.com>
      Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
      Cc: Ian Campbell <Ian.Campbell@citrix.com>
      Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Jiang Liu <jiang.liu@huawei.com>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Jerome Marchand <jmarchand@redhat.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Peng Tao <tao.peng@emc.com>
      Cc: Andy Adamson <andros@netapp.com>
      Cc: fanchaoting <fanchaoting@cn.fujitsu.com>
      Cc: Jie Liu <jeff.liu@oracle.com>
      Cc: Sunil Mushran <sunil.mushran@gmail.com>
      Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
      Cc: Namjae Jeon <namjae.jeon@samsung.com>
      Cc: Pankaj Kumar <pankaj.km@samsung.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Mel Gorman <mgorman@suse.de>6
      4f024f37
    • K
      block: Convert various code to bio_for_each_segment() · 2c30c71b
      Kent Overstreet 提交于
      With immutable biovecs we don't want code accessing bi_io_vec directly -
      the uses this patch changes weren't incorrect since they all own the
      bio, but it makes the code harder to audit for no good reason - also,
      this will help with multipage bvecs later.
      Signed-off-by: NKent Overstreet <kmo@daterainc.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Chris Mason <chris.mason@fusionio.com>
      Cc: Jaegeuk Kim <jaegeuk.kim@samsung.com>
      Cc: Joern Engel <joern@logfs.org>
      Cc: Prasad Joshi <prasadjoshi.linux@gmail.com>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      2c30c71b
  10. 11 11月, 2013 1 次提交
    • C
      f2fs: issue more large discard command · 29e59c14
      Changman Lee 提交于
      o Changes from v1
        Use find_next(_zero)_bit suggested by jg.kim
      
      When f2fs issues discard command, if segment is contiguous,
      let's issue more large segment to gather adjacent segments.
      
      ** blktrace **
      179,1    0     5859    42.619023770   971  C   D 131072 + 2097152 [0]
      179,1    0    33665   108.840475468   971  C   D 2228224 + 2494464 [0]
      179,1    0    33671   109.131616427   971  C   D 14909440 + 344064 [0]
      179,1    0    33677   109.137100677   971  C   D 15261696 + 4096 [0]
      Signed-off-by: NChangman Lee <cm224.lee@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      29e59c14
  11. 08 11月, 2013 1 次提交
  12. 06 11月, 2013 1 次提交
  13. 30 10月, 2013 1 次提交
    • F
      f2fs: change the method of calculating the number summary blocks · 9a47938b
      Fan Li 提交于
      npages_for_summary_flush uses (SUMMARY_SIZE + 1) as the size of a f2fs_summary
      while its actual size is  SUMMARY_SIZE. So the result sometimes is bigger than
      actual number by one, which causes checkpoint can't be written into disk
      contiguously, and sometimes summary blocks can't be compacted like they should.
      Besides, when writing summary blocks into pages, if remain space in a page
      isn't big enough for one f2fs_summary, it will be left unused, current code
      seems not to take it into account.
      Signed-off-by: NFan Li <fanofcode.li@samsung.com>
      Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
      9a47938b
  14. 29 10月, 2013 1 次提交
  15. 28 10月, 2013 1 次提交