f2fs: avoid bggc->fggc when enough free segments are avaliable after cp
authorHou Pengyang <houpengyang@huawei.com>
Sat, 25 Feb 2017 03:57:38 +0000 (03:57 +0000)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 27 Feb 2017 18:07:37 +0000 (10:07 -0800)
commit19f4e688f89a9ce07b86d06d3df23c1cd877ab4e
tree0f0972a51cbf54cfd5d7055f18253f66b9ea8937
parentd27c3d89db9986b6f48576169031247e4c893729
f2fs: avoid bggc->fggc when enough free segments are avaliable after cp

We use has_not_enough_free_secs to check if there are enough free segments,

     (free_sections(sbi) + freed) <=
        (node_secs + 2 * dent_secs + imeta_secs +
         reserved_sections(sbi) + needed);

Under scenario with large number of dirty nodes, these nodes would be flushed
during cp, as a result, right side of the inequality would be decreased, while
left side stays unchanged if these nodes are flushed in SSR way, which means
there are enough free segments after this cp.

For this case, we just do a bggc instead of fggc.

Signed-off-by: Hou Pengyang <houpengyang@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c