]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.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)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 12 Mar 2018 23:05:30 +0000 (08:05 +0900)
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>
fs/f2fs/gc.c
fs/f2fs/segment.c

index aa720cc4450943259736c5de6be6c0164b2bc4a2..b9d93fd532a9f93a71cb56a47dafb673ed16f8b6 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 b16a8e6625aaee740b8232ac63dabe5c5fcc3e33..205b0d934c44e96ed24a1fe30e0edd5fcffc76d3 100644 (file)
@@ -2164,7 +2164,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])