]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
f2fs: fix heap mode to reset it back
authorYunlong Song <yunlong.song@huawei.com>
Mon, 29 Jan 2018 03:37:45 +0000 (11:37 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Apr 2018 06:55:10 +0000 (08:55 +0200)
commit b94929d975c8423defc9aededb0f499ff936b509 upstream.

Commit 7a20b8a61eff81bdb7097a578752a74860e9d142 ("f2fs: allocate node
and hot data in the beginning of partition") introduces another mount
option, heap, to reset it back. But it does not do anything for heap
mode, so fix it.

Cc: stable@vger.kernel.org
Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/f2fs/gc.c
fs/f2fs/segment.c

index d844dcb805703ef721a443cfa23194a298c5de23..3a48ea72704c1609f178656d5defb15d0f3d4c2d 100644 (file)
@@ -191,8 +191,9 @@ static void select_policy(struct f2fs_sb_info *sbi, int gc_type,
        if (gc_type != FG_GC && p->max_search > sbi->max_victim_search)
                p->max_search = sbi->max_victim_search;
 
-       /* let's select beginning hot/small space first */
-       if (type == CURSEG_HOT_DATA || IS_NODESEG(type))
+       /* let's select beginning hot/small space first in no_heap mode*/
+       if (test_opt(sbi, NOHEAP) &&
+               (type == CURSEG_HOT_DATA || IS_NODESEG(type)))
                p->offset = 0;
        else
                p->offset = SIT_I(sbi)->last_victim[p->gc_mode];
index c117e0913f2a3b4a7c2573fc4fd2ece85f31f075..203543b6124427b676f19bf4581f7fa1879e5610 100644 (file)
@@ -2155,7 +2155,8 @@ static unsigned int __get_next_segno(struct f2fs_sb_info *sbi, int type)
        if (sbi->segs_per_sec != 1)
                return CURSEG_I(sbi, type)->segno;
 
-       if (type == CURSEG_HOT_DATA || IS_NODESEG(type))
+       if (test_opt(sbi, NOHEAP) &&
+               (type == CURSEG_HOT_DATA || IS_NODESEG(type)))
                return 0;
 
        if (SIT_I(sbi)->last_victim[ALLOC_NEXT])