OpenCloudOS-Kernel/fs/f2fs
Chao Yu c24a0fd655 f2fs: fix to avoid redundant discard during fstrim
With below test steps, f2fs will issue redundant discard when doing fstrim,
the reason is that we issue discards for both prefree segments and
consecutive freed region user wants to trim, part regions they covered are
overlapped, here, we change to do not to issue any discards for prefree
segments in trimmed range.

1. mount -t f2fs -o discard /dev/zram0 /mnt/f2fs
2. fstrim -o 0 -l 3221225472 -m 2097152 -v /mnt/f2fs/
3. dd if=/dev/zero  of=/mnt/f2fs/a bs=2M count=1
4. dd if=/dev/zero  of=/mnt/f2fs/b bs=1M count=1
5. sync
6. rm /mnt/f2fs/a /mnt/f2fs/b
7. fstrim -o 0 -l 3221225472 -m 2097152 -v /mnt/f2fs/

Before:
<...>-5428  [001] ...1  9511.052125: f2fs_issue_discard: dev = (251,0), blkstart = 0x2200, blklen = 0x200
<...>-5428  [001] ...1  9511.052787: f2fs_issue_discard: dev = (251,0), blkstart = 0x2200, blklen = 0x300

After:
<...>-6764  [000] ...1  9720.382504: f2fs_issue_discard: dev = (251,0), blkstart = 0x2200, blklen = 0x300

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2016-07-08 10:33:34 -07:00
..
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile fs crypto: move per-file encryption from f2fs tree to fs/crypto 2016-03-17 21:19:33 -07:00
acl.c f2fs: call mark_inode_dirty_sync for i_field changes 2016-06-02 18:05:11 -07:00
acl.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
checkpoint.c f2fs: call SetPageUptodate if needed 2016-07-08 10:33:29 -07:00
data.c f2fs: call SetPageUptodate if needed 2016-07-08 10:33:29 -07:00
debug.c f2fs: flush inode metadata when checkpoint is doing 2016-06-02 18:05:11 -07:00
dir.c f2fs: call update_inode_page for orphan inodes 2016-07-06 10:44:07 -07:00
extent_cache.c f2fs: remove syncing inode page in all the cases 2016-06-02 18:05:12 -07:00
f2fs.h f2fs: use percpu_rw_semaphore 2016-07-08 10:33:31 -07:00
file.c f2fs: call SetPageUptodate if needed 2016-07-08 10:33:29 -07:00
gc.c f2fs: fix to redirty page if fail to gc data page 2016-07-08 10:33:26 -07:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-11 15:56:37 -08:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: call SetPageUptodate if needed 2016-07-08 10:33:29 -07:00
inode.c f2fs: call update_inode_page for orphan inodes 2016-07-06 10:44:07 -07:00
namei.c f2fs: call update_inode_page for orphan inodes 2016-07-06 10:44:07 -07:00
node.c f2fs: use percpu_rw_semaphore 2016-07-08 10:33:31 -07:00
node.h f2fs: produce more nids and reduce readahead nats 2016-07-06 10:44:08 -07:00
recovery.c f2fs: introduce mode=lfs mount option 2016-06-13 11:55:21 -07:00
segment.c f2fs: fix to avoid redundant discard during fstrim 2016-07-08 10:33:34 -07:00
segment.h f2fs: avoid writing node/metapages during writes 2016-07-06 10:44:09 -07:00
shrinker.c f2fs: produce more nids and reduce readahead nats 2016-07-06 10:44:08 -07:00
super.c f2fs: fix incorrect f_bfree calculation in ->statfs 2016-07-08 10:33:32 -07:00
trace.c f2fs: trace old block address for CoWed page 2016-02-22 21:40:02 -08:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: remove unnecessary goto statement 2016-07-08 10:33:27 -07:00
xattr.h f2fs: add missing argument to f2fs_setxattr stub 2016-03-17 21:19:47 -07:00