From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Yu Subject: Re: [PATCH V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance Date: Thu, 21 Nov 2013 13:46:21 +0800 Message-ID: <000101cee67d$2af43130$80dc9390$@samsung.com> References: <000101cee293$4eae78d0$ec0b6a70$@samsung.com> <5289F6E3.3020607@cn.fujitsu.com> <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> <528C8308.7040604@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1VjN79-00022a-3I for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 05:47:43 +0000 Received: from mailout3.samsung.com ([203.254.224.33]) by sog-mx-2.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VjN73-00031i-H0 for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 05:47:43 +0000 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MWL000YSMR7TMF0@mailout3.samsung.com> for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 14:47:31 +0900 (KST) In-reply-to: <528C8308.7040604@cn.fujitsu.com> 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: 'Gu Zheng' Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net SGkgR3UsCgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogR3UgWmhlbmcgW21h aWx0bzpndXouZm5zdEBjbi5mdWppdHN1LmNvbV0KPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVy IDIwLCAyMDEzIDU6MzggUE0KPiBUbzogQ2hhbyBZdQo+IENjOiAnPz8/JzsgbGludXgtZnNkZXZl bEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWYy ZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0OyAnzLfmrScKPiBTdWJqZWN0OiBSZTogW2Yy ZnMtZGV2XSBbUEFUQ0ggVjIgMi8yXSBmMmZzOiByZWFkIGNvbnRpZ3VvdXMgc2l0IGVudHJ5IHBh Z2VzIGJ5IG1lcmdpbmcgZm9yIG1vdW50IHBlcmZvcm1hbmNlCj4gCj4gSGkgWXUsCj4gT24gMTEv MjAvMjAxMyAwMTozNyBQTSwgQ2hhbyBZdSB3cm90ZToKPiAKPiA+IEhpIEd1LAo+ID4KPiA+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+IEZyb206IEd1IFpoZW5nIFttYWlsdG86Z3V6 LmZuc3RAY24uZnVqaXRzdS5jb21dCj4gPj4gU2VudDogTW9uZGF5LCBOb3ZlbWJlciAxOCwgMjAx MyA3OjE2IFBNCj4gPj4gVG86IENoYW8gWXUKPiA+PiBDYzogJz8/Pyc7IGxpbnV4LWZzZGV2ZWxA dmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1mMmZz LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldDsgzLcK5q0KPiA+PiBTdWJqZWN0OiBSZTogW2Yy ZnMtZGV2XSBbUEFUQ0ggVjIgMi8yXSBmMmZzOiByZWFkIGNvbnRpZ3VvdXMgc2l0IGVudHJ5IHBh Z2VzIGJ5IG1lcmdpbmcgZm9yIG1vdW50IHBlcmZvcm1hbmNlCj4gPj4KPiA+PiBIaSBZdSwKPiA+ PiBPbmUgbW9yZSBjb21tZW50LCBwbGVhc2UgcmVmZXIgdG8gaW5saW5lLgo+ID4+IE9uIDExLzE2 LzIwMTMgMDI6MTUgUE0sIENoYW8gWXUgd3JvdGU6Cj4gPj4KPiA+Pj4gUHJldmlvdXNseSB3ZSBy ZWFkIHNpdCBlbnRyaWVzIHBhZ2Ugb25lIGJ5IG9uZSwgdGhpcyBtZXRob2QgbG9zdCB0aGUgY2hh bmNlIG9mIHJlYWRpbmcgY29udGlndW91cyBwYWdlIHRvZ2V0aGVyLgo+ID4+PiBTbyB3ZSByZWFk IHBhZ2VzIGFzIGNvbnRpZ3VvdXMgYXMgcG9zc2libGUgZm9yIGJldHRlciBtb3VudCBwZXJmb3Jt YW5jZS4KPiA+Pj4KPiA+Pj4gdjEtLT52MjoKPiA+Pj4gIG8gbWVyZ2UganVkZ2VtZW50cy91c2Ug J0NvbnRpbnVlJyBvciAnQnJlYWsnIGluc3RlYWQgb2YgJ0dvdG8nIGFzIEd1IFpoZW5nIHN1Z2dl c3RlZC4KPiA+Pj4gIG8gYWRkIG1hcmtfcGFnZV9hY2Nlc3NlZCAoKSBiZWZvcmUgcmVsZWFzZSBw YWdlIHRvIGRlbGF5IFZNIHJlY2xhaW1pbmcgdGhlbS4KPiA+Pj4KPiA+Pj4gU2lnbmVkLW9mZi1i eTogQ2hhbyBZdSA8Y2hhbzIueXVAc2Ftc3VuZy5jb20+Cj4gPj4+IC0tLQo+ID4+PiAgZnMvZjJm cy9zZWdtZW50LmMgfCAgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tCj4gPj4+ICBmcy9mMmZzL3NlZ21lbnQuaCB8ICAgIDIgKwo+ID4+PiAg MiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPiA+Pj4K PiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc2VnbWVudC5jIGIvZnMvZjJmcy9zZWdtZW50LmMK PiA+Pj4gaW5kZXggZmEyODRkMy4uNjU2ZmU0MCAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9z ZWdtZW50LmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gQEAgLTE0LDYgKzE0 LDcgQEAKPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KPiA+Pj4gICNpbmNsdWRlIDxs aW51eC9wcmVmZXRjaC5oPgo+ID4+PiAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPiA+Pj4g KyNpbmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4gPj4+Cj4gPj4+ICAjaW5jbHVkZSAiZjJmcy5oIgo+ ID4+PiAgI2luY2x1ZGUgInNlZ21lbnQuaCIKPiA+Pj4gQEAgLTE0ODAsNDEgKzE0ODEsOTYgQEAg c3RhdGljIGludCBidWlsZF9jdXJzZWcoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4+PiAg CXJldHVybiByZXN0b3JlX2N1cnNlZ19zdW1tYXJpZXMoc2JpKTsKPiA+Pj4gIH0KPiA+Pj4KPiA+ Pj4gK3N0YXRpYyBpbnQgcmFfc2l0X3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50 IHN0YXJ0LAo+ID4+PiArCQkJCQlpbnQgbnJwYWdlcywgYm9vbCAqaXNfb3JkZXIpCj4gPj4+ICt7 Cj4gPj4+ICsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBzYmktPm1ldGFfaW5vZGUt PmlfbWFwcGluZzsKPiA+Pj4gKwlzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsK PiA+Pj4gKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiA+Pj4gKwlibG9ja190IGJsa19hZGRyOwo+ID4+ PiArCWludCBibGtubyA9IHN0YXJ0LCByZWFkY250ID0gMDsKPiA+Pj4gKwlpbnQgc2l0X2Jsa19j bnQgPSBTSVRfQkxLX0NOVChzYmkpOwo+ID4+PiArCj4gPj4+ICsJZm9yICg7IGJsa25vIDwgc3Rh cnQgKyBucnBhZ2VzICYmIGJsa25vIDwgc2l0X2Jsa19jbnQ7IGJsa25vKyspIHsKPiA+Pj4gKwo+ ID4+PiArCQlpZiAoKCFmMmZzX3Rlc3RfYml0KGJsa25vLCBzaXRfaS0+c2l0X2JpdG1hcCkgXiAh KmlzX29yZGVyKSkgewo+ID4+PiArCQkJKmlzX29yZGVyID0gISppc19vcmRlcjsKPiA+Pj4gKwkJ CWJyZWFrOwo+ID4+PiArCQl9Cj4gPj4+ICsKPiA+Pj4gKwkJYmxrX2FkZHIgPSBzaXRfaS0+c2l0 X2Jhc2VfYWRkciArIGJsa25vOwo+ID4+PiArCQlpZiAoKmlzX29yZGVyKQo+ID4+PiArCQkJYmxr X2FkZHIgKz0gc2l0X2ktPnNpdF9ibG9ja3M7Cj4gPj4+ICtyZXBlYXQ6Cj4gPj4+ICsJCXBhZ2Ug PSBncmFiX2NhY2hlX3BhZ2UobWFwcGluZywgYmxrX2FkZHIpOwo+ID4+PiArCQlpZiAoIXBhZ2Up IHsKPiA+Pj4gKwkJCWNvbmRfcmVzY2hlZCgpOwo+ID4+PiArCQkJZ290byByZXBlYXQ7Cj4gPj4+ ICsJCX0KPiA+Pj4gKwkJaWYgKFBhZ2VVcHRvZGF0ZShwYWdlKSkgewo+ID4+PiArCQkJbWFya19w YWdlX2FjY2Vzc2VkKHBhZ2UpOwo+ID4+PiArCQkJZjJmc19wdXRfcGFnZShwYWdlLCAxKTsKPiA+ Pj4gKwkJCXJlYWRjbnQrKzsKPiA+Pj4gKwkJCWNvbnRpbnVlOwo+ID4+PiArCQl9Cj4gPj4+ICsK PiA+Pj4gKwkJc3VibWl0X3JlYWRfcGFnZShzYmksIHBhZ2UsIGJsa19hZGRyLCBSRUFEX1NZTkMp Owo+ID4+PiArCj4gPj4+ICsJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKPiA+Pj4gKwkJZjJm c19wdXRfcGFnZShwYWdlLCAwKTsKPiA+Pj4gKwkJcmVhZGNudCsrOwo+ID4+PiArCX0KPiA+Pj4g Kwo+ID4+PiArCWYyZnNfc3VibWl0X3JlYWRfYmlvKHNiaSwgUkVBRF9TWU5DKTsKPiA+Pj4gKwly ZXR1cm4gcmVhZGNudDsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgc3RhdGljIHZvaWQgYnVpbGRf c2l0X2VudHJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4+PiAgewo+ID4+PiAgCXN0 cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+ID4+PiAgCXN0cnVjdCBjdXJzZWdf aW5mbyAqY3Vyc2VnID0gQ1VSU0VHX0koc2JpLCBDVVJTRUdfQ09MRF9EQVRBKTsKPiA+Pj4gIAlz dHJ1Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW0gPSBjdXJzZWctPnN1bV9ibGs7Cj4gPj4+IC0J dW5zaWduZWQgaW50IHN0YXJ0Owo+ID4+PiAtCj4gPj4+IC0JZm9yIChzdGFydCA9IDA7IHN0YXJ0 IDwgVE9UQUxfU0VHUyhzYmkpOyBzdGFydCsrKSB7Cj4gPj4+IC0JCXN0cnVjdCBzZWdfZW50cnkg KnNlID0gJnNpdF9pLT5zZW50cmllc1tzdGFydF07Cj4gPj4+IC0JCXN0cnVjdCBmMmZzX3NpdF9i bG9jayAqc2l0X2JsazsKPiA+Pj4gLQkJc3RydWN0IGYyZnNfc2l0X2VudHJ5IHNpdDsKPiA+Pj4g LQkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gPj4+IC0JCWludCBpOwo+ID4+PiArCWJvb2wgaXNfb3Jk ZXIgPSBmMmZzX3Rlc3RfYml0KDAsIHNpdF9pLT5zaXRfYml0bWFwKSA/IHRydWUgOiBmYWxzZTsK PiA+Pj4gKwlpbnQgc2l0X2Jsa19jbnQgPSBTSVRfQkxLX0NOVChzYmkpOwo+ID4+PiArCXVuc2ln bmVkIGludCBpLCBzdGFydCwgZW5kOwo+ID4+PiArCXVuc2lnbmVkIGludCByZWFkZWQsIHN0YXJ0 X2JsayA9IDA7Cj4gPj4+Cj4gPj4+IC0JCW11dGV4X2xvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4 KTsKPiA+Pj4gLQkJZm9yIChpID0gMDsgaSA8IHNpdHNfaW5fY3Vyc3VtKHN1bSk7IGkrKykgewo+ ID4+PiAtCQkJaWYgKGxlMzJfdG9fY3B1KHNlZ25vX2luX2pvdXJuYWwoc3VtLCBpKSkgPT0gc3Rh cnQpIHsKPiA+Pj4gLQkJCQlzaXQgPSBzaXRfaW5fam91cm5hbChzdW0sIGkpOwo+ID4+PiAtCQkJ CW11dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+ID4+PiAtCQkJCWdvdG8gZ290 X2l0Owo+ID4+PiArCWRvIHsKPiA+Pgo+ID4+IEhvdyBhYm91dCB1c2luZyBmaW5kX25leHRfYml0 IHRvIGdldCB0aGUgc3VpdGFibGUgc3RhcnRfYmxrIGlmIHRoZSBuZXh0IGJsawo+ID4+IGlzIG5v dCBvcmRlcmVkIGhlcmU/IEFuZCBpdCBhbHNvIGNhbiBzaW1wbGlmeSB0aGUgbG9naWMgb2YgcmFf c2l0X3BhZ2VzKCkuCj4gPgo+ID4gVGhhdCdzIGEgZ29vZCBpZGVhLgo+ID4gQnV0IEkgdGhvdWdo dCB0aGVyZSBtYXliZSBlbmRpYW5uZXNzIHByb2JsZW0gYmV0d2VlbiB0ZXN0X2JpdCBhbmQKPiA+ IGYyZnNfdGVzdF9iaXQsIHNvIGZpbmRfbmV4dF9iaXQgbWF5IGdldCB3cm9uZyByZXN1bHQuIEFt IEkgcmlnaHQ/Cj4gCj4gSU1PLCBmaW5kX25leHRfYml0IGNhbiBkbyB3ZWxsIHdpdGggZW5kaWFu bmVzcyBpc3N1ZSBpbnRlcm5hbGx5LCBpZgo+IGl0J3Mgbm90IHNvLCB0aGF0IG1heSBiZSBhIHdl YWtuZXNzLgoKUmlnaHQsIEkgbWVhbiB0aGF0IGlmIHdlIHdhbnQgdG8gc2V0IGZpcnN0IHBvc2l0 aW9uIGluIGJpdG1hcCwgCndlIGNsb3VkIHVzZSBmMmZzX3NldF9iaXQoMCwgYml0bWFwKSBvciBz ZXRfYml0KDcsIGJpdG1hcCkuClR3byB0eXBlcyBvZiBpbnRlcmZhY2UgY291bGQgbm90IGJlIHVz ZWQgbWl4ZWRseS4KClNvIGNvdWxkIHdlIHVzZSB7c2V0LHRlc3QsY2xlYXJ9X2JpdCBpbnRlYWQg b2YgZjJmc197c2V0LHRlc3QsY2xlYXJ9X2JpdD8KCj4gT24gdGhlIG90aGVyIHNpZGUsIHdoeSBu b3QgaW50cm9kdWNlIGEgJ2YyZnNfZmluZF9uZXh0X2JpdCcgaWYgaXQncwo+IHNlcmlvdXNseSBu ZWVkZWQ/OikKCkFncmVlZCwgdGhhdCdzIGEgZ29vZCBwb2ludCwgdGhleSB3ZXJlIHJlYWxseSBu ZWVkZWQgZm9yCnVuaWZvcm0gc3R5bGUgYW5kIHJlYWRhYmlsaXR5LgoKPiAKPiBSZWdhcmRzLAo+ IEd1Cj4gCj4gPgo+ID4gVGhhbmtzLAo+ID4gWXUKPiA+Pgo+ID4+IFRoYW5rcywKPiA+PiBHdQo+ ID4+Cj4gPj4+ICsJCXJlYWRlZCA9IHJhX3NpdF9wYWdlcyhzYmksIHN0YXJ0X2Jsaywgc2l0X2Js a19jbnQsICZpc19vcmRlcik7Cj4gPj4+ICsKPiA+Pj4gKwkJc3RhcnQgPSBzdGFydF9ibGsgKiBz aXRfaS0+c2VudHNfcGVyX2Jsb2NrOwo+ID4+PiArCQllbmQgPSAoc3RhcnRfYmxrICsgcmVhZGVk KSAqIHNpdF9pLT5zZW50c19wZXJfYmxvY2s7Cj4gPj4+ICsKPiA+Pj4gKwkJZm9yICg7IHN0YXJ0 IDwgZW5kICYmIHN0YXJ0IDwgVE9UQUxfU0VHUyhzYmkpOyBzdGFydCsrKSB7Cj4gPj4+ICsJCQlz dHJ1Y3Qgc2VnX2VudHJ5ICpzZSA9ICZzaXRfaS0+c2VudHJpZXNbc3RhcnRdOwo+ID4+PiArCQkJ c3RydWN0IGYyZnNfc2l0X2Jsb2NrICpzaXRfYmxrOwo+ID4+PiArCQkJc3RydWN0IGYyZnNfc2l0 X2VudHJ5IHNpdDsKPiA+Pj4gKwkJCXN0cnVjdCBwYWdlICpwYWdlOwo+ID4+PiArCj4gPj4+ICsJ CQltdXRleF9sb2NrKCZjdXJzZWctPmN1cnNlZ19tdXRleCk7Cj4gPj4+ICsJCQlmb3IgKGkgPSAw OyBpIDwgc2l0c19pbl9jdXJzdW0oc3VtKTsgaSsrKSB7Cj4gPj4+ICsJCQkJaWYgKGxlMzJfdG9f Y3B1KHNlZ25vX2luX2pvdXJuYWwoc3VtLCBpKSkgPT0gc3RhcnQpIHsKPiA+Pj4gKwkJCQkJc2l0 ID0gc2l0X2luX2pvdXJuYWwoc3VtLCBpKTsKPiA+Pj4gKwkJCQkJbXV0ZXhfdW5sb2NrKCZjdXJz ZWctPmN1cnNlZ19tdXRleCk7Cj4gPj4+ICsJCQkJCWdvdG8gZ290X2l0Owo+ID4+PiArCQkJCX0K PiA+Pj4gIAkJCX0KPiA+Pj4gLQkJfQo+ID4+PiAtCQltdXRleF91bmxvY2soJmN1cnNlZy0+Y3Vy c2VnX211dGV4KTsKPiA+Pj4gLQkJcGFnZSA9IGdldF9jdXJyZW50X3NpdF9wYWdlKHNiaSwgc3Rh cnQpOwo+ID4+PiAtCQlzaXRfYmxrID0gKHN0cnVjdCBmMmZzX3NpdF9ibG9jayAqKXBhZ2VfYWRk cmVzcyhwYWdlKTsKPiA+Pj4gLQkJc2l0ID0gc2l0X2Jsay0+ZW50cmllc1tTSVRfRU5UUllfT0ZG U0VUKHNpdF9pLCBzdGFydCldOwo+ID4+PiAtCQlmMmZzX3B1dF9wYWdlKHBhZ2UsIDEpOwo+ID4+ PiArCQkJbXV0ZXhfdW5sb2NrKCZjdXJzZWctPmN1cnNlZ19tdXRleCk7Cj4gPj4+ICsKPiA+Pj4g KwkJCXBhZ2UgPSBnZXRfY3VycmVudF9zaXRfcGFnZShzYmksIHN0YXJ0KTsKPiA+Pj4gKwkJCXNp dF9ibGsgPSAoc3RydWN0IGYyZnNfc2l0X2Jsb2NrICopcGFnZV9hZGRyZXNzKHBhZ2UpOwo+ID4+ PiArCQkJc2l0ID0gc2l0X2Jsay0+ZW50cmllc1tTSVRfRU5UUllfT0ZGU0VUKHNpdF9pLCBzdGFy dCldOwo+ID4+PiArCQkJZjJmc19wdXRfcGFnZShwYWdlLCAxKTsKPiA+Pj4gIGdvdF9pdDoKPiA+ Pj4gLQkJY2hlY2tfYmxvY2tfY291bnQoc2JpLCBzdGFydCwgJnNpdCk7Cj4gPj4+IC0JCXNlZ19p bmZvX2Zyb21fcmF3X3NpdChzZSwgJnNpdCk7Cj4gPj4+IC0JCWlmIChzYmktPnNlZ3NfcGVyX3Nl YyA+IDEpIHsKPiA+Pj4gLQkJCXN0cnVjdCBzZWNfZW50cnkgKmUgPSBnZXRfc2VjX2VudHJ5KHNi aSwgc3RhcnQpOwo+ID4+PiAtCQkJZS0+dmFsaWRfYmxvY2tzICs9IHNlLT52YWxpZF9ibG9ja3M7 Cj4gPj4+ICsJCQljaGVja19ibG9ja19jb3VudChzYmksIHN0YXJ0LCAmc2l0KTsKPiA+Pj4gKwkJ CXNlZ19pbmZvX2Zyb21fcmF3X3NpdChzZSwgJnNpdCk7Cj4gPj4+ICsJCQlpZiAoc2JpLT5zZWdz X3Blcl9zZWMgPiAxKSB7Cj4gPj4+ICsJCQkJc3RydWN0IHNlY19lbnRyeSAqZSA9IGdldF9zZWNf ZW50cnkoc2JpLCBzdGFydCk7Cj4gPj4+ICsJCQkJZS0+dmFsaWRfYmxvY2tzICs9IHNlLT52YWxp ZF9ibG9ja3M7Cj4gPj4+ICsJCQl9Cj4gPj4+ICAJCX0KPiA+Pj4gLQl9Cj4gPj4+ICsJCXN0YXJ0 X2JsayArPSByZWFkZWQ7Cj4gPj4KPiA+Pgo+ID4+Cj4gPj4KPiA+Pj4gKwl9IHdoaWxlIChzdGFy dF9ibGsgPCBzaXRfYmxrX2NudCk7Cj4gPj4+ICB9Cj4gPj4+Cj4gPj4+ICBzdGF0aWMgdm9pZCBp bml0X2ZyZWVfc2VnbWFwKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+Pj4gZGlmZiAtLWdp dCBhL2ZzL2YyZnMvc2VnbWVudC5oIGIvZnMvZjJmcy9zZWdtZW50LmgKPiA+Pj4gaW5kZXggMjY5 ZjY5MC4uYWQ1YjlmMSAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+Pj4g KysrIGIvZnMvZjJmcy9zZWdtZW50LmgKPiA+Pj4gQEAgLTgzLDYgKzgzLDggQEAKPiA+Pj4gIAko c2Vnbm8gLyBTSVRfRU5UUllfUEVSX0JMT0NLKQo+ID4+PiAgI2RlZmluZQlTVEFSVF9TRUdOTyhz aXRfaSwgc2Vnbm8pCQlcCj4gPj4+ICAJKFNJVF9CTE9DS19PRkZTRVQoc2l0X2ksIHNlZ25vKSAq IFNJVF9FTlRSWV9QRVJfQkxPQ0spCj4gPj4+ICsjZGVmaW5lIFNJVF9CTEtfQ05UKHNiaSkJCQlc Cj4gPj4+ICsJKChUT1RBTF9TRUdTKHNiaSkgKyBTSVRfRU5UUllfUEVSX0JMT0NLIC0gMSkgLyBT SVRfRU5UUllfUEVSX0JMT0NLKQo+ID4+PiAgI2RlZmluZSBmMmZzX2JpdG1hcF9zaXplKG5yKQkJ CVwKPiA+Pj4gIAkoQklUU19UT19MT05HUyhucikgKiBzaXplb2YodW5zaWduZWQgbG9uZykpCj4g Pj4+ICAjZGVmaW5lIFRPVEFMX1NFR1Moc2JpKQkoU01fSShzYmkpLT5tYWluX3NlZ21lbnRzKQo+ ID4KPiA+Cj4gPgo+IAo+IAo+ID0KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU2hhcGUgdGhlIE1v YmlsZSBFeHBlcmllbmNlOiBGcmVlIFN1YnNjcmlwdGlvbgpTb2Z0d2FyZSBleHBlcnRzIGFuZCBk ZXZlbG9wZXJzOiBCZSBhdCB0aGUgZm9yZWZyb250IG9mIHRlY2ggaW5ub3ZhdGlvbi4KSW50ZWwo UikgU29mdHdhcmUgQWRyZW5hbGluZSBkZWxpdmVycyBzdHJhdGVnaWMgaW5zaWdodCBhbmQgZ2Ft ZS1jaGFuZ2luZyAKY29udmVyc2F0aW9ucyB0aGF0IHNoYXBlIHRoZSByYXBpZGx5IGV2b2x2aW5n IG1vYmlsZSBsYW5kc2NhcGUuIFNpZ24gdXAgbm93LiAKaHR0cDovL3B1YmFkcy5nLmRvdWJsZWNs aWNrLm5ldC9nYW1wYWQvY2xrP2lkPTYzNDMxMzExJml1PS80MTQwL29zdGcuY2xrdHJrCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2 ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0 dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2 ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751693Ab3KUFre (ORCPT ); Thu, 21 Nov 2013 00:47:34 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:47525 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750856Ab3KUFrc convert rfc822-to-8bit (ORCPT ); Thu, 21 Nov 2013 00:47:32 -0500 X-AuditID: cbfee61a-b7f836d0000025d7-64-528d9e73f745 From: Chao Yu To: "'Gu Zheng'" Cc: "'???'" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, =?gb2312?B?J8y35q0n?= References: <000101cee293$4eae78d0$ec0b6a70$@samsung.com> <5289F6E3.3020607@cn.fujitsu.com> <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> <528C8308.7040604@cn.fujitsu.com> In-reply-to: <528C8308.7040604@cn.fujitsu.com> Subject: RE: [f2fs-dev] [PATCH V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance Date: Thu, 21 Nov 2013 13:46:21 +0800 Message-id: <000101cee67d$2af43130$80dc9390$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=gb2312 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 14.0 Thread-index: AQJeUYhyzeQGY4OFPX5veD7TG4awfwH0Wa9QA3RZ6J4B+ukqSZjVLpbA Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRmVeSWpSXmKPExsVy+t9jQd3ieb1BBv19vBbP2w8wW1zf9ZfJ 4tIid4s9e0+yWFzeNYfNonXheWYHNo//Bycxe+xe8JnJo2/LKkaPz5vkAliiuGxSUnMyy1KL 9O0SuDKWvZzKXjDHsWLKsr/MDYwXjLsYOTgkBEwkPjxP6mLkBDLFJC7cW8/WxcjFISQwnVHi 3/WD7BDOD0aJxken2UGq2ARUJJZ3/GcCsUUENCSmTd3PBFLELLCTUWL3+i2sEB3rGSWmPmph BqniFNCT+PasB6xDWCBf4sXyTWA2i4CqxOQt61hBbF4BS4kt666xQdiCEj8m32MBsZmBNvQv 2sAGYWtLPHl3gRXiVgWJHWdfM0Jc4SZxbMYbqBpxiY1HbrFMYBSahWTULCSjZiEZNQtJywJG llWMoqkFyQXFSem5hnrFibnFpXnpesn5uZsYwbHxTGoH48oGi0OMAhyMSjy8HY97goRYE8uK K3MPMUpwMCuJ8B6r7A0S4k1JrKxKLcqPLyrNSS0+xCjNwaIkznug1TpQSCA9sSQ1OzW1ILUI JsvEwSnVwMg950PAc1vds3+3uc22r9095eI8xZd8nLJLTcSZ3prtdb58f8v81Kcbb8yoD205 /X2hX/c+xyILp9Aa7XUy1+zy2kQ+WBXI77zUx2ic/Pt59OOdn4P2fTPOP3fWSUOWIfPni/bg bzcSfr3N4Nn/KIh94uea98GnDIO+t2+Znvym/e9ireecGbpKLMUZiYZazEXFiQBhBA/6iQIA AA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Gu, > -----Original Message----- > From: Gu Zheng [mailto:guz.fnst@cn.fujitsu.com] > Sent: Wednesday, November 20, 2013 5:38 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 V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance > > Hi Yu, > On 11/20/2013 01:37 PM, Chao Yu wrote: > > > Hi Gu, > > > >> -----Original Message----- > >> From: Gu Zheng [mailto:guz.fnst@cn.fujitsu.com] > >> Sent: Monday, November 18, 2013 7:16 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 V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance > >> > >> Hi Yu, > >> One more comment, please refer to inline. > >> On 11/16/2013 02:15 PM, Chao Yu wrote: > >> > >>> Previously we read sit entries page one by one, this method lost the chance of reading contiguous page together. > >>> So we read pages as contiguous as possible for better mount performance. > >>> > >>> v1-->v2: > >>> o merge judgements/use 'Continue' or 'Break' instead of 'Goto' as Gu Zheng suggested. > >>> o add mark_page_accessed () before release page to delay VM reclaiming them. > >>> > >>> Signed-off-by: Chao Yu > >>> --- > >>> fs/f2fs/segment.c | 108 ++++++++++++++++++++++++++++++++++++++++------------- > >>> fs/f2fs/segment.h | 2 + > >>> 2 files changed, 84 insertions(+), 26 deletions(-) > >>> > >>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > >>> index fa284d3..656fe40 100644 > >>> --- a/fs/f2fs/segment.c > >>> +++ b/fs/f2fs/segment.c > >>> @@ -14,6 +14,7 @@ > >>> #include > >>> #include > >>> #include > >>> +#include > >>> > >>> #include "f2fs.h" > >>> #include "segment.h" > >>> @@ -1480,41 +1481,96 @@ static int build_curseg(struct f2fs_sb_info *sbi) > >>> return restore_curseg_summaries(sbi); > >>> } > >>> > >>> +static int ra_sit_pages(struct f2fs_sb_info *sbi, int start, > >>> + int nrpages, bool *is_order) > >>> +{ > >>> + struct address_space *mapping = sbi->meta_inode->i_mapping; > >>> + struct sit_info *sit_i = SIT_I(sbi); > >>> + struct page *page; > >>> + block_t blk_addr; > >>> + int blkno = start, readcnt = 0; > >>> + int sit_blk_cnt = SIT_BLK_CNT(sbi); > >>> + > >>> + for (; blkno < start + nrpages && blkno < sit_blk_cnt; blkno++) { > >>> + > >>> + if ((!f2fs_test_bit(blkno, sit_i->sit_bitmap) ^ !*is_order)) { > >>> + *is_order = !*is_order; > >>> + break; > >>> + } > >>> + > >>> + blk_addr = sit_i->sit_base_addr + blkno; > >>> + if (*is_order) > >>> + blk_addr += sit_i->sit_blocks; > >>> +repeat: > >>> + page = grab_cache_page(mapping, blk_addr); > >>> + if (!page) { > >>> + cond_resched(); > >>> + goto repeat; > >>> + } > >>> + if (PageUptodate(page)) { > >>> + mark_page_accessed(page); > >>> + f2fs_put_page(page, 1); > >>> + readcnt++; > >>> + continue; > >>> + } > >>> + > >>> + submit_read_page(sbi, page, blk_addr, READ_SYNC); > >>> + > >>> + mark_page_accessed(page); > >>> + f2fs_put_page(page, 0); > >>> + readcnt++; > >>> + } > >>> + > >>> + f2fs_submit_read_bio(sbi, READ_SYNC); > >>> + return readcnt; > >>> +} > >>> + > >>> static void build_sit_entries(struct f2fs_sb_info *sbi) > >>> { > >>> struct sit_info *sit_i = SIT_I(sbi); > >>> struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); > >>> struct f2fs_summary_block *sum = curseg->sum_blk; > >>> - unsigned int start; > >>> - > >>> - for (start = 0; start < TOTAL_SEGS(sbi); start++) { > >>> - struct seg_entry *se = &sit_i->sentries[start]; > >>> - struct f2fs_sit_block *sit_blk; > >>> - struct f2fs_sit_entry sit; > >>> - struct page *page; > >>> - int i; > >>> + bool is_order = f2fs_test_bit(0, sit_i->sit_bitmap) ? true : false; > >>> + int sit_blk_cnt = SIT_BLK_CNT(sbi); > >>> + unsigned int i, start, end; > >>> + unsigned int readed, start_blk = 0; > >>> > >>> - mutex_lock(&curseg->curseg_mutex); > >>> - for (i = 0; i < sits_in_cursum(sum); i++) { > >>> - if (le32_to_cpu(segno_in_journal(sum, i)) == start) { > >>> - sit = sit_in_journal(sum, i); > >>> - mutex_unlock(&curseg->curseg_mutex); > >>> - goto got_it; > >>> + do { > >> > >> How about using find_next_bit to get the suitable start_blk if the next blk > >> is not ordered here? And it also can simplify the logic of ra_sit_pages(). > > > > That's a good idea. > > But I thought there maybe endianness problem between test_bit and > > f2fs_test_bit, so find_next_bit may get wrong result. Am I right? > > IMO, find_next_bit can do well with endianness issue internally, if > it's not so, that may be a weakness. Right, I mean that if we want to set first position in bitmap, we cloud use f2fs_set_bit(0, bitmap) or set_bit(7, bitmap). Two types of interface could not be used mixedly. So could we use {set,test,clear}_bit intead of f2fs_{set,test,clear}_bit? > On the other side, why not introduce a 'f2fs_find_next_bit' if it's > seriously needed?:) Agreed, that's a good point, they were really needed for uniform style and readability. > > Regards, > Gu > > > > > Thanks, > > Yu > >> > >> Thanks, > >> Gu > >> > >>> + readed = ra_sit_pages(sbi, start_blk, sit_blk_cnt, &is_order); > >>> + > >>> + start = start_blk * sit_i->sents_per_block; > >>> + end = (start_blk + readed) * sit_i->sents_per_block; > >>> + > >>> + for (; start < end && start < TOTAL_SEGS(sbi); start++) { > >>> + struct seg_entry *se = &sit_i->sentries[start]; > >>> + struct f2fs_sit_block *sit_blk; > >>> + struct f2fs_sit_entry sit; > >>> + struct page *page; > >>> + > >>> + mutex_lock(&curseg->curseg_mutex); > >>> + for (i = 0; i < sits_in_cursum(sum); i++) { > >>> + if (le32_to_cpu(segno_in_journal(sum, i)) == start) { > >>> + sit = sit_in_journal(sum, i); > >>> + mutex_unlock(&curseg->curseg_mutex); > >>> + goto got_it; > >>> + } > >>> } > >>> - } > >>> - mutex_unlock(&curseg->curseg_mutex); > >>> - page = get_current_sit_page(sbi, start); > >>> - sit_blk = (struct f2fs_sit_block *)page_address(page); > >>> - sit = sit_blk->entries[SIT_ENTRY_OFFSET(sit_i, start)]; > >>> - f2fs_put_page(page, 1); > >>> + mutex_unlock(&curseg->curseg_mutex); > >>> + > >>> + page = get_current_sit_page(sbi, start); > >>> + sit_blk = (struct f2fs_sit_block *)page_address(page); > >>> + sit = sit_blk->entries[SIT_ENTRY_OFFSET(sit_i, start)]; > >>> + f2fs_put_page(page, 1); > >>> got_it: > >>> - check_block_count(sbi, start, &sit); > >>> - seg_info_from_raw_sit(se, &sit); > >>> - if (sbi->segs_per_sec > 1) { > >>> - struct sec_entry *e = get_sec_entry(sbi, start); > >>> - e->valid_blocks += se->valid_blocks; > >>> + check_block_count(sbi, start, &sit); > >>> + seg_info_from_raw_sit(se, &sit); > >>> + if (sbi->segs_per_sec > 1) { > >>> + struct sec_entry *e = get_sec_entry(sbi, start); > >>> + e->valid_blocks += se->valid_blocks; > >>> + } > >>> } > >>> - } > >>> + start_blk += readed; > >> > >> > >> > >> > >>> + } while (start_blk < sit_blk_cnt); > >>> } > >>> > >>> static void init_free_segmap(struct f2fs_sb_info *sbi) > >>> diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h > >>> index 269f690..ad5b9f1 100644 > >>> --- a/fs/f2fs/segment.h > >>> +++ b/fs/f2fs/segment.h > >>> @@ -83,6 +83,8 @@ > >>> (segno / SIT_ENTRY_PER_BLOCK) > >>> #define START_SEGNO(sit_i, segno) \ > >>> (SIT_BLOCK_OFFSET(sit_i, segno) * SIT_ENTRY_PER_BLOCK) > >>> +#define SIT_BLK_CNT(sbi) \ > >>> + ((TOTAL_SEGS(sbi) + SIT_ENTRY_PER_BLOCK - 1) / SIT_ENTRY_PER_BLOCK) > >>> #define f2fs_bitmap_size(nr) \ > >>> (BITS_TO_LONGS(nr) * sizeof(unsigned long)) > >>> #define TOTAL_SEGS(sbi) (SM_I(sbi)->main_segments) > > > > > > > > > =