From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gu Zheng Subject: Re: [PATCH V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance Date: Thu, 21 Nov 2013 18:04:28 +0800 Message-ID: <528DDAAC.3050603@cn.fujitsu.com> References: <000101cee293$4eae78d0$ec0b6a70$@samsung.com> <5289F6E3.3020607@cn.fujitsu.com> <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> <528C8308.7040604@cn.fujitsu.com> <000101cee67d$2af43130$80dc9390$@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1VjREA-0006XK-CX for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 10:11:14 +0000 Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by sog-mx-3.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VjRE6-0001If-Sx for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 10:11:14 +0000 In-Reply-To: <000101cee67d$2af43130$80dc9390$@samsung.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: Chao Yu Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net T24gMTEvMjEvMjAxMyAwMTo0NiBQTSwgQ2hhbyBZdSB3cm90ZToKCj4gSGkgR3UsCj4gCj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IEd1IFpoZW5nIFttYWlsdG86Z3V6LmZu c3RAY24uZnVqaXRzdS5jb21dCj4+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMjAsIDIwMTMg NTozOCBQTQo+PiBUbzogQ2hhbyBZdQo+PiBDYzogJz8/Pyc7IGxpbnV4LWZzZGV2ZWxAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1mMmZzLWRldmVs QGxpc3RzLnNvdXJjZWZvcmdlLm5ldDsgJ8y35q0nCj4+IFN1YmplY3Q6IFJlOiBbZjJmcy1kZXZd IFtQQVRDSCBWMiAyLzJdIGYyZnM6IHJlYWQgY29udGlndW91cyBzaXQgZW50cnkgcGFnZXMgYnkg bWVyZ2luZyBmb3IgbW91bnQgcGVyZm9ybWFuY2UKPj4KPj4gSGkgWXUsCj4+IE9uIDExLzIwLzIw MTMgMDE6MzcgUE0sIENoYW8gWXUgd3JvdGU6Cj4+Cj4+PiBIaSBHdSwKPj4+Cj4+Pj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+PiBGcm9tOiBHdSBaaGVuZyBbbWFpbHRvOmd1ei5mbnN0 QGNuLmZ1aml0c3UuY29tXQo+Pj4+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMTgsIDIwMTMgNzox NiBQTQo+Pj4+IFRvOiBDaGFvIFl1Cj4+Pj4gQ2M6ICc/Pz8nOyBsaW51eC1mc2RldmVsQHZnZXIu a2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtZjJmcy1kZXZl bEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ7IMy3Cj4g5q0KPj4+PiBTdWJqZWN0OiBSZTogW2YyZnMt ZGV2XSBbUEFUQ0ggVjIgMi8yXSBmMmZzOiByZWFkIGNvbnRpZ3VvdXMgc2l0IGVudHJ5IHBhZ2Vz IGJ5IG1lcmdpbmcgZm9yIG1vdW50IHBlcmZvcm1hbmNlCj4+Pj4KPj4+PiBIaSBZdSwKPj4+PiBP bmUgbW9yZSBjb21tZW50LCBwbGVhc2UgcmVmZXIgdG8gaW5saW5lLgo+Pj4+IE9uIDExLzE2LzIw MTMgMDI6MTUgUE0sIENoYW8gWXUgd3JvdGU6Cj4+Pj4KPj4+Pj4gUHJldmlvdXNseSB3ZSByZWFk IHNpdCBlbnRyaWVzIHBhZ2Ugb25lIGJ5IG9uZSwgdGhpcyBtZXRob2QgbG9zdCB0aGUgY2hhbmNl IG9mIHJlYWRpbmcgY29udGlndW91cyBwYWdlIHRvZ2V0aGVyLgo+Pj4+PiBTbyB3ZSByZWFkIHBh Z2VzIGFzIGNvbnRpZ3VvdXMgYXMgcG9zc2libGUgZm9yIGJldHRlciBtb3VudCBwZXJmb3JtYW5j ZS4KPj4+Pj4KPj4+Pj4gdjEtLT52MjoKPj4+Pj4gIG8gbWVyZ2UganVkZ2VtZW50cy91c2UgJ0Nv bnRpbnVlJyBvciAnQnJlYWsnIGluc3RlYWQgb2YgJ0dvdG8nIGFzIEd1IFpoZW5nIHN1Z2dlc3Rl ZC4KPj4+Pj4gIG8gYWRkIG1hcmtfcGFnZV9hY2Nlc3NlZCAoKSBiZWZvcmUgcmVsZWFzZSBwYWdl IHRvIGRlbGF5IFZNIHJlY2xhaW1pbmcgdGhlbS4KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTog Q2hhbyBZdSA8Y2hhbzIueXVAc2Ftc3VuZy5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgZnMvZjJmcy9z ZWdtZW50LmMgfCAgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCj4+Pj4+ICBmcy9mMmZzL3NlZ21lbnQuaCB8ICAgIDIgKwo+Pj4+PiAgMiBm aWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+ Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc2VnbWVudC5jIGIvZnMvZjJmcy9zZWdtZW50LmMKPj4+ Pj4gaW5kZXggZmEyODRkMy4uNjU2ZmU0MCAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9zZWdt ZW50LmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPj4+Pj4gQEAgLTE0LDYgKzE0LDcg QEAKPj4+Pj4gICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KPj4+Pj4gICNpbmNsdWRlIDxsaW51 eC9wcmVmZXRjaC5oPgo+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPj4+Pj4gKyNp bmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4+Pj4+Cj4+Pj4+ICAjaW5jbHVkZSAiZjJmcy5oIgo+Pj4+ PiAgI2luY2x1ZGUgInNlZ21lbnQuaCIKPj4+Pj4gQEAgLTE0ODAsNDEgKzE0ODEsOTYgQEAgc3Rh dGljIGludCBidWlsZF9jdXJzZWcoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+Pj4+PiAgCXJl dHVybiByZXN0b3JlX2N1cnNlZ19zdW1tYXJpZXMoc2JpKTsKPj4+Pj4gIH0KPj4+Pj4KPj4+Pj4g K3N0YXRpYyBpbnQgcmFfc2l0X3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IHN0 YXJ0LAo+Pj4+PiArCQkJCQlpbnQgbnJwYWdlcywgYm9vbCAqaXNfb3JkZXIpCj4+Pj4+ICt7Cj4+ Pj4+ICsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBzYmktPm1ldGFfaW5vZGUtPmlf bWFwcGluZzsKPj4+Pj4gKwlzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPj4+ Pj4gKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKPj4+Pj4gKwlibG9ja190IGJsa19hZGRyOwo+Pj4+PiAr CWludCBibGtubyA9IHN0YXJ0LCByZWFkY250ID0gMDsKPj4+Pj4gKwlpbnQgc2l0X2Jsa19jbnQg PSBTSVRfQkxLX0NOVChzYmkpOwo+Pj4+PiArCj4+Pj4+ICsJZm9yICg7IGJsa25vIDwgc3RhcnQg KyBucnBhZ2VzICYmIGJsa25vIDwgc2l0X2Jsa19jbnQ7IGJsa25vKyspIHsKPj4+Pj4gKwo+Pj4+ PiArCQlpZiAoKCFmMmZzX3Rlc3RfYml0KGJsa25vLCBzaXRfaS0+c2l0X2JpdG1hcCkgXiAhKmlz X29yZGVyKSkgewo+Pj4+PiArCQkJKmlzX29yZGVyID0gISppc19vcmRlcjsKPj4+Pj4gKwkJCWJy ZWFrOwo+Pj4+PiArCQl9Cj4+Pj4+ICsKPj4+Pj4gKwkJYmxrX2FkZHIgPSBzaXRfaS0+c2l0X2Jh c2VfYWRkciArIGJsa25vOwo+Pj4+PiArCQlpZiAoKmlzX29yZGVyKQo+Pj4+PiArCQkJYmxrX2Fk ZHIgKz0gc2l0X2ktPnNpdF9ibG9ja3M7Cj4+Pj4+ICtyZXBlYXQ6Cj4+Pj4+ICsJCXBhZ2UgPSBn cmFiX2NhY2hlX3BhZ2UobWFwcGluZywgYmxrX2FkZHIpOwo+Pj4+PiArCQlpZiAoIXBhZ2UpIHsK Pj4+Pj4gKwkJCWNvbmRfcmVzY2hlZCgpOwo+Pj4+PiArCQkJZ290byByZXBlYXQ7Cj4+Pj4+ICsJ CX0KPj4+Pj4gKwkJaWYgKFBhZ2VVcHRvZGF0ZShwYWdlKSkgewo+Pj4+PiArCQkJbWFya19wYWdl X2FjY2Vzc2VkKHBhZ2UpOwo+Pj4+PiArCQkJZjJmc19wdXRfcGFnZShwYWdlLCAxKTsKPj4+Pj4g KwkJCXJlYWRjbnQrKzsKPj4+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4+PiArCQl9Cj4+Pj4+ICsKPj4+ Pj4gKwkJc3VibWl0X3JlYWRfcGFnZShzYmksIHBhZ2UsIGJsa19hZGRyLCBSRUFEX1NZTkMpOwo+ Pj4+PiArCj4+Pj4+ICsJCW1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlKTsKPj4+Pj4gKwkJZjJmc19w dXRfcGFnZShwYWdlLCAwKTsKPj4+Pj4gKwkJcmVhZGNudCsrOwo+Pj4+PiArCX0KPj4+Pj4gKwo+ Pj4+PiArCWYyZnNfc3VibWl0X3JlYWRfYmlvKHNiaSwgUkVBRF9TWU5DKTsKPj4+Pj4gKwlyZXR1 cm4gcmVhZGNudDsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAgc3RhdGljIHZvaWQgYnVpbGRfc2l0 X2VudHJpZXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+Pj4+PiAgewo+Pj4+PiAgCXN0cnVj dCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+Pj4+PiAgCXN0cnVjdCBjdXJzZWdfaW5m byAqY3Vyc2VnID0gQ1VSU0VHX0koc2JpLCBDVVJTRUdfQ09MRF9EQVRBKTsKPj4+Pj4gIAlzdHJ1 Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW0gPSBjdXJzZWctPnN1bV9ibGs7Cj4+Pj4+IC0JdW5z aWduZWQgaW50IHN0YXJ0Owo+Pj4+PiAtCj4+Pj4+IC0JZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwg VE9UQUxfU0VHUyhzYmkpOyBzdGFydCsrKSB7Cj4+Pj4+IC0JCXN0cnVjdCBzZWdfZW50cnkgKnNl ID0gJnNpdF9pLT5zZW50cmllc1tzdGFydF07Cj4+Pj4+IC0JCXN0cnVjdCBmMmZzX3NpdF9ibG9j ayAqc2l0X2JsazsKPj4+Pj4gLQkJc3RydWN0IGYyZnNfc2l0X2VudHJ5IHNpdDsKPj4+Pj4gLQkJ c3RydWN0IHBhZ2UgKnBhZ2U7Cj4+Pj4+IC0JCWludCBpOwo+Pj4+PiArCWJvb2wgaXNfb3JkZXIg PSBmMmZzX3Rlc3RfYml0KDAsIHNpdF9pLT5zaXRfYml0bWFwKSA/IHRydWUgOiBmYWxzZTsKPj4+ Pj4gKwlpbnQgc2l0X2Jsa19jbnQgPSBTSVRfQkxLX0NOVChzYmkpOwo+Pj4+PiArCXVuc2lnbmVk IGludCBpLCBzdGFydCwgZW5kOwo+Pj4+PiArCXVuc2lnbmVkIGludCByZWFkZWQsIHN0YXJ0X2Js ayA9IDA7Cj4+Pj4+Cj4+Pj4+IC0JCW11dGV4X2xvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4KTsK Pj4+Pj4gLQkJZm9yIChpID0gMDsgaSA8IHNpdHNfaW5fY3Vyc3VtKHN1bSk7IGkrKykgewo+Pj4+ PiAtCQkJaWYgKGxlMzJfdG9fY3B1KHNlZ25vX2luX2pvdXJuYWwoc3VtLCBpKSkgPT0gc3RhcnQp IHsKPj4+Pj4gLQkJCQlzaXQgPSBzaXRfaW5fam91cm5hbChzdW0sIGkpOwo+Pj4+PiAtCQkJCW11 dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+Pj4+PiAtCQkJCWdvdG8gZ290X2l0 Owo+Pj4+PiArCWRvIHsKPj4+Pgo+Pj4+IEhvdyBhYm91dCB1c2luZyBmaW5kX25leHRfYml0IHRv IGdldCB0aGUgc3VpdGFibGUgc3RhcnRfYmxrIGlmIHRoZSBuZXh0IGJsawo+Pj4+IGlzIG5vdCBv cmRlcmVkIGhlcmU/IEFuZCBpdCBhbHNvIGNhbiBzaW1wbGlmeSB0aGUgbG9naWMgb2YgcmFfc2l0 X3BhZ2VzKCkuCj4+Pgo+Pj4gVGhhdCdzIGEgZ29vZCBpZGVhLgo+Pj4gQnV0IEkgdGhvdWdodCB0 aGVyZSBtYXliZSBlbmRpYW5uZXNzIHByb2JsZW0gYmV0d2VlbiB0ZXN0X2JpdCBhbmQKPj4+IGYy ZnNfdGVzdF9iaXQsIHNvIGZpbmRfbmV4dF9iaXQgbWF5IGdldCB3cm9uZyByZXN1bHQuIEFtIEkg cmlnaHQ/Cj4+Cj4+IElNTywgZmluZF9uZXh0X2JpdCBjYW4gZG8gd2VsbCB3aXRoIGVuZGlhbm5l c3MgaXNzdWUgaW50ZXJuYWxseSwgaWYKPj4gaXQncyBub3Qgc28sIHRoYXQgbWF5IGJlIGEgd2Vh a25lc3MuCj4gCj4gUmlnaHQsIEkgbWVhbiB0aGF0IGlmIHdlIHdhbnQgdG8gc2V0IGZpcnN0IHBv c2l0aW9uIGluIGJpdG1hcCwgCj4gd2UgY2xvdWQgdXNlIGYyZnNfc2V0X2JpdCgwLCBiaXRtYXAp IG9yIHNldF9iaXQoNywgYml0bWFwKS4KPiBUd28gdHlwZXMgb2YgaW50ZXJmYWNlIGNvdWxkIG5v dCBiZSB1c2VkIG1peGVkbHkuCj4gCj4gU28gY291bGQgd2UgdXNlIHtzZXQsdGVzdCxjbGVhcn1f Yml0IGludGVhZCBvZiBmMmZzX3tzZXQsdGVzdCxjbGVhcn1fYml0PwoKV2UgY2FuIGNvbnZlcnQg ZjJmc197c2V0LHRlc3QsY2xlYXJ9X2JpdCB0byBhIHdyYXBwZXIgb2Yge3NldCx0ZXN0LGNsZWFy fV9iaXQuCgpUaGFua3MsCkd1Cgo+IAo+PiBPbiB0aGUgb3RoZXIgc2lkZSwgd2h5IG5vdCBpbnRy b2R1Y2UgYSAnZjJmc19maW5kX25leHRfYml0JyBpZiBpdCdzCj4+IHNlcmlvdXNseSBuZWVkZWQ/ OikKPiAKPiBBZ3JlZWQsIHRoYXQncyBhIGdvb2QgcG9pbnQsIHRoZXkgd2VyZSByZWFsbHkgbmVl ZGVkIGZvcgo+IHVuaWZvcm0gc3R5bGUgYW5kIHJlYWRhYmlsaXR5Lgo+IAo+Pgo+PiBSZWdhcmRz LAo+PiBHdQo+Pgo+Pj4KPj4+IFRoYW5rcywKPj4+IFl1Cj4+Pj4KPj4+PiBUaGFua3MsCj4+Pj4g R3UKPj4+Pgo+Pj4+PiArCQlyZWFkZWQgPSByYV9zaXRfcGFnZXMoc2JpLCBzdGFydF9ibGssIHNp dF9ibGtfY250LCAmaXNfb3JkZXIpOwo+Pj4+PiArCj4+Pj4+ICsJCXN0YXJ0ID0gc3RhcnRfYmxr ICogc2l0X2ktPnNlbnRzX3Blcl9ibG9jazsKPj4+Pj4gKwkJZW5kID0gKHN0YXJ0X2JsayArIHJl YWRlZCkgKiBzaXRfaS0+c2VudHNfcGVyX2Jsb2NrOwo+Pj4+PiArCj4+Pj4+ICsJCWZvciAoOyBz dGFydCA8IGVuZCAmJiBzdGFydCA8IFRPVEFMX1NFR1Moc2JpKTsgc3RhcnQrKykgewo+Pj4+PiAr CQkJc3RydWN0IHNlZ19lbnRyeSAqc2UgPSAmc2l0X2ktPnNlbnRyaWVzW3N0YXJ0XTsKPj4+Pj4g KwkJCXN0cnVjdCBmMmZzX3NpdF9ibG9jayAqc2l0X2JsazsKPj4+Pj4gKwkJCXN0cnVjdCBmMmZz X3NpdF9lbnRyeSBzaXQ7Cj4+Pj4+ICsJCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPj4+Pj4gKwo+Pj4+ PiArCQkJbXV0ZXhfbG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+Pj4+PiArCQkJZm9yIChp ID0gMDsgaSA8IHNpdHNfaW5fY3Vyc3VtKHN1bSk7IGkrKykgewo+Pj4+PiArCQkJCWlmIChsZTMy X3RvX2NwdShzZWdub19pbl9qb3VybmFsKHN1bSwgaSkpID09IHN0YXJ0KSB7Cj4+Pj4+ICsJCQkJ CXNpdCA9IHNpdF9pbl9qb3VybmFsKHN1bSwgaSk7Cj4+Pj4+ICsJCQkJCW11dGV4X3VubG9jaygm Y3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+Pj4+PiArCQkJCQlnb3RvIGdvdF9pdDsKPj4+Pj4gKwkJ CQl9Cj4+Pj4+ICAJCQl9Cj4+Pj4+IC0JCX0KPj4+Pj4gLQkJbXV0ZXhfdW5sb2NrKCZjdXJzZWct PmN1cnNlZ19tdXRleCk7Cj4+Pj4+IC0JCXBhZ2UgPSBnZXRfY3VycmVudF9zaXRfcGFnZShzYmks IHN0YXJ0KTsKPj4+Pj4gLQkJc2l0X2JsayA9IChzdHJ1Y3QgZjJmc19zaXRfYmxvY2sgKilwYWdl X2FkZHJlc3MocGFnZSk7Cj4+Pj4+IC0JCXNpdCA9IHNpdF9ibGstPmVudHJpZXNbU0lUX0VOVFJZ X09GRlNFVChzaXRfaSwgc3RhcnQpXTsKPj4+Pj4gLQkJZjJmc19wdXRfcGFnZShwYWdlLCAxKTsK Pj4+Pj4gKwkJCW11dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+Pj4+PiArCj4+ Pj4+ICsJCQlwYWdlID0gZ2V0X2N1cnJlbnRfc2l0X3BhZ2Uoc2JpLCBzdGFydCk7Cj4+Pj4+ICsJ CQlzaXRfYmxrID0gKHN0cnVjdCBmMmZzX3NpdF9ibG9jayAqKXBhZ2VfYWRkcmVzcyhwYWdlKTsK Pj4+Pj4gKwkJCXNpdCA9IHNpdF9ibGstPmVudHJpZXNbU0lUX0VOVFJZX09GRlNFVChzaXRfaSwg c3RhcnQpXTsKPj4+Pj4gKwkJCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4+Pj4+ICBnb3RfaXQ6 Cj4+Pj4+IC0JCWNoZWNrX2Jsb2NrX2NvdW50KHNiaSwgc3RhcnQsICZzaXQpOwo+Pj4+PiAtCQlz ZWdfaW5mb19mcm9tX3Jhd19zaXQoc2UsICZzaXQpOwo+Pj4+PiAtCQlpZiAoc2JpLT5zZWdzX3Bl cl9zZWMgPiAxKSB7Cj4+Pj4+IC0JCQlzdHJ1Y3Qgc2VjX2VudHJ5ICplID0gZ2V0X3NlY19lbnRy eShzYmksIHN0YXJ0KTsKPj4+Pj4gLQkJCWUtPnZhbGlkX2Jsb2NrcyArPSBzZS0+dmFsaWRfYmxv Y2tzOwo+Pj4+PiArCQkJY2hlY2tfYmxvY2tfY291bnQoc2JpLCBzdGFydCwgJnNpdCk7Cj4+Pj4+ ICsJCQlzZWdfaW5mb19mcm9tX3Jhd19zaXQoc2UsICZzaXQpOwo+Pj4+PiArCQkJaWYgKHNiaS0+ c2Vnc19wZXJfc2VjID4gMSkgewo+Pj4+PiArCQkJCXN0cnVjdCBzZWNfZW50cnkgKmUgPSBnZXRf c2VjX2VudHJ5KHNiaSwgc3RhcnQpOwo+Pj4+PiArCQkJCWUtPnZhbGlkX2Jsb2NrcyArPSBzZS0+ dmFsaWRfYmxvY2tzOwo+Pj4+PiArCQkJfQo+Pj4+PiAgCQl9Cj4+Pj4+IC0JfQo+Pj4+PiArCQlz dGFydF9ibGsgKz0gcmVhZGVkOwo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4+ICsJfSB3aGlsZSAo c3RhcnRfYmxrIDwgc2l0X2Jsa19jbnQpOwo+Pj4+PiAgfQo+Pj4+Pgo+Pj4+PiAgc3RhdGljIHZv aWQgaW5pdF9mcmVlX3NlZ21hcChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+Pj4+IGRpZmYg LS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+Pj4+IGluZGV4 IDI2OWY2OTAuLmFkNWI5ZjEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5oCj4+ Pj4+ICsrKyBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+Pj4+IEBAIC04Myw2ICs4Myw4IEBACj4+Pj4+ ICAJKHNlZ25vIC8gU0lUX0VOVFJZX1BFUl9CTE9DSykKPj4+Pj4gICNkZWZpbmUJU1RBUlRfU0VH Tk8oc2l0X2ksIHNlZ25vKQkJXAo+Pj4+PiAgCShTSVRfQkxPQ0tfT0ZGU0VUKHNpdF9pLCBzZWdu bykgKiBTSVRfRU5UUllfUEVSX0JMT0NLKQo+Pj4+PiArI2RlZmluZSBTSVRfQkxLX0NOVChzYmkp CQkJXAo+Pj4+PiArCSgoVE9UQUxfU0VHUyhzYmkpICsgU0lUX0VOVFJZX1BFUl9CTE9DSyAtIDEp IC8gU0lUX0VOVFJZX1BFUl9CTE9DSykKPj4+Pj4gICNkZWZpbmUgZjJmc19iaXRtYXBfc2l6ZShu cikJCQlcCj4+Pj4+ICAJKEJJVFNfVE9fTE9OR1MobnIpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcp KQo+Pj4+PiAgI2RlZmluZSBUT1RBTF9TRUdTKHNiaSkJKFNNX0koc2JpKS0+bWFpbl9zZWdtZW50 cykKPj4+Cj4+Pgo+Pj4KPj4KPj4KPj4gPQo+IAo+IAoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K U2hhcGUgdGhlIE1vYmlsZSBFeHBlcmllbmNlOiBGcmVlIFN1YnNjcmlwdGlvbgpTb2Z0d2FyZSBl eHBlcnRzIGFuZCBkZXZlbG9wZXJzOiBCZSBhdCB0aGUgZm9yZWZyb250IG9mIHRlY2ggaW5ub3Zh dGlvbi4KSW50ZWwoUikgU29mdHdhcmUgQWRyZW5hbGluZSBkZWxpdmVycyBzdHJhdGVnaWMgaW5z aWdodCBhbmQgZ2FtZS1jaGFuZ2luZyAKY29udmVyc2F0aW9ucyB0aGF0IHNoYXBlIHRoZSByYXBp ZGx5IGV2b2x2aW5nIG1vYmlsZSBsYW5kc2NhcGUuIFNpZ24gdXAgbm93LiAKaHR0cDovL3B1YmFk cy5nLmRvdWJsZWNsaWNrLm5ldC9nYW1wYWQvY2xrP2lkPTYzNDMxMzExJml1PS80MTQwL29zdGcu Y2xrdHJrCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNl Zm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xp bnV4LWYyZnMtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753886Ab3KUKLJ (ORCPT ); Thu, 21 Nov 2013 05:11:09 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:27178 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1751269Ab3KUKLH convert rfc822-to-8bit (ORCPT ); Thu, 21 Nov 2013 05:11:07 -0500 X-IronPort-AV: E=Sophos;i="4.93,743,1378828800"; d="scan'208";a="9093972" Message-ID: <528DDAAC.3050603@cn.fujitsu.com> Date: Thu, 21 Nov 2013 18:04:28 +0800 From: Gu Zheng User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110930 Thunderbird/7.0.1 MIME-Version: 1.0 To: Chao Yu CC: "'???'" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, =?GB2312?B?J8y35q0n?= Subject: Re: [f2fs-dev] [PATCH V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance References: <000101cee293$4eae78d0$ec0b6a70$@samsung.com> <5289F6E3.3020607@cn.fujitsu.com> <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> <528C8308.7040604@cn.fujitsu.com> <000101cee67d$2af43130$80dc9390$@samsung.com> In-Reply-To: <000101cee67d$2af43130$80dc9390$@samsung.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/11/21 18:09:00, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/11/21 18:09:05 Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/21/2013 01:46 PM, Chao Yu wrote: > 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? We can convert f2fs_{set,test,clear}_bit to a wrapper of {set,test,clear}_bit. Thanks, Gu > >> 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) >>> >>> >>> >> >> >> = > >