From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754681AbdCIMIk (ORCPT ); Thu, 9 Mar 2017 07:08:40 -0500 Received: from szxga03-in.huawei.com ([45.249.212.189]:3960 "EHLO dggrg03-dlp.huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1753697AbdCIMIi (ORCPT ); Thu, 9 Mar 2017 07:08:38 -0500 Subject: Re: [f2fs-dev] [PATCH 2/2] f2fs: don't overwrite node block by SSR To: Jaegeuk Kim References: <20170306215102.3807-1-jaegeuk@kernel.org> <20170306215102.3807-2-jaegeuk@kernel.org> <2be8ba18-21ed-a990-70d1-12be80ed13d2@huawei.com> <20170308213955.GC5483@jaegeuk.local> CC: , , From: Chao Yu Message-ID: <9a3cfd97-150e-e1b8-8c22-1ddc475b492e@huawei.com> Date: Thu, 9 Mar 2017 20:07:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 In-Reply-To: <20170308213955.GC5483@jaegeuk.local> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.134.22.195] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.58C14598.00E4,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 755499cc2eae05d33926ae7b52096eba Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017/3/9 5:39, Jaegeuk Kim wrote: > On 03/08, Chao Yu wrote: >> On 2017/3/7 5:51, Jaegeuk Kim wrote: >>> This patch fixes that SSR can overwrite previous warm node block consisting of >>> a node chain since the last checkpoint. >> >> Good catch! >> >> Need to consider the impact to other accesser, e.g. is_checkpointed_data, >> add_discard_addrs? > > I've checked them. is_checkpointed_data() has nothing to do with this warm node > and this prevents add_discard_addrs to issue discard command. That's right. Reviewed-by: Chao Yu Thanks, > > Thanks, > >> >> Thanks, >> >>> >>> Fixes: 5b6c6be2d878 ("f2fs: use SSR for warm node as well") >>> Signed-off-by: Jaegeuk Kim >>> --- >>> fs/f2fs/segment.c | 6 ++++++ >>> 1 file changed, 6 insertions(+) >>> >>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c >>> index 2ae36d04d03e..684b869e1861 100644 >>> --- a/fs/f2fs/segment.c >>> +++ b/fs/f2fs/segment.c >>> @@ -1177,6 +1177,12 @@ static void update_sit_entry(struct f2fs_sb_info *sbi, block_t blkaddr, int del) >>> if (f2fs_discard_en(sbi) && >>> !f2fs_test_and_set_bit(offset, se->discard_map)) >>> sbi->discard_blks--; >>> + >>> + /* don't overwrite by SSR to keep node chain */ >>> + if (se->type == CURSEG_WARM_NODE) { >>> + if (!f2fs_test_and_set_bit(offset, se->ckpt_valid_map)) >>> + se->ckpt_valid_blocks++; >>> + } >>> } else { >>> if (!f2fs_test_and_clear_bit(offset, se->cur_valid_map)) { >>> #ifdef CONFIG_F2FS_CHECK_FS >>> > > . >