f2fs: fix to issue small discard in real-time mode discard
authorChao Yu <chao2.yu@samsung.com>
Sat, 28 Feb 2015 09:23:30 +0000 (17:23 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 10 Apr 2015 22:08:31 +0000 (15:08 -0700)
Now in f2fs, we share functions and structures for batch mode and real-time mode
discard. For real-time mode discard, in shared function add_discard_addrs, we
will use uninitialized trim_minlen in struct cp_control to compare with length
of contiguous free blocks to decide whether skipping discard fragmented freespace
or not, this makes us ignore small discard sometimes. Fix it.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Reviewed-by : Changman Lee <cm224.lee@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c

index 1e909340842a62383727e2e17e081ada6278a2c7..3e80bd69d4a07eef2ad3d64662b2a01e3a58a933 100644 (file)
@@ -552,7 +552,7 @@ static void add_discard_addrs(struct f2fs_sb_info *sbi, struct cp_control *cpc)
 
                end = __find_rev_next_zero_bit(dmap, max_blocks, start + 1);
 
-               if (end - start < cpc->trim_minlen)
+               if (force && end - start < cpc->trim_minlen)
                        continue;
 
                __add_discard_entry(sbi, cpc, start, end);