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: Wed, 20 Nov 2013 13:37:32 +0800 Message-ID: <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> References: <000101cee293$4eae78d0$ec0b6a70$@samsung.com> <5289F6E3.3020607@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" 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-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Vj0VJ-0001fU-Cx for linux-f2fs-devel@lists.sourceforge.net; Wed, 20 Nov 2013 05:39:09 +0000 Received: from mailout4.samsung.com ([203.254.224.34]) by sog-mx-1.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1Vj0VH-0005u9-0u for linux-f2fs-devel@lists.sourceforge.net; Wed, 20 Nov 2013 05:39:09 +0000 Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MWJ0068SRO55T20@mailout4.samsung.com> for linux-f2fs-devel@lists.sourceforge.net; Wed, 20 Nov 2013 14:39:00 +0900 (KST) In-reply-to: <5289F6E3.3020607@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 aWx0bzpndXouZm5zdEBjbi5mdWppdHN1LmNvbV0KPiBTZW50OiBNb25kYXksIE5vdmVtYmVyIDE4 LCAyMDEzIDc6MTYgUE0KPiBUbzogQ2hhbyBZdQo+IENjOiAnPz8/JzsgbGludXgtZnNkZXZlbEB2 Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWYyZnMt ZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0OyDMt+atCj4gU3ViamVjdDogUmU6IFtmMmZzLWRl dl0gW1BBVENIIFYyIDIvMl0gZjJmczogcmVhZCBjb250aWd1b3VzIHNpdCBlbnRyeSBwYWdlcyBi eSBtZXJnaW5nIGZvciBtb3VudCBwZXJmb3JtYW5jZQo+IAo+IEhpIFl1LAo+IE9uZSBtb3JlIGNv bW1lbnQsIHBsZWFzZSByZWZlciB0byBpbmxpbmUuCj4gT24gMTEvMTYvMjAxMyAwMjoxNSBQTSwg Q2hhbyBZdSB3cm90ZToKPiAKPiA+IFByZXZpb3VzbHkgd2UgcmVhZCBzaXQgZW50cmllcyBwYWdl IG9uZSBieSBvbmUsIHRoaXMgbWV0aG9kIGxvc3QgdGhlIGNoYW5jZSBvZiByZWFkaW5nIGNvbnRp Z3VvdXMgcGFnZSB0b2dldGhlci4KPiA+IFNvIHdlIHJlYWQgcGFnZXMgYXMgY29udGlndW91cyBh cyBwb3NzaWJsZSBmb3IgYmV0dGVyIG1vdW50IHBlcmZvcm1hbmNlLgo+ID4KPiA+IHYxLS0+djI6 Cj4gPiAgbyBtZXJnZSBqdWRnZW1lbnRzL3VzZSAnQ29udGludWUnIG9yICdCcmVhaycgaW5zdGVh ZCBvZiAnR290bycgYXMgR3UgWmhlbmcgc3VnZ2VzdGVkLgo+ID4gIG8gYWRkIG1hcmtfcGFnZV9h Y2Nlc3NlZCAoKSBiZWZvcmUgcmVsZWFzZSBwYWdlIHRvIGRlbGF5IFZNIHJlY2xhaW1pbmcgdGhl bS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGFvIFl1IDxjaGFvMi55dUBzYW1zdW5nLmNvbT4K PiA+IC0tLQo+ID4gIGZzL2YyZnMvc2VnbWVudC5jIHwgIDEwOCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ID4gIGZzL2YyZnMvc2VnbWVudC5o IHwgICAgMiArCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyNiBkZWxl dGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZz L3NlZ21lbnQuYwo+ID4gaW5kZXggZmEyODRkMy4uNjU2ZmU0MCAxMDA2NDQKPiA+IC0tLSBhL2Zz L2YyZnMvc2VnbWVudC5jCj4gPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gQEAgLTE0LDYg KzE0LDcgQEAKPiA+ICAjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+Cj4gPiAgI2luY2x1ZGUgPGxp bnV4L3ByZWZldGNoLmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvc3dhcC5oPgo+ID4KPiA+ICAjaW5jbHVkZSAiZjJmcy5oIgo+ID4gICNpbmNs dWRlICJzZWdtZW50LmgiCj4gPiBAQCAtMTQ4MCw0MSArMTQ4MSw5NiBAQCBzdGF0aWMgaW50IGJ1 aWxkX2N1cnNlZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgCXJldHVybiByZXN0b3Jl X2N1cnNlZ19zdW1tYXJpZXMoc2JpKTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBpbnQgcmFfc2l0 X3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IHN0YXJ0LAo+ID4gKwkJCQkJaW50 IG5ycGFnZXMsIGJvb2wgKmlzX29yZGVyKQo+ID4gK3sKPiA+ICsJc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSBzYmktPm1ldGFfaW5vZGUtPmlfbWFwcGluZzsKPiA+ICsJc3RydWN0IHNp dF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4gPiArCXN0cnVjdCBwYWdlICpwYWdlOwo+ID4g KwlibG9ja190IGJsa19hZGRyOwo+ID4gKwlpbnQgYmxrbm8gPSBzdGFydCwgcmVhZGNudCA9IDA7 Cj4gPiArCWludCBzaXRfYmxrX2NudCA9IFNJVF9CTEtfQ05UKHNiaSk7Cj4gPiArCj4gPiArCWZv ciAoOyBibGtubyA8IHN0YXJ0ICsgbnJwYWdlcyAmJiBibGtubyA8IHNpdF9ibGtfY250OyBibGtu bysrKSB7Cj4gPiArCj4gPiArCQlpZiAoKCFmMmZzX3Rlc3RfYml0KGJsa25vLCBzaXRfaS0+c2l0 X2JpdG1hcCkgXiAhKmlzX29yZGVyKSkgewo+ID4gKwkJCSppc19vcmRlciA9ICEqaXNfb3JkZXI7 Cj4gPiArCQkJYnJlYWs7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlibGtfYWRkciA9IHNpdF9pLT5z aXRfYmFzZV9hZGRyICsgYmxrbm87Cj4gPiArCQlpZiAoKmlzX29yZGVyKQo+ID4gKwkJCWJsa19h ZGRyICs9IHNpdF9pLT5zaXRfYmxvY2tzOwo+ID4gK3JlcGVhdDoKPiA+ICsJCXBhZ2UgPSBncmFi X2NhY2hlX3BhZ2UobWFwcGluZywgYmxrX2FkZHIpOwo+ID4gKwkJaWYgKCFwYWdlKSB7Cj4gPiAr CQkJY29uZF9yZXNjaGVkKCk7Cj4gPiArCQkJZ290byByZXBlYXQ7Cj4gPiArCQl9Cj4gPiArCQlp ZiAoUGFnZVVwdG9kYXRlKHBhZ2UpKSB7Cj4gPiArCQkJbWFya19wYWdlX2FjY2Vzc2VkKHBhZ2Up Owo+ID4gKwkJCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4gPiArCQkJcmVhZGNudCsrOwo+ID4g KwkJCWNvbnRpbnVlOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJc3VibWl0X3JlYWRfcGFnZShzYmks IHBhZ2UsIGJsa19hZGRyLCBSRUFEX1NZTkMpOwo+ID4gKwo+ID4gKwkJbWFya19wYWdlX2FjY2Vz c2VkKHBhZ2UpOwo+ID4gKwkJZjJmc19wdXRfcGFnZShwYWdlLCAwKTsKPiA+ICsJCXJlYWRjbnQr KzsKPiA+ICsJfQo+ID4gKwo+ID4gKwlmMmZzX3N1Ym1pdF9yZWFkX2JpbyhzYmksIFJFQURfU1lO Qyk7Cj4gPiArCXJldHVybiByZWFkY250Owo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBi dWlsZF9zaXRfZW50cmllcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgewo+ID4gIAlz dHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+ICAJc3RydWN0IGN1cnNlZ19p bmZvICpjdXJzZWcgPSBDVVJTRUdfSShzYmksIENVUlNFR19DT0xEX0RBVEEpOwo+ID4gIAlzdHJ1 Y3QgZjJmc19zdW1tYXJ5X2Jsb2NrICpzdW0gPSBjdXJzZWctPnN1bV9ibGs7Cj4gPiAtCXVuc2ln bmVkIGludCBzdGFydDsKPiA+IC0KPiA+IC0JZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgVE9UQUxf U0VHUyhzYmkpOyBzdGFydCsrKSB7Cj4gPiAtCQlzdHJ1Y3Qgc2VnX2VudHJ5ICpzZSA9ICZzaXRf aS0+c2VudHJpZXNbc3RhcnRdOwo+ID4gLQkJc3RydWN0IGYyZnNfc2l0X2Jsb2NrICpzaXRfYmxr Owo+ID4gLQkJc3RydWN0IGYyZnNfc2l0X2VudHJ5IHNpdDsKPiA+IC0JCXN0cnVjdCBwYWdlICpw YWdlOwo+ID4gLQkJaW50IGk7Cj4gPiArCWJvb2wgaXNfb3JkZXIgPSBmMmZzX3Rlc3RfYml0KDAs IHNpdF9pLT5zaXRfYml0bWFwKSA/IHRydWUgOiBmYWxzZTsKPiA+ICsJaW50IHNpdF9ibGtfY250 ID0gU0lUX0JMS19DTlQoc2JpKTsKPiA+ICsJdW5zaWduZWQgaW50IGksIHN0YXJ0LCBlbmQ7Cj4g PiArCXVuc2lnbmVkIGludCByZWFkZWQsIHN0YXJ0X2JsayA9IDA7Cj4gPgo+ID4gLQkJbXV0ZXhf bG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+ID4gLQkJZm9yIChpID0gMDsgaSA8IHNpdHNf aW5fY3Vyc3VtKHN1bSk7IGkrKykgewo+ID4gLQkJCWlmIChsZTMyX3RvX2NwdShzZWdub19pbl9q b3VybmFsKHN1bSwgaSkpID09IHN0YXJ0KSB7Cj4gPiAtCQkJCXNpdCA9IHNpdF9pbl9qb3VybmFs KHN1bSwgaSk7Cj4gPiAtCQkJCW11dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+ ID4gLQkJCQlnb3RvIGdvdF9pdDsKPiA+ICsJZG8gewo+IAo+IEhvdyBhYm91dCB1c2luZyBmaW5k X25leHRfYml0IHRvIGdldCB0aGUgc3VpdGFibGUgc3RhcnRfYmxrIGlmIHRoZSBuZXh0IGJsawo+ IGlzIG5vdCBvcmRlcmVkIGhlcmU/IEFuZCBpdCBhbHNvIGNhbiBzaW1wbGlmeSB0aGUgbG9naWMg b2YgcmFfc2l0X3BhZ2VzKCkuCgpUaGF0J3MgYSBnb29kIGlkZWEuCkJ1dCBJIHRob3VnaHQgdGhl cmUgbWF5YmUgZW5kaWFubmVzcyBwcm9ibGVtIGJldHdlZW4gdGVzdF9iaXQgYW5kIApmMmZzX3Rl c3RfYml0LCBzbyBmaW5kX25leHRfYml0IG1heSBnZXQgd3JvbmcgcmVzdWx0LiBBbSBJIHJpZ2h0 PwoKVGhhbmtzLApZdQo+IAo+IFRoYW5rcywKPiBHdQo+IAo+ID4gKwkJcmVhZGVkID0gcmFfc2l0 X3BhZ2VzKHNiaSwgc3RhcnRfYmxrLCBzaXRfYmxrX2NudCwgJmlzX29yZGVyKTsKPiA+ICsKPiA+ ICsJCXN0YXJ0ID0gc3RhcnRfYmxrICogc2l0X2ktPnNlbnRzX3Blcl9ibG9jazsKPiA+ICsJCWVu ZCA9IChzdGFydF9ibGsgKyByZWFkZWQpICogc2l0X2ktPnNlbnRzX3Blcl9ibG9jazsKPiA+ICsK PiA+ICsJCWZvciAoOyBzdGFydCA8IGVuZCAmJiBzdGFydCA8IFRPVEFMX1NFR1Moc2JpKTsgc3Rh cnQrKykgewo+ID4gKwkJCXN0cnVjdCBzZWdfZW50cnkgKnNlID0gJnNpdF9pLT5zZW50cmllc1tz dGFydF07Cj4gPiArCQkJc3RydWN0IGYyZnNfc2l0X2Jsb2NrICpzaXRfYmxrOwo+ID4gKwkJCXN0 cnVjdCBmMmZzX3NpdF9lbnRyeSBzaXQ7Cj4gPiArCQkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gPiAr Cj4gPiArCQkJbXV0ZXhfbG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+ID4gKwkJCWZvciAo aSA9IDA7IGkgPCBzaXRzX2luX2N1cnN1bShzdW0pOyBpKyspIHsKPiA+ICsJCQkJaWYgKGxlMzJf dG9fY3B1KHNlZ25vX2luX2pvdXJuYWwoc3VtLCBpKSkgPT0gc3RhcnQpIHsKPiA+ICsJCQkJCXNp dCA9IHNpdF9pbl9qb3VybmFsKHN1bSwgaSk7Cj4gPiArCQkJCQltdXRleF91bmxvY2soJmN1cnNl Zy0+Y3Vyc2VnX211dGV4KTsKPiA+ICsJCQkJCWdvdG8gZ290X2l0Owo+ID4gKwkJCQl9Cj4gPiAg CQkJfQo+ID4gLQkJfQo+ID4gLQkJbXV0ZXhfdW5sb2NrKCZjdXJzZWctPmN1cnNlZ19tdXRleCk7 Cj4gPiAtCQlwYWdlID0gZ2V0X2N1cnJlbnRfc2l0X3BhZ2Uoc2JpLCBzdGFydCk7Cj4gPiAtCQlz aXRfYmxrID0gKHN0cnVjdCBmMmZzX3NpdF9ibG9jayAqKXBhZ2VfYWRkcmVzcyhwYWdlKTsKPiA+ IC0JCXNpdCA9IHNpdF9ibGstPmVudHJpZXNbU0lUX0VOVFJZX09GRlNFVChzaXRfaSwgc3RhcnQp XTsKPiA+IC0JCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4gPiArCQkJbXV0ZXhfdW5sb2NrKCZj dXJzZWctPmN1cnNlZ19tdXRleCk7Cj4gPiArCj4gPiArCQkJcGFnZSA9IGdldF9jdXJyZW50X3Np dF9wYWdlKHNiaSwgc3RhcnQpOwo+ID4gKwkJCXNpdF9ibGsgPSAoc3RydWN0IGYyZnNfc2l0X2Js b2NrICopcGFnZV9hZGRyZXNzKHBhZ2UpOwo+ID4gKwkJCXNpdCA9IHNpdF9ibGstPmVudHJpZXNb U0lUX0VOVFJZX09GRlNFVChzaXRfaSwgc3RhcnQpXTsKPiA+ICsJCQlmMmZzX3B1dF9wYWdlKHBh Z2UsIDEpOwo+ID4gIGdvdF9pdDoKPiA+IC0JCWNoZWNrX2Jsb2NrX2NvdW50KHNiaSwgc3RhcnQs ICZzaXQpOwo+ID4gLQkJc2VnX2luZm9fZnJvbV9yYXdfc2l0KHNlLCAmc2l0KTsKPiA+IC0JCWlm IChzYmktPnNlZ3NfcGVyX3NlYyA+IDEpIHsKPiA+IC0JCQlzdHJ1Y3Qgc2VjX2VudHJ5ICplID0g Z2V0X3NlY19lbnRyeShzYmksIHN0YXJ0KTsKPiA+IC0JCQllLT52YWxpZF9ibG9ja3MgKz0gc2Ut PnZhbGlkX2Jsb2NrczsKPiA+ICsJCQljaGVja19ibG9ja19jb3VudChzYmksIHN0YXJ0LCAmc2l0 KTsKPiA+ICsJCQlzZWdfaW5mb19mcm9tX3Jhd19zaXQoc2UsICZzaXQpOwo+ID4gKwkJCWlmIChz YmktPnNlZ3NfcGVyX3NlYyA+IDEpIHsKPiA+ICsJCQkJc3RydWN0IHNlY19lbnRyeSAqZSA9IGdl dF9zZWNfZW50cnkoc2JpLCBzdGFydCk7Cj4gPiArCQkJCWUtPnZhbGlkX2Jsb2NrcyArPSBzZS0+ dmFsaWRfYmxvY2tzOwo+ID4gKwkJCX0KPiA+ICAJCX0KPiA+IC0JfQo+ID4gKwkJc3RhcnRfYmxr ICs9IHJlYWRlZDsKPiAKPiAKPiAKPiAKPiA+ICsJfSB3aGlsZSAoc3RhcnRfYmxrIDwgc2l0X2Js a19jbnQpOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZvaWQgaW5pdF9mcmVlX3NlZ21hcChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50Lmgg Yi9mcy9mMmZzL3NlZ21lbnQuaAo+ID4gaW5kZXggMjY5ZjY5MC4uYWQ1YjlmMSAxMDA2NDQKPiA+ IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+ID4g QEAgLTgzLDYgKzgzLDggQEAKPiA+ICAJKHNlZ25vIC8gU0lUX0VOVFJZX1BFUl9CTE9DSykKPiA+ ICAjZGVmaW5lCVNUQVJUX1NFR05PKHNpdF9pLCBzZWdubykJCVwKPiA+ICAJKFNJVF9CTE9DS19P RkZTRVQoc2l0X2ksIHNlZ25vKSAqIFNJVF9FTlRSWV9QRVJfQkxPQ0spCj4gPiArI2RlZmluZSBT SVRfQkxLX0NOVChzYmkpCQkJXAo+ID4gKwkoKFRPVEFMX1NFR1Moc2JpKSArIFNJVF9FTlRSWV9Q RVJfQkxPQ0sgLSAxKSAvIFNJVF9FTlRSWV9QRVJfQkxPQ0spCj4gPiAgI2RlZmluZSBmMmZzX2Jp dG1hcF9zaXplKG5yKQkJCVwKPiA+ICAJKEJJVFNfVE9fTE9OR1MobnIpICogc2l6ZW9mKHVuc2ln bmVkIGxvbmcpKQo+ID4gICNkZWZpbmUgVE9UQUxfU0VHUyhzYmkpCShTTV9JKHNiaSktPm1haW5f c2VnbWVudHMpCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTaGFwZSB0aGUgTW9iaWxlIEV4cGVy aWVuY2U6IEZyZWUgU3Vic2NyaXB0aW9uClNvZnR3YXJlIGV4cGVydHMgYW5kIGRldmVsb3BlcnM6 IEJlIGF0IHRoZSBmb3JlZnJvbnQgb2YgdGVjaCBpbm5vdmF0aW9uLgpJbnRlbChSKSBTb2Z0d2Fy ZSBBZHJlbmFsaW5lIGRlbGl2ZXJzIHN0cmF0ZWdpYyBpbnNpZ2h0IGFuZCBnYW1lLWNoYW5naW5n IApjb252ZXJzYXRpb25zIHRoYXQgc2hhcGUgdGhlIHJhcGlkbHkgZXZvbHZpbmcgbW9iaWxlIGxh bmRzY2FwZS4gU2lnbiB1cCBub3cuIApodHRwOi8vcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dh bXBhZC9jbGs/aWQ9NjM0MzEzMTEmaXU9LzQxNDAvb3N0Zy5jbGt0cmsKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5n IGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752049Ab3KTFjH (ORCPT ); Wed, 20 Nov 2013 00:39:07 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:30680 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751704Ab3KTFjC convert rfc822-to-8bit (ORCPT ); Wed, 20 Nov 2013 00:39:02 -0500 X-AuditID: cbfee61b-b7fd56d000001fc6-f6-528c4af4b514 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> In-reply-to: <5289F6E3.3020607@cn.fujitsu.com> Subject: RE: [f2fs-dev] [PATCH V2 2/2] f2fs: read contiguous sit entry pages by merging for mount performance Date: Wed, 20 Nov 2013 13:37:32 +0800 Message-id: <001801cee5b2$ce8cdac0$6ba69040$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=gb2312 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 14.0 Thread-index: AQJeUYhyzeQGY4OFPX5veD7TG4awfwH0Wa9QmP2KF1A= Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKLMWRmVeSWpSXmKPExsVy+t9jQd0vXj1BBiuuKVg8bz/AbHF9118m i0uL3C327D3JYnF51xw2i9aF55kd2Dz+H5zE7LF7wWcmj74tqxg9Pm+SC2CJ4rJJSc3JLEst 0rdL4Mpof3aRqeCwacXNe3NYGxh/aHYxcnJICJhIdHWeZYWwxSQu3FvP1sXIxSEkMJ1RYkNX FwuE84NRYs7bVYwgVWwCKhLLO/4zgdgiAhoS06buZwIpYhbYySixe/0WsFFCArESf188Ygex OQX0JPZ0TQSzhQXyJV4s3wTUwMHBIqAqMX+/H0iYV8BSYvPOSWwQtqDEj8n3WEBsZqD5/Ys2 sEHY2hJP3l2AulRBYsfZ14wQN1hJNE9eyg5RIy6x8cgtlgmMQrOQjJqFZNQsJKNmIWlZwMiy ilE0tSC5oDgpPddIrzgxt7g0L10vOT93EyM4Mp5J72Bc1WBxiFGAg1GJh7dgUXeQEGtiWXFl 7iFGCQ5mJRHeW+49QUK8KYmVValF+fFFpTmpxYcYpTlYlMR5D7ZaBwoJpCeWpGanphakFsFk mTg4pRoYJ9ga6iulaS7vOxSob7hj+6/fZWnsPAEzv/yYIFGw5bac+Lewe+bMa68uPXZC7UPH ZLP+HeGHTh+JYnnCq/LX4OBG+X0HvU+dN3kiljZF/9MibeM6+w2/eSWXPJhUn+2x8meSg//C 4zImTa+0I9u+tOd0LG/8XJ2wnnO71OWmaVttPeLDm5NMlFiKMxINtZiLihMBOgNWbYgCAAA= 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: 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? 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)