• Chao Yu's avatar
    f2fs: fix to avoid redundant discard during fstrim · c24a0fd6
    Chao Yu authored
    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: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    c24a0fd6
segment.c 65.8 KB