From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753210AbdIDBdl (ORCPT ); Sun, 3 Sep 2017 21:33:41 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:5526 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753165AbdIDBdk (ORCPT ); Sun, 3 Sep 2017 21:33:40 -0400 Subject: Re: [f2fs-dev] [PATCH 2/2] f2fs: don't check inode's checksum if it was dirtied or writebacked To: Jaegeuk Kim , , , References: <20170901172511.7045-1-jaegeuk@kernel.org> <20170901172511.7045-2-jaegeuk@kernel.org> From: Chao Yu Message-ID: Date: Mon, 4 Sep 2017 09:33:25 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20170901172511.7045-2-jaegeuk@kernel.org> Content-Type: text/plain; charset="windows-1252" Content-Language: en-US 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.0A090204.59ACAD6B.003F,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: e80cb5c0c5e857c0825a299a8ac7d6d5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017/9/2 1:25, Jaegeuk Kim wrote: > If another thread already made the page dirtied or writebacked, we must avoid > to verify checksum. If we got an error, we need to remove its uptodate as well. > > Signed-off-by: Jaegeuk Kim Reviewed-by: Chao Yu > --- > fs/f2fs/inode.c | 3 ++- > fs/f2fs/node.c | 2 +- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c > index b4c401d456e7..c33b05aec1a1 100644 > --- a/fs/f2fs/inode.c > +++ b/fs/f2fs/inode.c > @@ -153,7 +153,8 @@ bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page) > struct f2fs_inode *ri; > __u32 provided, calculated; > > - if (!f2fs_enable_inode_chksum(sbi, page)) > + if (!f2fs_enable_inode_chksum(sbi, page) || > + PageDirty(page) || PageWriteback(page)) > return true; > > ri = &F2FS_NODE(page)->i; > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c > index 388a00262a5f..fca87835a1da 100644 > --- a/fs/f2fs/node.c > +++ b/fs/f2fs/node.c > @@ -1187,9 +1187,9 @@ static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid, > nid, nid_of_node(page), ino_of_node(page), > ofs_of_node(page), cpver_of_node(page), > next_blkaddr_of_node(page)); > - ClearPageUptodate(page); > err = -EINVAL; > out_err: > + ClearPageUptodate(page); > f2fs_put_page(page, 1); > return ERR_PTR(err); > } >