f2fs: fix inconsistent using of NM_WOUT_THRESHOLD
authorHaicheng Li <haicheng.li@linux.intel.com>
Sun, 28 Apr 2013 11:16:06 +0000 (19:16 +0800)
committerJaegeuk Kim <jaegeuk.kim@samsung.com>
Tue, 30 Apr 2013 03:07:32 +0000 (12:07 +0900)
try_to_free_nats() is usually called with parameter nr_shrink as
"nm_i->nat_cnt - NM_WOUT_THRESHOLD"
by flush_nat_entries() during checkpointing process.

However, this is inconsistent with the actual threshold check as
"if (nm_i->nat_cnt < 2 * NM_WOUT_THRESHOLD)"
, which will ignore the free_nats requests when
NM_WOUT_THRESHOLD < nm_i->nat_cnt < 2 * NM_WOUT_THRESHOLD

So fix the threshold check condition.

Signed-off-by: Haicheng Li <haicheng.li@linux.intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
fs/f2fs/node.c

index 6ff0172455222c9998a695eefb3046121b03a0ca..f14eb7b8b2c4ddd99d84ec8bdb24791b99dfd3b9 100644 (file)
@@ -244,7 +244,7 @@ static int try_to_free_nats(struct f2fs_sb_info *sbi, int nr_shrink)
 {
        struct f2fs_nm_info *nm_i = NM_I(sbi);
 
-       if (nm_i->nat_cnt < 2 * NM_WOUT_THRESHOLD)
+       if (nm_i->nat_cnt <= NM_WOUT_THRESHOLD)
                return 0;
 
        write_lock(&nm_i->nat_tree_lock);