From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752992AbcJKPBA (ORCPT ); Tue, 11 Oct 2016 11:01:00 -0400 Received: from mail.kernel.org ([198.145.29.136]:33472 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752053AbcJKPA6 (ORCPT ); Tue, 11 Oct 2016 11:00:58 -0400 From: Chao Yu To: jaegeuk@kernel.org Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Chao Yu Subject: [PATCH 1/8] f2fs: clear nlink if fail to add_link Date: Tue, 11 Oct 2016 22:56:59 +0800 Message-Id: <20161011145706.5028-1-chao@kernel.org> X-Mailer: git-send-email 2.10.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chao Yu We don't need to keep incomplete created inode in cache, so if we fail to add link into directory during new inode creation, it's better to set nlink of inode to zero, then we can evict inode immediately. Otherwise release of nid belong to inode will be delayed until inode cache is being shrunk, it may cause a seemingly endless loop while allocating free nids in time of testing generic/269 case of fstest suit. Signed-off-by: Chao Yu --- fs/f2fs/inode.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index d736989..34ae03c 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -384,6 +384,8 @@ retry: f2fs_lock_op(sbi); err = remove_inode_page(inode); f2fs_unlock_op(sbi); + if (err == -ENOENT) + err = 0; } /* give more chances, if ENOMEM case */ @@ -424,6 +426,12 @@ void handle_failed_inode(struct inode *inode) struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct node_info ni; + /* + * clear nlink of inode in order to release resource of inode + * immediately. + */ + clear_nlink(inode); + /* don't make bad inode, since it becomes a regular file. */ unlock_new_inode(inode); -- 2.10.1