From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760076Ab3LHXiQ (ORCPT ); Sun, 8 Dec 2013 18:38:16 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:9009 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755574Ab3LHXiN convert rfc822-to-8bit (ORCPT ); Sun, 8 Dec 2013 18:38:13 -0500 X-AuditID: cbfee68e-b7fee6d000003b32-f3-52a502e42dd0 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT Message-id: <1386545831.2101.67.camel@kjgkr> Subject: Re: [f2fs-dev] [PATCH 3/3 V2] f2fs: introduce f2fs_cache_node_page() to add page into node_inode cache From: Jaegeuk Kim Reply-to: jaegeuk.kim@samsung.com To: Chao Yu Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Date: Mon, 09 Dec 2013 08:37:11 +0900 In-reply-to: <000501cef263$1c57e710$5507b530$@samsung.com> References: <000501cef263$1c57e710$5507b530$@samsung.com> Organization: Samsung X-Mailer: Evolution 3.2.3-0ubuntu6 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMIsWRmVeSWpSXmKPExsVy+t8zA90nTEuDDC7/FbX43/SRzeLSIneL PXtPslhc3jWHzYHFY/eCz0wefVtWMXp83iQXwBzFZZOSmpNZllqkb5fAlbH2wC62guMiFV3n DrA2ME4V6GLk5JAQMJG4+3UZK4QtJnHh3nq2LkYuDiGBZYwSy1bPZIMp2nViDytEYjqjxL6b h9hBErwCghI/Jt9jAbGZBdQlJs1bxAxhi0gcb74JFdeWWLbwNTNE8ytGie59G9ggmnUkzs2f wwhiCwsUSmyb28HUxcjBwQbUsHm/AUhYSEBR4u3+u2DXiQgoSfyav4gVYmamxJzXk1lBylkE VCU+XOcECXMKWElMnTuBGaLVUuLrinawE/gFRCUOL9zODPGLksTu9k52kHMkBE6xS2y9PIsJ JMEiICDxbfIhFpCZEgKyEpsOQNVLShxccYNlAqPkLCQfz0Ly8SwkH89C8vECRpZVjKKpBckF xUnpRUZ6xYm5xaV56XrJ+bmbGCER2reD8eYB60OMyUDrJzJLiSbnAyM8ryTe0NjMyMLUxNTY yNzSjDRhJXHeRQ+TgoQE0hNLUrNTUwtSi+KLSnNSiw8xMnFwSjUwzm1Quu8mIS/wa8W6TVOu /OHkW1EqXRvoZ/5MdmF+2J23j4MYljX4cb7VSlKyrjp4IJ1hchGX5Zs1Fxt5Ej33e3xUcmH4 oFjXtluNoW5pisOsI/tkX/z9YqS72WplTzIX04yQ4wumrdJSutHMGzU75urrfNbpIZoxjVF6 ky2vV3nLJnZ9dj+ixFKckWioxVxUnAgANES0wOYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGKsWRmVeSWpSXmKPExsVy+t9jQd0nTEuDDJo+Clr8b/rIZnFpkbvF nr0nWSwu75rD5sDisXvBZyaPvi2rGD0+b5ILYI5qYLTJSE1MSS1SSM1Lzk/JzEu3VfIOjneO NzUzMNQ1tLQwV1LIS8xNtVVy8QnQdcvMAdqmpFCWmFMKFApILC5W0rfDNCE0xE3XAqYxQtc3 JAiux8gADSSsY8xY1XSfuWCjSMXmbZNZGhj/83cxcnJICJhI7DqxhxXCFpO4cG89WxcjF4eQ wHRGiX03D7GDJHgFBCV+TL7H0sXIwcEsIC9x5FI2SJhZQF1i0rxFzBD1rxgluvdtYIOo15E4 N38OI4gtLFAosW1uBxNIL5uAtsTm/QYgYSEBRYm3+++C7RURUJL4NX8RK8TMTIk5ryezgpSz CKhKfLjOCRLmFLCSmDp3AjNEq6XE1xXtLCA2v4CoxOGF25khzleS2N3eyT6BUWgWkqNnIRw9 C8nRCxiZVzGKphYkFxQnpeca6RUn5haX5qXrJefnbmIEx/Iz6R2MqxosDjEKcDAq8fDe2LE4 SIg1say4MvcQowQHs5IIr9KJJUFCvCmJlVWpRfnxRaU5qcWHGJOB7p7ILCWanA9MM3kl8YbG JmZGlkZmFkYm5uakCSuJ8x5stQ4UEkhPLEnNTk0tSC2C2cLEwSnVwGjKycja3ztvSnJm97L3 fMZmVdrXOVy8Q6dNm3+v3zloriHH677MP7sOZv5hVmMOfFFlMKf778zUGQUlfIpPGxyLp7XI LBIJ3RG26LB/2W3Zja91pn3/uHaG0c85l/YYvop7K5ibUmxx+oux3fvpMaEhC9apSdqmz5qX OuHI2gC32a8EXwdUKyuxFGckGmoxFxUnAgCd0fdRKQMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2013-12-06 (금), 17:10 +0800, Chao Yu: > This patch introduces f2fs_cache_node_page(), in this function, page which is > readed ahead will be copy to node_inode's mapping cache. > It will avoid rereading these node pages. > > change log: > o check validity of grabbed page suggested by Jaegeuk Kim. > > Suggested-by: Jaegeuk Kim > Signed-off-by: Chao Yu > --- > fs/f2fs/node.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c > index 099f06f..3ff98fa 100644 > --- a/fs/f2fs/node.c > +++ b/fs/f2fs/node.c > @@ -1600,6 +1600,39 @@ static int ra_sum_pages(struct f2fs_sb_info *sbi, struct list_head *pages, > return 0; > } > > +/* > + * f2fs_cache_node_page() copy updated page data to node_inode cache page. > + */ > +void f2fs_cache_node_page(struct f2fs_sb_info *sbi, struct page *page, > + nid_t nid) > +{ > + struct address_space *mapping = sbi->node_inode->i_mapping; > + struct page *npage; What I meant for the validity was to check the block address to figure out this node page is up-to-date or not. IOW, something like this. get_node_info(sbi, nid, &ni); if (ni.blk_addr != current block address)) goto out; npage = grab_cache_page(mapping, nid); if (unlikely(!npage)) return; if (unlikely(PageUptodate(npage))) { f2fs_put_page(npage, 1); return; } memcpy(page_address(npage), page_address(page), PAGE_CACHE_SIZE); SetPageUptodate(npage); f2fs_put_page(npage, 1); out: return; > + > + npage = find_get_page(mapping, nid); > + if (unlikely(npage && PageUptodate(npage))) { > + f2fs_put_page(npage, 0); > + return; > + } > + f2fs_put_page(npage, 0); > + > + npage = grab_cache_page(mapping, nid); > + if (unlikely(!npage)) > + return; > + > + if (unlikely(PageUptodate(npage))) { > + f2fs_put_page(npage, 1); > + return; > + } > + > + memcpy(page_address(npage), page_address(page), PAGE_CACHE_SIZE); > + > + SetPageUptodate(npage); > + f2fs_put_page(npage, 1); > + > + return; > +} > + > int restore_node_summary(struct f2fs_sb_info *sbi, > unsigned int segno, struct f2fs_summary_block *sum) > { > @@ -1633,6 +1666,8 @@ int restore_node_summary(struct f2fs_sb_info *sbi, > sum_entry->version = 0; > sum_entry->ofs_in_node = 0; > sum_entry++; > + f2fs_cache_node_page(sbi, page, > + le32_to_cpu(rn->footer.nid)); > } else { > err = -EIO; > } -- Jaegeuk Kim Samsung From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaegeuk Kim Subject: Re: [PATCH 3/3 V2] f2fs: introduce f2fs_cache_node_page() to add page into node_inode cache Date: Mon, 09 Dec 2013 08:37:11 +0900 Message-ID: <1386545831.2101.67.camel@kjgkr> References: <000501cef263$1c57e710$5507b530$@samsung.com> Reply-To: jaegeuk.kim@samsung.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net To: Chao Yu Return-path: In-reply-to: <000501cef263$1c57e710$5507b530$@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net List-Id: linux-fsdevel.vger.kernel.org MjAxMy0xMi0wNiAo6riIKSwgMTc6MTAgKzA4MDAsIENoYW8gWXU6Cj4gVGhpcyBwYXRjaCBpbnRy b2R1Y2VzIGYyZnNfY2FjaGVfbm9kZV9wYWdlKCksIGluIHRoaXMgZnVuY3Rpb24sIHBhZ2Ugd2hp Y2ggaXMKPiByZWFkZWQgYWhlYWQgd2lsbCBiZSBjb3B5IHRvIG5vZGVfaW5vZGUncyBtYXBwaW5n IGNhY2hlLgo+IEl0IHdpbGwgYXZvaWQgcmVyZWFkaW5nIHRoZXNlIG5vZGUgcGFnZXMuCj4gCj4g Y2hhbmdlIGxvZzoKPiAgbyBjaGVjayB2YWxpZGl0eSBvZiBncmFiYmVkIHBhZ2Ugc3VnZ2VzdGVk IGJ5IEphZWdldWsgS2ltLgo+IAo+IFN1Z2dlc3RlZC1ieTogSmFlZ2V1ayBLaW0gPGphZWdldWsu a2ltQHNhbXN1bmcuY29tPgo+IFNpZ25lZC1vZmYtYnk6IENoYW8gWXUgPGNoYW8yLnl1QHNhbXN1 bmcuY29tPgo+IC0tLQo+ICBmcy9mMmZzL25vZGUuYyB8ICAgMzUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKykKPiAK PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9ub2RlLmMgYi9mcy9mMmZzL25vZGUuYwo+IGluZGV4IDA5 OWYwNmYuLjNmZjk4ZmEgMTAwNjQ0Cj4gLS0tIGEvZnMvZjJmcy9ub2RlLmMKPiArKysgYi9mcy9m MmZzL25vZGUuYwo+IEBAIC0xNjAwLDYgKzE2MDAsMzkgQEAgc3RhdGljIGludCByYV9zdW1fcGFn ZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBmMmZzX2NhY2hlX25vZGVfcGFnZSgpIGNv cHkgdXBkYXRlZCBwYWdlIGRhdGEgdG8gbm9kZV9pbm9kZSBjYWNoZSBwYWdlLgo+ICsgKi8KPiAr dm9pZCBmMmZzX2NhY2hlX25vZGVfcGFnZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj dCBwYWdlICpwYWdlLAo+ICsJCQkJCQluaWRfdCBuaWQpCj4gK3sKPiArCXN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nID0gc2JpLT5ub2RlX2lub2RlLT5pX21hcHBpbmc7Cj4gKwlzdHJ1Y3Qg cGFnZSAqbnBhZ2U7CgoKV2hhdCBJIG1lYW50IGZvciB0aGUgdmFsaWRpdHkgd2FzIHRvIGNoZWNr IHRoZSBibG9jayBhZGRyZXNzIHRvIGZpZ3VyZQpvdXQgdGhpcyBub2RlIHBhZ2UgaXMgdXAtdG8t ZGF0ZSBvciBub3QuCklPVywgc29tZXRoaW5nIGxpa2UgdGhpcy4KCiAgZ2V0X25vZGVfaW5mbyhz YmksIG5pZCwgJm5pKTsKIAogIGlmIChuaS5ibGtfYWRkciAhPSBjdXJyZW50IGJsb2NrIGFkZHJl c3MpKQogICAgZ290byBvdXQ7CgogIG5wYWdlID0gZ3JhYl9jYWNoZV9wYWdlKG1hcHBpbmcsIG5p ZCk7CiAgaWYgKHVubGlrZWx5KCFucGFnZSkpCiAgICByZXR1cm47CgogIGlmICh1bmxpa2VseShQ YWdlVXB0b2RhdGUobnBhZ2UpKSkgewogICAgZjJmc19wdXRfcGFnZShucGFnZSwgMSk7CiAgICBy ZXR1cm47CiAgfQogIG1lbWNweShwYWdlX2FkZHJlc3MobnBhZ2UpLCBwYWdlX2FkZHJlc3MocGFn ZSksIFBBR0VfQ0FDSEVfU0laRSk7CgogIFNldFBhZ2VVcHRvZGF0ZShucGFnZSk7CiAgZjJmc19w dXRfcGFnZShucGFnZSwgMSk7Cm91dDoKICByZXR1cm47CiAKPiArCj4gKwlucGFnZSA9IGZpbmRf Z2V0X3BhZ2UobWFwcGluZywgbmlkKTsKPiArCWlmICh1bmxpa2VseShucGFnZSAmJiBQYWdlVXB0 b2RhdGUobnBhZ2UpKSkgewo+ICsJCWYyZnNfcHV0X3BhZ2UobnBhZ2UsIDApOwo+ICsJCXJldHVy bjsKPiArCX0KPiArCWYyZnNfcHV0X3BhZ2UobnBhZ2UsIDApOwo+ICsKPiArCW5wYWdlID0gZ3Jh Yl9jYWNoZV9wYWdlKG1hcHBpbmcsIG5pZCk7Cj4gKwlpZiAodW5saWtlbHkoIW5wYWdlKSkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJaWYgKHVubGlrZWx5KFBhZ2VVcHRvZGF0ZShucGFnZSkpKSB7Cj4g KwkJZjJmc19wdXRfcGFnZShucGFnZSwgMSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCW1l bWNweShwYWdlX2FkZHJlc3MobnBhZ2UpLCBwYWdlX2FkZHJlc3MocGFnZSksIFBBR0VfQ0FDSEVf U0laRSk7Cj4gKwo+ICsJU2V0UGFnZVVwdG9kYXRlKG5wYWdlKTsKPiArCWYyZnNfcHV0X3BhZ2Uo bnBhZ2UsIDEpOwo+ICsKPiArCXJldHVybjsKPiArfQo+ICsKPiAgaW50IHJlc3RvcmVfbm9kZV9z dW1tYXJ5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiAgCQkJdW5zaWduZWQgaW50IHNlZ25v LCBzdHJ1Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW0pCj4gIHsKPiBAQCAtMTYzMyw2ICsxNjY2 LDggQEAgaW50IHJlc3RvcmVfbm9kZV9zdW1tYXJ5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwK PiAgCQkJCXN1bV9lbnRyeS0+dmVyc2lvbiA9IDA7Cj4gIAkJCQlzdW1fZW50cnktPm9mc19pbl9u b2RlID0gMDsKPiAgCQkJCXN1bV9lbnRyeSsrOwo+ICsJCQkJZjJmc19jYWNoZV9ub2RlX3BhZ2Uo c2JpLCBwYWdlLAo+ICsJCQkJCWxlMzJfdG9fY3B1KHJuLT5mb290ZXIubmlkKSk7Cj4gIAkJCX0g ZWxzZSB7Cj4gIAkJCQllcnIgPSAtRUlPOwo+ICAJCQl9CgotLSAKSmFlZ2V1ayBLaW0KU2Ftc3Vu ZwoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTcG9uc29yZWQgYnkgSW50ZWwoUikgWERLIApEZXZl bG9wLCB0ZXN0IGFuZCBkaXNwbGF5IHdlYiBhbmQgaHlicmlkIGFwcHMgd2l0aCBhIHNpbmdsZSBj b2RlIGJhc2UuCkRvd25sb2FkIGl0IGZvciBmcmVlIG5vdyEKaHR0cDovL3B1YmFkcy5nLmRvdWJs ZWNsaWNrLm5ldC9nYW1wYWQvY2xrP2lkPTExMTQwODYzMSZpdT0vNDE0MC9vc3RnLmNsa3Ryawpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZz LWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5l dApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZz LWRldmVsCg==