On 02/23, Chao Yu wrote: > On 2017/2/18 2:39, Jaegeuk Kim wrote: > > Hi Yunlong, > > > > I already started to test this since a couple of days ago. :) > > > > http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs.git/commit/?h=dev-test&id=908b5f463c82eaf972b149a26bb310f5e25064fd > > Hi, Jaegeuk, > > Could you send this patch into mailing list? Anyway I will comment in this patch > first. :) > > > > > Thanks, > > > > On 02/17, Yunlong Song wrote: > >> If the free segments are used up, then new_curseg will fail for > >> CURSEG_WARM_NODE, in this case, we should use change_curseg instead of > >> new_curseg. > >> > >> Signed-off-by: Yunlong Song <yunlong.song@xxxxxxxxxx> > >> --- > >> fs/f2fs/segment.c | 2 -- > >> 1 file changed, 2 deletions(-) > >> > >> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > >> index df2ff5c..32820cd 100644 > >> --- a/fs/f2fs/segment.c > >> +++ b/fs/f2fs/segment.c > >> @@ -1564,8 +1564,6 @@ static void allocate_segment_by_default(struct f2fs_sb_info *sbi, > >> > >> if (force) > >> new_curseg(sbi, type, true); > >> - else if (type == CURSEG_WARM_NODE) > > Would it be better to check CP_CRC_RECOVERY_FLAG for compatibility of old image? > > else if (!is_set_ckpt_flags(CP_CRC_RECOVERY_FLAG) && type == CURSEG_WARM_NODE) > new_curseg(sbi, type, false); Agreed, when considering any potential risk. ;) >From 5b6c6be2d878bd7ec4dc2cb4e2a2da2779fe52ab Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> Date: Tue, 14 Feb 2017 19:32:51 -0800 Subject: [PATCH] f2fs: use SSR for warm node as well We have had node chains, but haven't used it so far due to stale node blocks. Now, we have crc|cp_ver in node footer and give random cp_ver at format time, we can start to use it again. Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> --- fs/f2fs/segment.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index b2e0769a09d0..0b42b0cdd674 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -1563,7 +1563,8 @@ static void allocate_segment_by_default(struct f2fs_sb_info *sbi, if (force) new_curseg(sbi, type, true); - else if (type == CURSEG_WARM_NODE) + else if (!is_set_ckpt_flags(sbi, CP_CRC_RECOVERY_FLAG) && + type == CURSEG_WARM_NODE) new_curseg(sbi, type, false); else if (curseg->alloc_type == LFS && is_next_segment_free(sbi, type)) new_curseg(sbi, type, false); -- 2.11.0