From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751883AbdJ3HVC (ORCPT ); Mon, 30 Oct 2017 03:21:02 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:38510 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751830AbdJ3HVB (ORCPT ); Mon, 30 Oct 2017 03:21:01 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20171030072059epoutp01a6b7765f40362e710df1aac8da3039f0~ySBAxh1CA1579315793epoutp01w X-AuditID: b6c32a45-34bff70000001129-ec-59f6d2daef27 From: Fan Li To: "'Chao Yu'" , jaegeuk@kernel.org Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: [f2fs-dev] [PATCH] f2fs: optimize __update_nat_bits Date: Mon, 30 Oct 2017 15:19:48 +0800 Message-id: <000e01d3514f$a93addf0$fbb099d0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset="Windows-1252" Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Content-language: en-us Thread-index: AdNRTNNi12Iq2ihpSVSK3LfbyUNiAg== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRmVeSWpSXmKPExsWy7bCmqe7tS98iDf7OZ7R4sn4Ws8WlRe4W l3fNYbOY+ngtqwOLR8uRt6wem1Z1snnsXvCZyePzJrkAligum5TUnMyy1CJ9uwSujE3tDgV/ eCp2zG1laWBs4exi5OSQEDCR+Nj+lbmLkYtDSGAHo8THjkZmkISQwHdGiR1b0mCKzu2aygRR tJtR4sS2bWwQRa8YJZrPGoLYbALqEltmdjOB2CICZhJnTs9n6WLk4GAW8JDYdawUJCwsYCPR dXEyI4jNIqAq0TXhADuIzStgKfH+QAMzhC0o8WPyPRYQm1nAQOL1ryXsELa8xOY1b5kh7lGQ 2HH2NSNEXFxi0oOH7BBr9SSu/VzDBlGzgE1i7YtACNtFYtuX+VBxYYlXx7ewQ9jSEs9WbWSE sNcxSnw+YwHyo4TAdkaJeR8/MkEkrIEW/4I6gk+i4/BfdpC/JAR4JTrahCBKPCSWLNkCVe4o 8aP/HzR4YiUWv9nOOIFRbhaS12YheW0WktdmIXlnASPLKkax1ILi3PTUYqMCQ73ixNzi0rx0 veT83E2M4BSh5bqDccY5n0OMAhyMSjy8DdnfIoVYE8uKK3MPMUpwMCuJ8F66CBTiTUmsrEot yo8vKs1JLT7EKM3BoiTOW7/tWoSQQHpiSWp2ampBahFMlomDU6qB8SnXG/lvnz4zOE76ZNPb b2V08mqvRbs5v791e3rflXlFCzsevYx3aXq88vUuH5Zrp/hfZBwwnLjy7D+Ow3P/HrS347vF Y/dn/lRn570zbb97iBheuMz14zDbxUe3FYp5jGRtsz7siFh3t29dtsaFB4sXVUh+n1Ut92O+ 5rXWF4FL3VL4Y/9J5SixFGckGmoxFxUnAgBcrpUYDQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrJLMWRmVeSWpSXmKPExsVy+t9jAd1bl75FGmw/qG3xZP0sZotLi9wt Lu+aw2Yx9fFaVgcWj5Yjb1k9Nq3qZPPYveAzk8fnTXIBLFFcNimpOZllqUX6dglcGZvaHQr+ 8FTsmNvK0sDYwtnFyMkhIWAicW7XVKYuRi4OIYGdjBLrtk9nhXBeMUp8P7qdHaSKTUBdYsvM biYQW0TATOLM6fksXYwcHMwCHhK7jpWChIUFbCS6Lk5mBLFZBFQluiYcAGvlFbCUeH+ggRnC FpT4MfkeC4jNLKAn8fHPbUYIW15i85q3zBAHKUjsOPsaKi4uMenBQ3aItXoS136uYZvAyD8L yahZSEbNQjJqFpL2BYwsqxglUwuKc9Nzi40KjPJSy/WKE3OLS/PS9ZLzczcxAgN422Gt/h2M j5fEH2IU4GBU4uFtyP4WKcSaWFZcmXuIUYKDWUmE99JFoBBvSmJlVWpRfnxRaU5q8SFGaQ4W JXFe/vxjkUIC6YklqdmpqQWpRTBZJg5OqQZGzU9ylyY6567VP7ZJm/1Z/ApjJsv6ePvDN9T/ 69/1tDnfO+18y8a0oLVcZiuTlrT3br3s3Msyq6b93aINImWLp86sZUy72LLj3p8O+zk2lqeU r5YfUVthHMl14H7+ya+HjNk2ePU2SToUv5Fw1dU0Kg0WOzLd//zePwHSu3QWbpusudRNWuyd EktxRqKhFnNRcSIAgUQ6rlwCAAA= X-CMS-MailID: 20171030072058epcas2p153d0b5c921ea4d3f3da6c6fd9baa5124 X-Msg-Generator: CA CMS-TYPE: 102P X-CMS-RootMailID: 20171030072058epcas2p153d0b5c921ea4d3f3da6c6fd9baa5124 X-RootMTR: 20171030072058epcas2p153d0b5c921ea4d3f3da6c6fd9baa5124 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Make three modification for __update_nat_bits: 1. Take the codes of dealing the nat with nid 0 out of the loop Such nat only needs to be dealt with once at beginning. 2. Use " nat_index == 0" instead of " start_nid == 0" to decide if it's the first nat block It's better that we don't assume @start_nid is the first nid of the nat block it's in. 3. Use " if (nat_blk->entries[i].block_addr != NULL_ADDR)" to explicitly comfirm the value of block_addr use constant to make sure the codes is right, even if the value of NULL_ADDR changes. Signed-off-by: Fan li --- fs/f2fs/node.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index ac629d6..b97a031 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -2407,15 +2407,17 @@ static void __update_nat_bits(struct f2fs_sb_info *sbi, nid_t start_nid, unsigned int nat_index = start_nid / NAT_ENTRY_PER_BLOCK; struct f2fs_nat_block *nat_blk = page_address(page); int valid = 0; - int i; + int i = 0; if (!enabled_nat_bits(sbi, NULL)) return; - for (i = 0; i < NAT_ENTRY_PER_BLOCK; i++) { - if (start_nid == 0 && i == 0) - valid++; - if (nat_blk->entries[i].block_addr) + if (nat_index == 0) { + valid = 1; + i = 1; + } + for (; i < NAT_ENTRY_PER_BLOCK; i++) { + if (nat_blk->entries[i].block_addr != NULL_ADDR) valid++; } if (valid == 0) { -- 2.7.4