From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751155AbdFAC5G (ORCPT ); Wed, 31 May 2017 22:57:06 -0400 Received: from szxga03-in.huawei.com ([45.249.212.189]:6932 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751052AbdFAC5E (ORCPT ); Wed, 31 May 2017 22:57:04 -0400 Subject: Re: [f2fs-dev] [PATCH] f2fs: remove false-positive bug_on To: Jaegeuk Kim , Chao Yu References: <20170526235923.31058-1-jaegeuk@kernel.org> <995a8c2b-d29f-5c82-6d7c-90e93770f620@kernel.org> <20170601021206.GB35573@jaegeuk-macbookpro.roam.corp.google.com> CC: , , From: Chao Yu Message-ID: <0655d27f-a0e0-71d7-5890-13eb4325dfc8@huawei.com> Date: Thu, 1 Jun 2017 10:56:33 +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: <20170601021206.GB35573@jaegeuk-macbookpro.roam.corp.google.com> 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.0A090203.592F8267.00DE,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: 664d32611502b5094be98ad6aa0f2de2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017/6/1 10:12, Jaegeuk Kim wrote: > On 05/31, Chao Yu wrote: >> Hi Jaegeuk, >> >> On 2017/5/27 7:59, Jaegeuk Kim wrote: >>> If we got failure from both of create and evict_inode, we can hit this wrong >>> bug_on. >>> >>> Signed-off-by: Jaegeuk Kim >>> --- >>> fs/f2fs/inode.c | 2 -- >>> 1 file changed, 2 deletions(-) >>> >>> diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c >>> index e53c784ab11e..5673b0bd83b5 100644 >>> --- a/fs/f2fs/inode.c >>> +++ b/fs/f2fs/inode.c >>> @@ -426,8 +426,6 @@ void f2fs_evict_inode(struct inode *inode) >>> alloc_nid_failed(sbi, inode->i_ino); >>> clear_inode_flag(inode, FI_FREE_NID); >>> } >>> - f2fs_bug_on(sbi, err && >>> - !exist_written_data(sbi, inode->i_ino, ORPHAN_INO)); >> >> We expect that we can keep the inode in orphan list in >> handle_failed_inode path when inode page have been persisted, so that if >> there is anything error in evice_inode, we can have another chance to >> release inode resource during next mount. >> >> Here we need to check this case, additionally, if we failed to add the >> inode into orphan list in handle_failed_inode, we must have set >> SBI_NEED_FSCK in cp pack, so we need check the case too. >> >> So we can change the code to: >> >> f2fs_bug_on(err && err != -ENOENT && >> (!exist_written_data(sbi, inode->i_ino, ORPHAN_INO) || >> !is_sbi_flag_set(sbi, SBI_NEED_FSCK)); Oh, looks like it needs to use '&&' in between exist_written_data and is_sbi_flag_set. Could you fix this? Thanks, > > Yup, I'll try this. ;) > > Thanks, > >> >> How do you think? >> >> Thanks, >> >>> out_clear: >>> fscrypt_put_encryption_info(inode, NULL); >>> clear_inode(inode); >>> > > . >