From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751915AbcFCDzo (ORCPT ); Thu, 2 Jun 2016 23:55:44 -0400 Received: from mail.kernel.org ([198.145.29.136]:36995 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751175AbcFCDzn (ORCPT ); Thu, 2 Jun 2016 23:55:43 -0400 From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Jaegeuk Kim Subject: [PATCH 1/8] f2fs: reuse nid if it was cached only Date: Thu, 2 Jun 2016 20:55:32 -0700 Message-Id: <1464926139-58252-1-git-send-email-jaegeuk@kernel.org> X-Mailer: git-send-email 2.6.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If nid's block address is assigned as: NULL_ADDR -> NEW_ADDR -> NULL_ADDR, we can reset this nid, since its node page has never written back. Signed-off-by: Jaegeuk Kim --- fs/f2fs/node.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 16532b3..15f55ae 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -317,10 +317,16 @@ static void set_node_addr(struct f2fs_sb_info *sbi, struct node_info *ni, } /* change address */ - nat_set_blkaddr(e, new_blkaddr); - if (new_blkaddr == NEW_ADDR || new_blkaddr == NULL_ADDR) - set_nat_flag(e, IS_CHECKPOINTED, false); - __set_nat_cache_dirty(nm_i, e); + if (nat_get_blkaddr(e) == NEW_ADDR && new_blkaddr == NULL_ADDR) { + nat_set_blkaddr(e, new_blkaddr); + nat_reset_flag(e); + __clear_nat_cache_dirty(nm_i, e); + } else { + nat_set_blkaddr(e, new_blkaddr); + if (new_blkaddr == NEW_ADDR || new_blkaddr == NULL_ADDR) + set_nat_flag(e, IS_CHECKPOINTED, false); + __set_nat_cache_dirty(nm_i, e); + } /* update fsync_mark if its inode nat entry is still alive */ if (ni->nid != ni->ino) -- 2.6.3