From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Yu Subject: Re: [PATCH] f2fs: readahead contiguous pages for restore_node_summary Date: Thu, 28 Nov 2013 13:56:43 +0800 Message-ID: <003101ceebfe$bab50890$301f19b0$@samsung.com> References: <000101cee757$6f3b4790$4db1d6b0$@samsung.com> <1385530195.2417.22.camel@kjgkr> <002f01ceeb46$8758b9a0$960a2ce0$@samsung.com> <1385540365.2417.28.camel@kjgkr> <003001ceebd9$07157380$15405a80$@samsung.com> <1385609608.2417.38.camel@kjgkr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Vlubk-00007D-0G for linux-f2fs-devel@lists.sourceforge.net; Thu, 28 Nov 2013 05:57:48 +0000 Received: from mailout2.samsung.com ([203.254.224.25]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-MD5:128) (Exim 4.76) id 1Vlubi-0000dy-8t for linux-f2fs-devel@lists.sourceforge.net; Thu, 28 Nov 2013 05:57:47 +0000 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MWY0063CLW3BU30@mailout2.samsung.com> for linux-f2fs-devel@lists.sourceforge.net; Thu, 28 Nov 2013 14:57:39 +0900 (KST) In-reply-to: <1385609608.2417.38.camel@kjgkr> Content-language: zh-cn List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: jaegeuk.kim@samsung.com Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net SGksCgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogSmFlZ2V1ayBLaW0gW21h aWx0bzpqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbV0KPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIg MjgsIDIwMTMgMTE6MzMgQU0KPiBUbzogQ2hhbyBZdQo+IENjOiBsaW51eC1mc2RldmVsQHZnZXIu a2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtZjJmcy1kZXZl bEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ7ICfosK3lp50nCj4gU3ViamVjdDogUkU6IFtmMmZzLWRl dl0gW1BBVENIXSBmMmZzOiByZWFkYWhlYWQgY29udGlndW91cyBwYWdlcyBmb3IgcmVzdG9yZV9u b2RlX3N1bW1hcnkKPiAKPiBIaSwKPiAKPiAyMDEzLTExLTI4ICjrqqkpLCAwOToyNiArMDgwMCwg Q2hhbyBZdToKPiA+IEhpIEtpbSwKPiA+Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t Cj4gPiA+IEZyb206IEphZWdldWsgS2ltIFttYWlsdG86amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb21d Cj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMjcsIDIwMTMgNDoxOSBQTQo+ID4gPiBU bzogQ2hhbyBZdQo+ID4gPiBDYzogbGludXgtZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9y Z2UubmV0OyAn6LCt5aedJwo+ID4gPiBTdWJqZWN0OiBSRTogW2YyZnMtZGV2XSBbUEFUQ0hdIGYy ZnM6IHJlYWRhaGVhZCBjb250aWd1b3VzIHBhZ2VzIGZvciByZXN0b3JlX25vZGVfc3VtbWFyeQo+ ID4gPgo+ID4gPiBIaSwKPiA+ID4KPiA+ID4gMjAxMy0xMS0yNyAo7IiYKSwgMTU6NTggKzA4MDAs IENoYW8gWXU6Cj4gPiA+ID4gSGkgS2ltLAo+ID4gPiA+Cj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQo+ID4gPiA+ID4gRnJvbTogSmFlZ2V1ayBLaW0gW21haWx0bzpqYWVnZXVr LmtpbUBzYW1zdW5nLmNvbV0KPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMjcs IDIwMTMgMTozMCBQTQo+ID4gPiA+ID4gVG86IENoYW8gWXUKPiA+ID4gPiA+IENjOiBsaW51eC1m c2RldmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGlu dXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ7IOiwreWnnQo+ID4gPiA+ID4gU3Vi amVjdDogUmU6IFtmMmZzLWRldl0gW1BBVENIXSBmMmZzOiByZWFkYWhlYWQgY29udGlndW91cyBw YWdlcyBmb3IgcmVzdG9yZV9ub2RlX3N1bW1hcnkKPiA+ID4gPiA+Cj4gPiA+ID4gPiBIaSBDaGFv LAo+ID4gPiA+ID4KPiA+ID4gPiA+IEl0IHNlZW1zIHRoYXQgd2UgYWxyZWFkeSBoYXZlIGEgcmVh ZGFoZWQgZnVuY3Rpb24gZm9yIG5vZGUgcGFnZXMsCj4gPiA+ID4gPiByYV9ub2RlX3BhZ2UoKS4K PiA+ID4gPiA+IFNvLCB3ZSBkb24ndCBtYWtlIGEgcGFnZSBsaXN0IGZvciB0aGlzLCBidXQgY2Fu IHVzZSB0aGUgbm9kZV9pbm9kZSdzCj4gPiA+ID4gPiBwYWdlIGNhY2hlLgo+ID4gPiA+Cj4gPiA+ ID4gU28geW91IG1lYW4gaXQncyB3YXN0ZSB0byByZWxlYXNlIHBhZ2UgbGlzdCB3aXRoIHVwZGF0 ZWQgZGF0YSBhZnRlciB3ZQo+ID4gPiA+IGZpbmlzaCB3b3JrIGluIHJlc3RvcmVfbm9kZV9zdW1t YXJ5LCByaWdodD8KPiA+ID4KPiA+ID4gUmlnaHQuCj4gPgo+ID4gU28gaG93IGFib3V0IGFkZCBh bGwgcGFnZXMgb2YgcGFnZSBsaXN0IHRvIG5vZGVfaW5vZGUncyBhZGRyZXNzIHNwYWNlIGJ5Cj4g PiBhZGRfdG9fcGFnZV9jYWNoZV9scnUoKSB3aXRoIGFyZyBzdW1fZW50cnktPm5pZD8KPiAKPiBJ IGRvbid0IHRoaW5rIGl0J3MgcHJvcGVyIHdheSB0byB1c2UgYWRkX3RvX3BhZ2VfY2FjaGVfbHJ1 KCkgZGlyZWN0bHkuCgpUaGlzIGlzIHRoZSB3YXkgdXNlZCBpbiBWTSByZWFkYWhlYWQoaS5lLiBy ZWFkX3BhZ2VzL21wYWdlX3JlYWRwYWdlcy8KcmVhZF9jYWNoZV9wYWdlcykuClNvIHdoYXQgeW91 IHdvcnJ5IGFib3V0IGlzIHRoYXQgdXNpbmcgbG9uZWx5IGFkZF90b19wYWdlX2NhY2hlX2xydSgp Cm1heSBjYXVzZSBleGNlcHRpb24sIGlzIGl0PwoKPiAKPiA+Cj4gPiA+Cj4gPiA+ID4KPiA+ID4g PiA+Cj4gPiA+ID4gPiBTbyBob3cgYWJvdXQgd3JpdGluZyByYV9ub2RlX3BhZ2VzKCkgd2hpY2gg dXNlIHRoZSBub2RlX2lub2RlJ3MgcGFnZQo+ID4gPiA+ID4gY2FjaGU/Cj4gPiA+ID4KPiA+ID4g PiBIbW0sIHNvIHJhX25vZGVfcGFnZXMgaXMgaW50cm9kdWNlZCBmb3IgcmVhZCBub2RlX2lub2Rl J3MgcGFnZXMgd2hpY2ggYXJlCj4gPiA+ID4gbG9naWNhbCBjb250aWd1b3VzbHk/IGFuZCBpdCBh bHNvIGNvdWxkIHRha2UgcGxhY2Ugb2YgcmFfbm9kZV9wYWdlPwo+ID4gPgo+ID4gPiBBaC4gVGhl IHJhX25vZGVfcGFnZSgpIHJlYWQgYSBub2RlIHBhZ2UgYWhlYWQgZm9yIGEgZ2l2ZW4gbm9kZSBp ZC4KPiA+ID4gU28gaXQgZG9lc24ndCBtYXRjaCBleGFjdGx5IGJldHdlZW4gcmFfbm9kZV9wYWdl KCkgYW5kIHJhX25vZGVfcGFnZXMoKQo+ID4gPiB0aGF0IEkgc3VnZ2VzdGVkLgo+ID4gPiBTbyBo b3cgYWJvdXQgcmVhZGluZyBub2RlIHBhZ2VzIGFuZCB0aGVuIGNhY2hpbmcgc29tZSBvZiB0aGVt IGluIHRoZQo+ID4gPiBwYWdlIGNhY2hlLCBub2RlX2lub2RlJ3MgYWRkcmVzcyBzcGFjZT8KPiA+ Cj4gPiBHb3QgaXQsCj4gPiBJZiB3ZSBkbyBub3QgdXNlIHRoZSBtZXRob2QgYWJvdmUsIHdlIHNo b3VsZCBzZWFyY2ggdGhlIE5BVCBmb3IgbmlkIG51bWJlcgo+ID4gYXMgdGhlIGluZGV4IG9mIG5v ZGVfaW5vZGUncyBwYWdlIGJ5IHRoZSBzcGVjaWZpZWQgbm9kZSBwYWdlIGJsa2FkZHIsIHRoYXQg Y29zdHMKPiA+IGEgbG90Lgo+ID4gSG93IGRvIHlvdSB0aGluaz8KPiAKPiAxLiBncmFiX2NhY2hl X3BhZ2Uobm9kZV9mb290ZXItPm5pZCk7Cj4gMi4gbWVtY3B5KCk7Cj4gMy4gU2V0UGFnZVVwdG9k YXRlKCk7Cj4gNC4gZjJmc19wdXRfcGFnZSgpOwoKSXQgY291bGQgYmUuCgpUaGlzIG1ha2UgcmFf bm9kZV9wYWdlcygpIHN5bmNocm9uaXplZCwgYmVjYXVzZSB3ZSBzaG91bGQgcmVhZCBub2RlX2Zv b3Rlci0+bmlkCmZyb20gdXBkYXRlZCBub2RlIHBhZ2UgYmVmb3JlIHdlIGNhY2hlIG5vZGUgcGFn ZXMsIGFuZCB3ZSB3aWxsIHN0aWxsIHVzZSBwYWdlIGxpc3QgdG8KcGFzcyB0aGUgdXBkYXRlZCBw YWdlLgoKV2h5IG5vdCBpbnRyb2R1Y2UgZjJmc19jYWNoZV9ub2RlX3BhZ2VzKCkgaW5jbHVkZSB5 b3VyIGNvZGUgdG8gY2FjaGUgbm9kZSBwYWdlcyBhZnRlcgpyYV9ub2RlX3BhZ2VzKCk/CgpUaGFu a3MsCll1Cgo+IAo+IFRoYW5rcywKPiAKPiA+Cj4gPiA+Cj4gPiA+IFRoYW5rcywKPiA+ID4KPiA+ ID4gPgo+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhhbmtzLAo+ID4gPiA+ID4KPiA+ID4g PiA+IDIwMTMtMTEtMjIgKOq4iCksIDE1OjQ4ICswODAwLCBDaGFvIFl1Ogo+ID4gPiA+ID4gPiBJ ZiBjcCBoYXMgbm8gQ1BfVU1PVU5UX0ZMQUcsIHdlIHdpbGwgcmVhZCBhbGwgcGFnZXMgaW4gd2hv bGUgbm9kZSBzZWdtZW50Cj4gPiA+ID4gPiA+IG9uZSBieSBvbmUsIGl0IG1ha2VzIGxvdyBwZXJm b3JtYW5jZS4gU28gbGV0J3MgbWVyZ2UgY29udGlndW91cyBwYWdlcyBhbmQKPiA+ID4gPiA+ID4g cmVhZGFoZWFkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IENoYW8gWXUgPGNoYW8yLnl1QHNhbXN1bmcuY29tPgo+ID4gPiA+ID4g PiAtLS0KPiA+ID4gPiA+ID4gIGZzL2YyZnMvbm9kZS5jIHwgICA4OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ID4gPiAgMSBm aWxlIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9ub2RlLmMgYi9mcy9mMmZzL25vZGUu Ywo+ID4gPiA+ID4gPiBpbmRleCA0YWM0MTUwLi44MWU3MDRhIDEwMDY0NAo+ID4gPiA+ID4gPiAt LS0gYS9mcy9mMmZzL25vZGUuYwo+ID4gPiA+ID4gPiArKysgYi9mcy9mMmZzL25vZGUuYwo+ID4g PiA+ID4gPiBAQCAtMTU3Miw0NyArMTU3Miw4NCBAQCBpbnQgcmVjb3Zlcl9pbm9kZV9wYWdlKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHBhZ2UgKnBhZ2UpCj4gPiA+ID4gPiA+ICAJ cmV0dXJuIDA7Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsvKgo+ID4g PiA+ID4gPiArICogcmFfc3VtX3BhZ2VzKCkgbWVyZ2UgY29udGlndW91cyBwYWdlcyBpbnRvIG9u ZSBiaW8gYW5kIHN1Ym1pdC4KPiA+ID4gPiA+ID4gKyAqIHRoZXNlIHByZS1yZWFkZWQgcGFnZXMg YXJlIGxpbmtlZCBpbiBwYWdlcyBsaXN0Lgo+ID4gPiA+ID4gPiArICovCj4gPiA+ID4gPiA+ICtz dGF0aWMgaW50IHJhX3N1bV9wYWdlcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBs aXN0X2hlYWQgKnBhZ2VzLAo+ID4gPiA+ID4gPiArCQkJCWludCBzdGFydCwgaW50IG5ycGFnZXMp Cj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gPiA+ID4g PiA+ICsJaW50IHBhZ2VfaWR4ID0gc3RhcnQ7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlm b3IgKDsgcGFnZV9pZHggPCBzdGFydCArIG5ycGFnZXM7IHBhZ2VfaWR4KyspIHsKPiA+ID4gPiA+ ID4gKwkJLyogYWxsb2MgdGVtcG9yYWwgcGFnZSBmb3IgcmVhZCBub2RlIHN1bW1hcnkgaW5mbyov Cj4gPiA+ID4gPiA+ICsJCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9OT0ZTIHwgX19HRlBfWkVSTyk7 Cj4gPiA+ID4gPiA+ICsJCWlmICghcGFnZSkgewo+ID4gPiA+ID4gPiArCQkJc3RydWN0IHBhZ2Ug KnRtcDsKPiA+ID4gPiA+ID4gKwkJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWdlLCB0bXAs IHBhZ2VzLCBscnUpIHsKPiA+ID4gPiA+ID4gKwkJCQlsaXN0X2RlbCgmcGFnZS0+bHJ1KTsKPiA+ ID4gPiA+ID4gKwkJCQl1bmxvY2tfcGFnZShwYWdlKTsKPiA+ID4gPiA+ID4gKwkJCQlfX2ZyZWVf cGFnZXMocGFnZSwgMCk7Cj4gPiA+ID4gPiA+ICsJCQl9Cj4gPiA+ID4gPiA+ICsJCQlyZXR1cm4g LUVOT01FTTsKPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCWxv Y2tfcGFnZShwYWdlKTsKPiA+ID4gPiA+ID4gKwkJcGFnZS0+aW5kZXggPSBwYWdlX2lkeDsKPiA+ ID4gPiA+ID4gKwkJbGlzdF9hZGRfdGFpbCgmcGFnZS0+bHJ1LCBwYWdlcyk7Cj4gPiA+ID4gPiA+ ICsJfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdl LCBwYWdlcywgbHJ1KQo+ID4gPiA+ID4gPiArCQlzdWJtaXRfcmVhZF9wYWdlKHNiaSwgcGFnZSwg cGFnZS0+aW5kZXgsIFJFQURfU1lOQyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlmMmZz X3N1Ym1pdF9yZWFkX2JpbyhzYmksIFJFQURfU1lOQyk7Cj4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7 Cj4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gIGludCByZXN0b3JlX25v ZGVfc3VtbWFyeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiA+ID4gPiA+ICAJCQl1bnNp Z25lZCBpbnQgc2Vnbm8sIHN0cnVjdCBmMmZzX3N1bW1hcnlfYmxvY2sgKnN1bSkKPiA+ID4gPiA+ ID4gIHsKPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZjJmc19ub2RlICpybjsKPiA+ID4gPiA+ID4gIAlz dHJ1Y3QgZjJmc19zdW1tYXJ5ICpzdW1fZW50cnk7Cj4gPiA+ID4gPiA+IC0Jc3RydWN0IHBhZ2Ug KnBhZ2U7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHBhZ2UgKnBhZ2UsICp0bXA7Cj4gPiA+ID4gPiA+ ICAJYmxvY2tfdCBhZGRyOwo+ID4gPiA+ID4gPiAtCWludCBpLCBsYXN0X29mZnNldDsKPiA+ID4g PiA+ID4gLQo+ID4gPiA+ID4gPiAtCS8qIGFsbG9jIHRlbXBvcmFsIHBhZ2UgZm9yIHJlYWQgbm9k ZSAqLwo+ID4gPiA+ID4gPiAtCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9OT0ZTIHwgX19HRlBfWkVS Tyk7Cj4gPiA+ID4gPiA+IC0JaWYgKCFwYWdlKQo+ID4gPiA+ID4gPiAtCQlyZXR1cm4gLUVOT01F TTsKPiA+ID4gPiA+ID4gLQlsb2NrX3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICsJaW50IGJpb19i bG9ja3MgPSBNQVhfQklPX0JMT0NLUyhtYXhfaHdfYmxvY2tzKHNiaSkpOwo+ID4gPiA+ID4gPiAr CWludCBpLCBsYXN0X29mZnNldCwgbnJwYWdlcywgZXJyID0gMDsKPiA+ID4gPiA+ID4gKwlMSVNU X0hFQUQocGFnZV9saXN0KTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gIAkvKiBzY2FuIHRoZSBu b2RlIHNlZ21lbnQgKi8KPiA+ID4gPiA+ID4gIAlsYXN0X29mZnNldCA9IHNiaS0+YmxvY2tzX3Bl cl9zZWc7Cj4gPiA+ID4gPiA+ICAJYWRkciA9IFNUQVJUX0JMT0NLKHNiaSwgc2Vnbm8pOwo+ID4g PiA+ID4gPiAgCXN1bV9lbnRyeSA9ICZzdW0tPmVudHJpZXNbMF07Cj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IC0JZm9yIChpID0gMDsgaSA8IGxhc3Rfb2Zmc2V0OyBpKyssIHN1bV9lbnRyeSsrKSB7 Cj4gPiA+ID4gPiA+IC0JCS8qCj4gPiA+ID4gPiA+IC0JCSAqIEluIG9yZGVyIHRvIHJlYWQgbmV4 dCBub2RlIHBhZ2UsCj4gPiA+ID4gPiA+IC0JCSAqIHdlIG11c3QgY2xlYXIgUGFnZVVwdG9kYXRl IGZsYWcuCj4gPiA+ID4gPiA+IC0JCSAqLwo+ID4gPiA+ID4gPiAtCQlDbGVhclBhZ2VVcHRvZGF0 ZShwYWdlKTsKPiA+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGFzdF9vZmZzZXQ7IGkgKz0g bnJwYWdlcywgYWRkciArPSBucnBhZ2VzKSB7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0JCWlm IChmMmZzX3JlYWRwYWdlKHNiaSwgcGFnZSwgYWRkciwgUkVBRF9TWU5DKSkKPiA+ID4gPiA+ID4g LQkJCWdvdG8gb3V0Owo+ID4gPiA+ID4gPiArCQlucnBhZ2VzID0gbWluKGxhc3Rfb2Zmc2V0IC0g aSwgYmlvX2Jsb2Nrcyk7Cj4gPiA+ID4gPiA+ICsJCS8qIHJlYWQgYWhlYWQgbm9kZSBwYWdlcyAq Lwo+ID4gPiA+ID4gPiArCQllcnIgPSByYV9zdW1fcGFnZXMoc2JpLCAmcGFnZV9saXN0LCBhZGRy LCBucnBhZ2VzKTsKPiA+ID4gPiA+ID4gKwkJaWYgKGVycikKPiA+ID4gPiA+ID4gKwkJCXJldHVy biBlcnI7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0JCWxvY2tfcGFnZShwYWdlKTsKPiA+ID4g PiA+ID4gLQkJcm4gPSBGMkZTX05PREUocGFnZSk7Cj4gPiA+ID4gPiA+IC0JCXN1bV9lbnRyeS0+ bmlkID0gcm4tPmZvb3Rlci5uaWQ7Cj4gPiA+ID4gPiA+IC0JCXN1bV9lbnRyeS0+dmVyc2lvbiA9 IDA7Cj4gPiA+ID4gPiA+IC0JCXN1bV9lbnRyeS0+b2ZzX2luX25vZGUgPSAwOwo+ID4gPiA+ID4g PiAtCQlhZGRyKys7Cj4gPiA+ID4gPiA+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWdl LCB0bXAsICZwYWdlX2xpc3QsIGxydSkgewo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCQls b2NrX3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICsJCQlpZihQYWdlVXB0b2RhdGUocGFnZSkpIHsK PiA+ID4gPiA+ID4gKwkJCQlybiA9IEYyRlNfTk9ERShwYWdlKTsKPiA+ID4gPiA+ID4gKwkJCQlz dW1fZW50cnktPm5pZCA9IHJuLT5mb290ZXIubmlkOwo+ID4gPiA+ID4gPiArCQkJCXN1bV9lbnRy eS0+dmVyc2lvbiA9IDA7Cj4gPiA+ID4gPiA+ICsJCQkJc3VtX2VudHJ5LT5vZnNfaW5fbm9kZSA9 IDA7Cj4gPiA+ID4gPiA+ICsJCQkJc3VtX2VudHJ5Kys7Cj4gPiA+ID4gPiA+ICsJCQl9IGVsc2Ug ewo+ID4gPiA+ID4gPiArCQkJCWVyciA9IC1FSU87Cj4gPiA+ID4gPiA+ICsJCQl9Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gKwkJCWxpc3RfZGVsKCZwYWdlLT5scnUpOwo+ID4gPiA+ID4gPiAr CQkJdW5sb2NrX3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+ICsJCQlfX2ZyZWVfcGFnZXMocGFnZSwg MCk7Cj4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+IC0JdW5sb2Nr X3BhZ2UocGFnZSk7Cj4gPiA+ID4gPiA+IC1vdXQ6Cj4gPiA+ID4gPiA+IC0JX19mcmVlX3BhZ2Vz KHBhZ2UsIDApOwo+ID4gPiA+ID4gPiAtCXJldHVybiAwOwo+ID4gPiA+ID4gPiArCXJldHVybiBl cnI7Cj4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICBzdGF0aWMgYm9vbCBm bHVzaF9uYXRzX2luX2pvdXJuYWwoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gPiA+ID4K PiA+ID4gPiA+IC0tCj4gPiA+ID4gPiBKYWVnZXVrIEtpbQo+ID4gPiA+ID4gU2Ftc3VuZwo+ID4g PiA+Cj4gPiA+Cj4gPiA+IC0tCj4gPiA+IEphZWdldWsgS2ltCj4gPiA+IFNhbXN1bmcKPiA+Cj4g Cj4gLS0KPiBKYWVnZXVrIEtpbQo+IFNhbXN1bmcKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUmFw aWRseSB0cm91Ymxlc2hvb3QgcHJvYmxlbXMgYmVmb3JlIHRoZXkgYWZmZWN0IHlvdXIgYnVzaW5l c3MuIE1vc3QgSVQgCm9yZ2FuaXphdGlvbnMgZG9uJ3QgaGF2ZSBhIGNsZWFyIHBpY3R1cmUgb2Yg aG93IGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlIAphZmZlY3RzIHRoZWlyIHJldmVudWUuIFdpdGgg QXBwRHluYW1pY3MsIHlvdSBnZXQgMTAwJSB2aXNpYmlsaXR5IGludG8geW91ciAKSmF2YSwuTkVU LCAmIFBIUCBhcHBsaWNhdGlvbi4gU3RhcnQgeW91ciAxNS1kYXkgRlJFRSBUUklBTCBvZiBBcHBE eW5hbWljcyBQcm8hCmh0dHA6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Nsaz9p ZD04NDM0OTM1MSZpdT0vNDE0MC9vc3RnLmNsa3RyawpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51 eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZv cmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751549Ab3K1F5n (ORCPT ); Thu, 28 Nov 2013 00:57:43 -0500 Received: from mailout2.samsung.com ([203.254.224.25]:33666 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750952Ab3K1F5k convert rfc822-to-8bit (ORCPT ); Thu, 28 Nov 2013 00:57:40 -0500 X-AuditID: cbfee61a-b7f316d000007e34-bd-5296db53da3c From: Chao Yu To: jaegeuk.kim@samsung.com Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, =?utf-8?B?J+iwreWnnSc=?= References: <000101cee757$6f3b4790$4db1d6b0$@samsung.com> <1385530195.2417.22.camel@kjgkr> <002f01ceeb46$8758b9a0$960a2ce0$@samsung.com> <1385540365.2417.28.camel@kjgkr> <003001ceebd9$07157380$15405a80$@samsung.com> <1385609608.2417.38.camel@kjgkr> In-reply-to: <1385609608.2417.38.camel@kjgkr> Subject: RE: [f2fs-dev] [PATCH] f2fs: readahead contiguous pages for restore_node_summary Date: Thu, 28 Nov 2013 13:56:43 +0800 Message-id: <003101ceebfe$bab50890$301f19b0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 14.0 Thread-index: AQLo/dmhZfpHUVdsz0A5xHDiq3ZS0QHeqe7fAe9aYegCtYwBoQJLzP1jAnAH0cuXq/deUA== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFLMWRmVeSWpSXmKPExsVy+t9jAd3g29OCDGa+4LG4vusvk8WlRe4W e/aeZLG4vGsOm0XrwvPMDqweuxd8ZvLo27KK0ePzJrkA5igum5TUnMyy1CJ9uwSujC8ty1kK HrlUdL1by97AuMuoi5GTQ0LAROLe9itsELaYxIV764FsLg4hgUWMEu3/X7NAOD8YJVp3rgOr YhNQkVje8Z8JxBYRkJaY9WkeWBGzwGxGiZ4vzxhBEkIC/xglfrzWAbE5BXQlbs9oAYsLC0RL vHvUww5iswioShz8ehYszitgKdFxeSmULSjxY/I9oKEcQEPVJaZMyQUJMwtoSzx5d4EV4lIF iR1nXzNC3BAhMW12FytEjbjExiO3WCYwCs1CMmkWwqRZSCbNQtKxgJFlFaNoakFyQXFSeq6h XnFibnFpXrpecn7uJkZwDDyT2sG4ssHiEKMAB6MSD6+EzrQgIdbEsuLK3EOMEhzMSiK8CsVA Id6UxMqq1KL8+KLSnNTiQ4zSHCxK4rwHWq0DhQTSE0tSs1NTC1KLYLJMHJxSDYxqZo7xs++t PGYqmqb25pk45wn1qk8Rx/+pV+nu8PjO1XjPjOvH74V3AvYunbryvOln598bj2xs09mt8n1S dN5hXqEfv7rqX+hlK7xR1l6b3ewR1pKgd3GltbrsMYe26/bGxR9OZaRH/7h6PXfN9+qKfcb6 e64Inpu/dSnrtF8HAzJv+zN6G7EpsRRnJBpqMRcVJwIARGepj30CAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, > -----Original Message----- > From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com] > Sent: Thursday, November 28, 2013 11:33 AM > To: Chao Yu > Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; '谭姝' > Subject: RE: [f2fs-dev] [PATCH] f2fs: readahead contiguous pages for restore_node_summary > > Hi, > > 2013-11-28 (목), 09:26 +0800, Chao Yu: > > Hi Kim, > > > > > -----Original Message----- > > > From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com] > > > Sent: Wednesday, November 27, 2013 4:19 PM > > > To: Chao Yu > > > Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; '谭姝' > > > Subject: RE: [f2fs-dev] [PATCH] f2fs: readahead contiguous pages for restore_node_summary > > > > > > Hi, > > > > > > 2013-11-27 (수), 15:58 +0800, Chao Yu: > > > > Hi Kim, > > > > > > > > > -----Original Message----- > > > > > From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com] > > > > > Sent: Wednesday, November 27, 2013 1:30 PM > > > > > To: Chao Yu > > > > > Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; 谭姝 > > > > > Subject: Re: [f2fs-dev] [PATCH] f2fs: readahead contiguous pages for restore_node_summary > > > > > > > > > > Hi Chao, > > > > > > > > > > It seems that we already have a readahed function for node pages, > > > > > ra_node_page(). > > > > > So, we don't make a page list for this, but can use the node_inode's > > > > > page cache. > > > > > > > > So you mean it's waste to release page list with updated data after we > > > > finish work in restore_node_summary, right? > > > > > > Right. > > > > So how about add all pages of page list to node_inode's address space by > > add_to_page_cache_lru() with arg sum_entry->nid? > > I don't think it's proper way to use add_to_page_cache_lru() directly. This is the way used in VM readahead(i.e. read_pages/mpage_readpages/ read_cache_pages). So what you worry about is that using lonely add_to_page_cache_lru() may cause exception, is it? > > > > > > > > > > > > > > > > > > > > So how about writing ra_node_pages() which use the node_inode's page > > > > > cache? > > > > > > > > Hmm, so ra_node_pages is introduced for read node_inode's pages which are > > > > logical contiguously? and it also could take place of ra_node_page? > > > > > > Ah. The ra_node_page() read a node page ahead for a given node id. > > > So it doesn't match exactly between ra_node_page() and ra_node_pages() > > > that I suggested. > > > So how about reading node pages and then caching some of them in the > > > page cache, node_inode's address space? > > > > Got it, > > If we do not use the method above, we should search the NAT for nid number > > as the index of node_inode's page by the specified node page blkaddr, that costs > > a lot. > > How do you think? > > 1. grab_cache_page(node_footer->nid); > 2. memcpy(); > 3. SetPageUptodate(); > 4. f2fs_put_page(); It could be. This make ra_node_pages() synchronized, because we should read node_footer->nid from updated node page before we cache node pages, and we will still use page list to pass the updated page. Why not introduce f2fs_cache_node_pages() include your code to cache node pages after ra_node_pages()? Thanks, Yu > > Thanks, > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > 2013-11-22 (금), 15:48 +0800, Chao Yu: > > > > > > If cp has no CP_UMOUNT_FLAG, we will read all pages in whole node segment > > > > > > one by one, it makes low performance. So let's merge contiguous pages and > > > > > > readahead for better performance. > > > > > > > > > > > > Signed-off-by: Chao Yu > > > > > > --- > > > > > > fs/f2fs/node.c | 89 +++++++++++++++++++++++++++++++++++++++----------------- > > > > > > 1 file changed, 63 insertions(+), 26 deletions(-) > > > > > > > > > > > > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c > > > > > > index 4ac4150..81e704a 100644 > > > > > > --- a/fs/f2fs/node.c > > > > > > +++ b/fs/f2fs/node.c > > > > > > @@ -1572,47 +1572,84 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) > > > > > > return 0; > > > > > > } > > > > > > > > > > > > +/* > > > > > > + * ra_sum_pages() merge contiguous pages into one bio and submit. > > > > > > + * these pre-readed pages are linked in pages list. > > > > > > + */ > > > > > > +static int ra_sum_pages(struct f2fs_sb_info *sbi, struct list_head *pages, > > > > > > + int start, int nrpages) > > > > > > +{ > > > > > > + struct page *page; > > > > > > + int page_idx = start; > > > > > > + > > > > > > + for (; page_idx < start + nrpages; page_idx++) { > > > > > > + /* alloc temporal page for read node summary info*/ > > > > > > + page = alloc_page(GFP_NOFS | __GFP_ZERO); > > > > > > + if (!page) { > > > > > > + struct page *tmp; > > > > > > + list_for_each_entry_safe(page, tmp, pages, lru) { > > > > > > + list_del(&page->lru); > > > > > > + unlock_page(page); > > > > > > + __free_pages(page, 0); > > > > > > + } > > > > > > + return -ENOMEM; > > > > > > + } > > > > > > + > > > > > > + lock_page(page); > > > > > > + page->index = page_idx; > > > > > > + list_add_tail(&page->lru, pages); > > > > > > + } > > > > > > + > > > > > > + list_for_each_entry(page, pages, lru) > > > > > > + submit_read_page(sbi, page, page->index, READ_SYNC); > > > > > > + > > > > > > + f2fs_submit_read_bio(sbi, READ_SYNC); > > > > > > + return 0; > > > > > > +} > > > > > > + > > > > > > int restore_node_summary(struct f2fs_sb_info *sbi, > > > > > > unsigned int segno, struct f2fs_summary_block *sum) > > > > > > { > > > > > > struct f2fs_node *rn; > > > > > > struct f2fs_summary *sum_entry; > > > > > > - struct page *page; > > > > > > + struct page *page, *tmp; > > > > > > block_t addr; > > > > > > - int i, last_offset; > > > > > > - > > > > > > - /* alloc temporal page for read node */ > > > > > > - page = alloc_page(GFP_NOFS | __GFP_ZERO); > > > > > > - if (!page) > > > > > > - return -ENOMEM; > > > > > > - lock_page(page); > > > > > > + int bio_blocks = MAX_BIO_BLOCKS(max_hw_blocks(sbi)); > > > > > > + int i, last_offset, nrpages, err = 0; > > > > > > + LIST_HEAD(page_list); > > > > > > > > > > > > /* scan the node segment */ > > > > > > last_offset = sbi->blocks_per_seg; > > > > > > addr = START_BLOCK(sbi, segno); > > > > > > sum_entry = &sum->entries[0]; > > > > > > > > > > > > - for (i = 0; i < last_offset; i++, sum_entry++) { > > > > > > - /* > > > > > > - * In order to read next node page, > > > > > > - * we must clear PageUptodate flag. > > > > > > - */ > > > > > > - ClearPageUptodate(page); > > > > > > + for (i = 0; i < last_offset; i += nrpages, addr += nrpages) { > > > > > > > > > > > > - if (f2fs_readpage(sbi, page, addr, READ_SYNC)) > > > > > > - goto out; > > > > > > + nrpages = min(last_offset - i, bio_blocks); > > > > > > + /* read ahead node pages */ > > > > > > + err = ra_sum_pages(sbi, &page_list, addr, nrpages); > > > > > > + if (err) > > > > > > + return err; > > > > > > > > > > > > - lock_page(page); > > > > > > - rn = F2FS_NODE(page); > > > > > > - sum_entry->nid = rn->footer.nid; > > > > > > - sum_entry->version = 0; > > > > > > - sum_entry->ofs_in_node = 0; > > > > > > - addr++; > > > > > > + list_for_each_entry_safe(page, tmp, &page_list, lru) { > > > > > > + > > > > > > + lock_page(page); > > > > > > + if(PageUptodate(page)) { > > > > > > + rn = F2FS_NODE(page); > > > > > > + sum_entry->nid = rn->footer.nid; > > > > > > + sum_entry->version = 0; > > > > > > + sum_entry->ofs_in_node = 0; > > > > > > + sum_entry++; > > > > > > + } else { > > > > > > + err = -EIO; > > > > > > + } > > > > > > + > > > > > > + list_del(&page->lru); > > > > > > + unlock_page(page); > > > > > > + __free_pages(page, 0); > > > > > > + } > > > > > > } > > > > > > - unlock_page(page); > > > > > > -out: > > > > > > - __free_pages(page, 0); > > > > > > - return 0; > > > > > > + return err; > > > > > > } > > > > > > > > > > > > static bool flush_nats_in_journal(struct f2fs_sb_info *sbi) > > > > > > > > > > -- > > > > > Jaegeuk Kim > > > > > Samsung > > > > > > > > > > -- > > > Jaegeuk Kim > > > Samsung > > > > -- > Jaegeuk Kim > Samsung