From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gu Zheng Subject: Re: [PATCH] f2fs: optimize fs_lock for better performance Date: Wed, 11 Sep 2013 11:22:39 +0800 Message-ID: <522FE1FF.9010901@cn.fujitsu.com> References: <04.C0.13361.61DDA225@epcpsbge5.samsung.com> <1378774750.2354.110.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 1VJb5e-0000b2-I1 for linux-f2fs-devel@lists.sourceforge.net; Wed, 11 Sep 2013 03:27:38 +0000 Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by sog-mx-1.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VJb5c-0002AW-H1 for linux-f2fs-devel@lists.sourceforge.net; Wed, 11 Sep 2013 03:27:38 +0000 In-Reply-To: <1378774750.2354.110.camel@kjgkr> 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: =?UTF-8?B?6LCt5aed?= , Russ Knize , "linux-kernel@vger.kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" , "linux-fsdevel@vger.kernel.org" SGkgSmFlZ2V1aywKT24gMDkvMTAvMjAxMyAwODo1OSBBTSwgSmFlZ2V1ayBLaW0gd3JvdGU6Cgo+ IEhpLAo+IAo+IDIwMTMtMDktMDcgKO2GoCksIDA4OjAwICswMDAwLCBDaGFvIFl1Ogo+PiBIaSBL bml6ZSwKPj4KPj4gICAgIFRoYW5rcyBmb3IgeW91ciByZXBseSwgSSB0aGluayBpdCdzIGFjdHVh bGx5IG1lYW5pbmdsZXNzIHRoYXQgaXQncwo+PiBiZWluZyBuYW1lZCBhZnRlciAic3Bpbl9sb2Nr IiwKPj4gaXQncyBiZXR0ZXIgdG8gcmVuYW1lIHRoaXMgc3BpbmxvY2sgdG8gInJvdW5kX3JvYmlu X2xvY2siLgo+Pgo+PiAgICAgVGhpcyBwYXRjaCBjYW4gb25seSByZXNvbHZlIHRoZSBpc3N1ZSBv ZiB1bmJhbGFuY2VkIGZzX2xvY2sgdXNhZ2UsCj4+IGl0IGNhbiBub3QgZml4IHRoZSBkZWFkbG9j ayBpc3N1ZS4KPj4gY2FuIHdlIGZpeCBkZWFkbG9jayBpc3N1ZSB0aHJvdWdoIHRoaXMgbWV0aG9k Ogo+Pgo+PiAtIHZmc19jcmVhdGUoKQo+PiAgLSBmMmZzX2NyZWF0ZSgpIC0gdGFrZXMgYW4gZnNf bG9jayBhbmQgc2F2ZSBjdXJyZW50IHRocmVhZCBpbmZvIGludG8KPj4gdGhyZWFkX2luZm9bTlJf R0xPQkFMX0xPQ0tTXQo+PiAgIC0gZjJmc19hZGRfbGluaygpCj4+ICAgIC0gX19mMmZzX2FkZF9s aW5rKCkKPj4gICAgIC0gaW5pdF9pbm9kZV9tZXRhZGF0YSgpCj4+ICAgICAgLSBmMmZzX2luaXRf c2VjdXJpdHkoKQo+PiAgICAgICAtIHNlY3VyaXR5X2lub2RlX2luaXRfc2VjdXJpdHkoKQo+PiAg ICAgICAgLSBmMmZzX2luaXR4YXR0cnMoKQo+PiAgICAgICAgIC0gZjJmc19zZXR4YXR0cigpIC0g Z2V0IGZzX2xvY2sgb25seSBpZiB0aGVyZSBpcyBubyBjdXJyZW50Cj4+IHRocmVhZCBpbmZvIGlu IHRocmVhZF9pbmZvCj4+ICAgICAgICAgCj4+IFNvIGl0IGtlZXBzIG9uZSB0aHJlYWQgY2FuIG9u bHkgaG9sZCBvbmUgZnNfbG9jayB0byBhdm9pZCBkZWFkbG9jay4KPj4gQ2FuIHdlIHVzZSB0aGlz IHNvbHV0aW9uPwo+IAo+IEl0IGNvdWxkIGJlLgo+IEJ1dCwgSSB0aGluayB3ZSBjYW4gYXZvaWQg dG8gZ3JhYiB0aGUgZnNfbG9jayBhdCB0aGUgZjJmc19pbml0eGF0dHJzKCkKCkFncmVlLiBUaGlz IGZzX2xvY2sgaGVyZSBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIHhhdHRyIGZyb20gcGFyYWxsZWwg bW9kaWZpY2F0aW9uLApidXQgaGVyZSBpcyBpbiB0aGUgaW5pdHhhdHRycyByb3V0aW5lLCBwYXJh bGxlbCBtb2RpZmljYXRpb24gY2FuIG5vdCBoYXBwZW4uCkFuZCBpbiB0aGUgbm9ybWFsIHNldHhh dHRyIHJvdXRpbmUgdGhlIGlub2RlLT5pX211dGV4ICh2ZnMgbGF5ZXIpIGlzIHVzZWQgdG8KYXZv aWQgcGFyYWxsZWwgbW9kaWZpY2F0aW9uLiBTbyBJIHRoaW5rIHRoaXMgZnNfbG9jayBpcyBuZWVk bGVzcy4KQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KClJlZ2FyZHMsCkd1Cgo+IGxldmVsLCBzaW5j ZSB0aGlzIGNhc2Ugb25seSBoYXBwZW5zIHdoZW4gZjJmc19pbml0eGF0dHJzKCkgaXMgY2FsbGVk Lgo+IExldCdzIHRoaW5rIGFib3V0IHV0IGluIG1vcmUgZGV0YWlsLgo+IFRoYW5rcywKPiAKPj4K Pj4gIAo+Pgo+PiB0aGFua3MgYWdhaW4hCj4+Cj4+ICAKPj4KPj4gLS0tLS0tLSBPcmlnaW5hbCBN ZXNzYWdlIC0tLS0tLS0KPj4KPj4gU2VuZGVyIDogUnVzcyBLbml6ZTxSdXNzLktuaXplQG1vdG9y b2xhLmNvbT4KPj4KPj4gRGF0ZSA6IOS5neaciCAwNywgMjAxMyAwNDoyNSAoR01UKzA5OjAwKQo+ Pgo+PiBUaXRsZSA6IFJlOiBbZjJmcy1kZXZdIFtQQVRDSF0gZjJmczogb3B0aW1pemUgZnNfbG9j ayBmb3IgYmV0dGVyCj4+IHBlcmZvcm1hbmNlCj4+Cj4+ICAKPj4KPj4gSSBlbmNvdW50ZXJlZCB0 aGlzIHNhbWUgaXNzdWUgcmVjZW50bHkgYW5kIHNvbHZlZCBpdCBpbiBtdWNoIHRoZSBzYW1lCj4+ IHdheS4gIENhbiB3ZSByZW5hbWUgInNwaW5fbG9jayIgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmlu Z2Z1bD8gCj4+Cj4+Cj4+IFRoaXMgcmFjZSBhY3R1YWxseSBleHBvc2VkIGEgcG90ZW50aWFsIGRl YWRsb2NrIGJldHdlZW4gZjJmc19jcmVhdGUoKQo+PiBhbmQgZjJmc19pbml0eGF0dHJzKCk6IAo+ Pgo+Pgo+PiAtIHZmc19jcmVhdGUoKQo+PiAgLSBmMmZzX2NyZWF0ZSgpIC0gdGFrZXMgYW4gZnNf bG9jawo+PiAgIC0gZjJmc19hZGRfbGluaygpCj4+ICAgIC0gX19mMmZzX2FkZF9saW5rKCkKPj4g ICAgIC0gaW5pdF9pbm9kZV9tZXRhZGF0YSgpCj4+ICAgICAgLSBmMmZzX2luaXRfc2VjdXJpdHko KQo+PiAgICAgICAtIHNlY3VyaXR5X2lub2RlX2luaXRfc2VjdXJpdHkoKQo+PiAgICAgICAgLSBm MmZzX2luaXR4YXR0cnMoKQo+PiAgICAgICAgIC0gZjJmc19zZXR4YXR0cigpIC0gYWxzbyB0YWtl cyBhbiBmc19sb2NrCj4+Cj4+Cj4+IElmIGFub3RoZXIgQ1BVIGhhcHBlbnMgdG8gaGF2ZSB0aGUg c2FtZSBsb2NrIHRoYXQgZjJmc19zZXR4YXR0cigpIHdhcwo+PiB0cnlpbmcgdG8gdGFrZSBiZWNh dXNlIG9mIHRoZSByYWNlIGFyb3VuZCBuZXh0X2xvY2tfbnVtLCB3ZSBjYW4gZ2V0Cj4+IGludG8g YSBkZWFkbG9jayBzaXR1YXRpb24gaWYgdGhlIHR3byB0aHJlYWRzIGFyZSBhbHNvIGNvbnRlbmRp bmcgb3Zlcgo+PiBhbm90aGVyIHJlc291cmNlIChsaWtlIGJkaSkuCj4+Cj4+Cj4+IEFub3RoZXIg c2NlbmFyaW8gaXMgaWYgdGhlIGFib3ZlIGhhcHBlbnMgd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMg aW4KPj4gdGhlIG1pZGRsZSBvZiBncmFiYmluZyBhbGwgb2YgdGhlIGxvY2tzIHZpYSBtdXRleF9s b2NrX2FsbCgpLgo+PiAgZjJmc19jcmVhdGUoKSBpcyBob2xkaW5nIGEgbG9jayB0aGF0IG11dGV4 X2xvY2tfYWxsKCkgaXMgd2FpdGluZyBmb3IKPj4gYW5kIG11dGV4X2xvY2tfYWxsKCkgaXMgaG9s ZGluZyBhIGxvY2sgdGhhdCBmMmZzX3NldHhhdHRyKCkgaXMgd2FpdGluZwo+PiBmb3IuCj4+Cj4+ Cj4+IFJ1c3MKPj4KPj4KPj4gT24gRnJpLCBTZXAgNiwgMjAxMyBhdCA0OjQ4IEFNLCBDaGFvIFl1 IDxjaGFvMi55dUBzYW1zdW5nLmNvbT4gd3JvdGU6Cj4+ICAgICAgICAgSGkgS2ltOgo+PiAgICAg ICAgIAo+PiAgICAgICAgICAgICAgSSB0aGluayB0aGVyZSBpcyBhIHBlcmZvcm1hbmNlIHByb2Js ZW06IHdoZW4gYWxsCj4+ICAgICAgICAgc2JpLT5mc19sb2NrIGlzIGhvbGRlZCwgCj4+ICAgICAg ICAgCj4+ICAgICAgICAgdGhlbiBhbGwgb3RoZXIgdGhyZWFkcyBtYXkgZ2V0IHRoZSBzYW1lIG5l eHRfbG9jayB2YWx1ZSBmcm9tCj4+ICAgICAgICAgc2JpLT5uZXh0X2xvY2tfbnVtIGluIGZ1bmN0 aW9uIG11dGV4X2xvY2tfb3AsIAo+PiAgICAgICAgIAo+PiAgICAgICAgIGFuZCB3YWl0IHRvIGdl dCB0aGUgc2FtZSBsb2NrIGF0IHBvc2l0aW9uIGZzX2xvY2tbbmV4dF9sb2NrXSwKPj4gICAgICAg ICBpdCB1bmJhbGFuY2UgdGhlIGZzX2xvY2sgdXNhZ2UuIAo+PiAgICAgICAgIAo+PiAgICAgICAg IEl0IG1heSBsb3N0IHBlcmZvcm1hbmNlIHdoZW4gd2UgZG8gdGhlIG11bHRpdGhyZWFkIHRlc3Qu Cj4+ICAgICAgICAgCj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgIEhlcmUgaXMg dGhlIHBhdGNoIHRvIGZpeCB0aGlzIHByb2JsZW06Cj4+ICAgICAgICAgCj4+ICAgICAgICAgIAo+ PiAgICAgICAgIAo+PiAgICAgICAgIFNpZ25lZC1vZmYtYnk6IFl1IENoYW8gPGNoYW8yLnl1QHNh bXN1bmcuY29tPgo+PiAgICAgICAgIAo+PiAgICAgICAgIGRpZmYgLS1naXQgYS9mcy9mMmZzL2Yy ZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4+ICAgICAgICAgCj4+ICAgICAgICAgb2xkIG1vZGUgMTAw NjQ0Cj4+ICAgICAgICAgCj4+ICAgICAgICAgbmV3IG1vZGUgMTAwNzU1Cj4+ICAgICAgICAgCj4+ ICAgICAgICAgaW5kZXggNDY3ZDQyZC4uOTgzYmI0NQo+PiAgICAgICAgIAo+PiAgICAgICAgIC0t LSBhL2ZzL2YyZnMvZjJmcy5oCj4+ICAgICAgICAgCj4+ICAgICAgICAgKysrIGIvZnMvZjJmcy9m MmZzLmgKPj4gICAgICAgICAKPj4gICAgICAgICBAQCAtMzcxLDYgKzM3MSw3IEBAIHN0cnVjdCBm MmZzX3NiX2luZm8gewo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4 IGZzX2xvY2tbTlJfR0xPQkFMX0xPQ0tTXTsgIC8qIGJsb2NraW5nIEZTCj4+ICAgICAgICAgb3Bl cmF0aW9ucyAqLwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4IG5v ZGVfd3JpdGU7ICAgICAgICAgICAgICAgIC8qIGxvY2tpbmcKPj4gICAgICAgICBub2RlIHdyaXRl cyAqLwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4IHdyaXRlcGFn ZXM7ICAgICAgICAgICAgICAgIC8qIG11dGV4IGZvcgo+PiAgICAgICAgIHdyaXRlcGFnZXMoKSAq Lwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgc3BpbmxvY2tfdCBzcGluX2xvY2s7ICAg ICAgICAgICAgICAgICAgIC8qIGxvY2sgZm9yCj4+ICAgICAgICAgbmV4dF9sb2NrX251bSAqLwo+ PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZXh0X2xvY2tfbnVt OyAgICAgICAgICAgIC8qIHJvdW5kLXJvYmluCj4+ICAgICAgICAgZ2xvYmFsIGxvY2tzICovCj4+ ICAgICAgICAgCj4+ICAgICAgICAgICAgICAgICBpbnQgcG9yX2RvaW5nOyAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogcmVjb3ZlcnkgaXMKPj4gICAgICAgICBkb2luZyBvciBub3QgKi8KPj4g ICAgICAgICAKPj4gICAgICAgICAgICAgICAgIGludCBvbl9idWlsZF9mcmVlX25pZHM7ICAgICAg ICAgICAgICAgICAvKgo+PiAgICAgICAgIGJ1aWxkX2ZyZWVfbmlkcyBpcyBkb2luZyAqLwo+PiAg ICAgICAgIAo+PiAgICAgICAgIEBAIC01MzMsMTUgKzUzNCwxOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQKPj4gICAgICAgICBtdXRleF91bmxvY2tfYWxsKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkK Pj4gICAgICAgICAKPj4gICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgIHN0YXRpYyBp bmxpbmUgaW50IG11dGV4X2xvY2tfb3Aoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAg ICAgIAo+PiAgICAgICAgICB7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgLSAgICAgICB1bnNpZ25l ZCBjaGFyIG5leHRfbG9jayA9IHNiaS0+bmV4dF9sb2NrX251bSAlCj4+ICAgICAgICAgTlJfR0xP QkFMX0xPQ0tTOwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgdW5zaWduZWQgY2hhciBu ZXh0X2xvY2s7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgICAgICAgICBpbnQgaSA9IDA7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgZm9yICg7 IGkgPCBOUl9HTE9CQUxfTE9DS1M7IGkrKykKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKG11dGV4X3RyeWxvY2soJnNiaS0+ZnNfbG9ja1tpXSkpCj4+ICAgICAgICAg Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7Cj4+ICAgICAgICAg Cj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgIC0gICAgICAgbXV0ZXhfbG9jaygm c2JpLT5mc19sb2NrW25leHRfbG9ja10pOwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAg c3Bpbl9sb2NrKCZzYmktPnNwaW5fbG9jayk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKyAgICAg ICBuZXh0X2xvY2sgPSBzYmktPm5leHRfbG9ja19udW0gJSBOUl9HTE9CQUxfTE9DS1M7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgICAgICAgICBzYmktPm5leHRfbG9ja19udW0rKzsKPj4gICAgICAg ICAKPj4gICAgICAgICArICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnNwaW5fbG9jayk7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgKwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgbXV0ZXhf bG9jaygmc2JpLT5mc19sb2NrW25leHRfbG9ja10pOwo+PiAgICAgICAgIAo+PiAgICAgICAgICAg ICAgICAgcmV0dXJuIG5leHRfbG9jazsKPj4gICAgICAgICAKPj4gICAgICAgICAgfQo+PiAgICAg ICAgIAo+PiAgICAgICAgICAKPj4gICAgICAgICAKPj4gICAgICAgICBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9zdXBlci5jIGIvZnMvZjJmcy9zdXBlci5jCj4+ICAgICAgICAgCj4+ICAgICAgICAgb2xk IG1vZGUgMTAwNjQ0Cj4+ICAgICAgICAgCj4+ICAgICAgICAgbmV3IG1vZGUgMTAwNzU1Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgaW5kZXggNzVjN2RjMy4uNGYyNzU5Ngo+PiAgICAgICAgIAo+PiAg ICAgICAgIC0tLSBhL2ZzL2YyZnMvc3VwZXIuYwo+PiAgICAgICAgIAo+PiAgICAgICAgICsrKyBi L2ZzL2YyZnMvc3VwZXIuYwo+PiAgICAgICAgIAo+PiAgICAgICAgIEBAIC02NTcsNiArNjU3LDcg QEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0Cj4+ICAgICAgICAgc3VwZXJfYmxv Y2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQo+PiAgICAgICAgIAo+PiAgICAgICAgICAg ICAgICAgbXV0ZXhfaW5pdCgmc2JpLT5jcF9tdXRleCk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlJfR0xPQkFMX0xPQ0tTOyBpKyspCj4+ICAgICAgICAg Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4X2luaXQoJnNiaS0+ZnNfbG9ja1tpXSk7 Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKyAgICAgICBzcGluX2xvY2tfaW5pdCgmc2JpLT5zcGlu X2xvY2spOwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgbXV0ZXhfaW5pdCgmc2JpLT5u b2RlX3dyaXRlKTsKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAgIHNiaS0+cG9yX2RvaW5n ID0gMDsKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAgIHNwaW5fbG9ja19pbml0KCZzYmkt PnN0YXRfbG9jayk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKEVORCkKPj4gICAgICAgICAKPj4g ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAg Cj4+ICAgICAgICAgCj4+ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAgICAgICAg TGVhcm4gdGhlIGxhdGVzdC0tVmlzdWFsIFN0dWRpbyAyMDEyLCBTaGFyZVBvaW50IDIwMTMsIFNR TAo+PiAgICAgICAgIDIwMTIsIG1vcmUhCj4+ICAgICAgICAgRGlzY292ZXIgdGhlIGVhc3kgd2F5 IHRvIG1hc3RlciBjdXJyZW50IGFuZCBwcmV2aW91cyBNaWNyb3NvZnQKPj4gICAgICAgICB0ZWNo bm9sb2dpZXMKPj4gICAgICAgICBhbmQgYWR2YW5jZSB5b3VyIGNhcmVlci4gR2V0IGFuIGluY3Jl ZGlibGUgMSw1MDArIGhvdXJzIG9mCj4+ICAgICAgICAgc3RlcC1ieS1zdGVwCj4+ICAgICAgICAg dHV0b3JpYWwgdmlkZW9zIHdpdGggTGVhcm5EZXZOb3cuIFN1YnNjcmliZSB0b2RheSBhbmQgc2F2 ZSEKPj4gICAgICAgICBodHRwOi8vcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dhbXBhZC9jbGs/ aWQ9NTgwNDEzOTEmaXU9LzQxNDAvb3N0Zy5jbGt0cmsKPj4gICAgICAgICBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiAgICAgICAgIExpbnV4LWYyZnMt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ICAgICAgICAgTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3Vy Y2Vmb3JnZS5uZXQKPj4gICAgICAgICBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0 cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCj4+ICAgICAgICAgCj4+Cj4+Cj4+ICAKPj4KPj4g IAo+Pgo+PiAgCj4+Cj4+Cj4+Cj4+Cj4gCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIb3cgU2Vy dmljZU5vdyBoZWxwcyBJVCBwZW9wbGUgdHJhbnNmb3JtIElUIGRlcGFydG1lbnRzOgoxLiBDb25z b2xpZGF0ZSBsZWdhY3kgSVQgc3lzdGVtcyB0byBhIHNpbmdsZSBzeXN0ZW0gb2YgcmVjb3JkIGZv ciBJVAoyLiBTdGFuZGFyZGl6ZSBhbmQgZ2xvYmFsaXplIHNlcnZpY2UgcHJvY2Vzc2VzIGFjcm9z cyBJVAozLiBJbXBsZW1lbnQgemVyby10b3VjaCBhdXRvbWF0aW9uIHRvIHJlcGxhY2UgbWFudWFs LCByZWR1bmRhbnQgdGFza3MKaHR0cDovL3B1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9nYW1wYWQv Y2xrP2lkPTUxMjcxMTExJml1PS80MTQwL29zdGcuY2xrdHJrCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0 CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291 cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753214Ab3IKD1i (ORCPT ); Tue, 10 Sep 2013 23:27:38 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:3981 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1750974Ab3IKD1g convert rfc822-to-8bit (ORCPT ); Tue, 10 Sep 2013 23:27:36 -0400 X-IronPort-AV: E=Sophos;i="4.90,881,1371052800"; d="scan'208";a="8483933" Message-ID: <522FE1FF.9010901@cn.fujitsu.com> Date: Wed, 11 Sep 2013 11:22:39 +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: jaegeuk.kim@samsung.com CC: chao2.yu@samsung.com, Russ Knize , "linux-fsdevel@vger.kernel.org" , =?UTF-8?B?6LCt5aed?= , "linux-kernel@vger.kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" Subject: Re: [f2fs-dev] [PATCH] f2fs: optimize fs_lock for better performance References: <04.C0.13361.61DDA225@epcpsbge5.samsung.com> <1378774750.2354.110.camel@kjgkr> In-Reply-To: <1378774750.2354.110.camel@kjgkr> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/09/11 11:25:06, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/09/11 11:25:08 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jaegeuk, On 09/10/2013 08:59 AM, Jaegeuk Kim wrote: > Hi, > > 2013-09-07 (토), 08:00 +0000, Chao Yu: >> Hi Knize, >> >> Thanks for your reply, I think it's actually meaningless that it's >> being named after "spin_lock", >> it's better to rename this spinlock to "round_robin_lock". >> >> This patch can only resolve the issue of unbalanced fs_lock usage, >> it can not fix the deadlock issue. >> can we fix deadlock issue through this method: >> >> - vfs_create() >> - f2fs_create() - takes an fs_lock and save current thread info into >> thread_info[NR_GLOBAL_LOCKS] >> - f2fs_add_link() >> - __f2fs_add_link() >> - init_inode_metadata() >> - f2fs_init_security() >> - security_inode_init_security() >> - f2fs_initxattrs() >> - f2fs_setxattr() - get fs_lock only if there is no current >> thread info in thread_info >> >> So it keeps one thread can only hold one fs_lock to avoid deadlock. >> Can we use this solution? > > It could be. > But, I think we can avoid to grab the fs_lock at the f2fs_initxattrs() Agree. This fs_lock here is used to protect the xattr from parallel modification, but here is in the initxattrs routine, parallel modification can not happen. And in the normal setxattr routine the inode->i_mutex (vfs layer) is used to avoid parallel modification. So I think this fs_lock is needless. Am I missing something? Regards, Gu > level, since this case only happens when f2fs_initxattrs() is called. > Let's think about ut in more detail. > Thanks, > >> >> >> >> thanks again! >> >> >> >> ------- Original Message ------- >> >> Sender : Russ Knize >> >> Date : 九月 07, 2013 04:25 (GMT+09:00) >> >> Title : Re: [f2fs-dev] [PATCH] f2fs: optimize fs_lock for better >> performance >> >> >> >> I encountered this same issue recently and solved it in much the same >> way. Can we rename "spin_lock" to something more meaningful? >> >> >> This race actually exposed a potential deadlock between f2fs_create() >> and f2fs_initxattrs(): >> >> >> - vfs_create() >> - f2fs_create() - takes an fs_lock >> - f2fs_add_link() >> - __f2fs_add_link() >> - init_inode_metadata() >> - f2fs_init_security() >> - security_inode_init_security() >> - f2fs_initxattrs() >> - f2fs_setxattr() - also takes an fs_lock >> >> >> If another CPU happens to have the same lock that f2fs_setxattr() was >> trying to take because of the race around next_lock_num, we can get >> into a deadlock situation if the two threads are also contending over >> another resource (like bdi). >> >> >> Another scenario is if the above happens while another thread is in >> the middle of grabbing all of the locks via mutex_lock_all(). >> f2fs_create() is holding a lock that mutex_lock_all() is waiting for >> and mutex_lock_all() is holding a lock that f2fs_setxattr() is waiting >> for. >> >> >> Russ >> >> >> On Fri, Sep 6, 2013 at 4:48 AM, Chao Yu wrote: >> Hi Kim: >> >> I think there is a performance problem: when all >> sbi->fs_lock is holded, >> >> then all other threads may get the same next_lock value from >> sbi->next_lock_num in function mutex_lock_op, >> >> and wait to get the same lock at position fs_lock[next_lock], >> it unbalance the fs_lock usage. >> >> It may lost performance when we do the multithread test. >> >> >> >> Here is the patch to fix this problem: >> >> >> >> Signed-off-by: Yu Chao >> >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h >> >> old mode 100644 >> >> new mode 100755 >> >> index 467d42d..983bb45 >> >> --- a/fs/f2fs/f2fs.h >> >> +++ b/fs/f2fs/f2fs.h >> >> @@ -371,6 +371,7 @@ struct f2fs_sb_info { >> >> struct mutex fs_lock[NR_GLOBAL_LOCKS]; /* blocking FS >> operations */ >> >> struct mutex node_write; /* locking >> node writes */ >> >> struct mutex writepages; /* mutex for >> writepages() */ >> >> + spinlock_t spin_lock; /* lock for >> next_lock_num */ >> >> unsigned char next_lock_num; /* round-robin >> global locks */ >> >> int por_doing; /* recovery is >> doing or not */ >> >> int on_build_free_nids; /* >> build_free_nids is doing */ >> >> @@ -533,15 +534,19 @@ static inline void >> mutex_unlock_all(struct f2fs_sb_info *sbi) >> >> >> >> static inline int mutex_lock_op(struct f2fs_sb_info *sbi) >> >> { >> >> - unsigned char next_lock = sbi->next_lock_num % >> NR_GLOBAL_LOCKS; >> >> + unsigned char next_lock; >> >> int i = 0; >> >> >> >> for (; i < NR_GLOBAL_LOCKS; i++) >> >> if (mutex_trylock(&sbi->fs_lock[i])) >> >> return i; >> >> >> >> - mutex_lock(&sbi->fs_lock[next_lock]); >> >> + spin_lock(&sbi->spin_lock); >> >> + next_lock = sbi->next_lock_num % NR_GLOBAL_LOCKS; >> >> sbi->next_lock_num++; >> >> + spin_unlock(&sbi->spin_lock); >> >> + >> >> + mutex_lock(&sbi->fs_lock[next_lock]); >> >> return next_lock; >> >> } >> >> >> >> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c >> >> old mode 100644 >> >> new mode 100755 >> >> index 75c7dc3..4f27596 >> >> --- a/fs/f2fs/super.c >> >> +++ b/fs/f2fs/super.c >> >> @@ -657,6 +657,7 @@ static int f2fs_fill_super(struct >> super_block *sb, void *data, int silent) >> >> mutex_init(&sbi->cp_mutex); >> >> for (i = 0; i < NR_GLOBAL_LOCKS; i++) >> >> mutex_init(&sbi->fs_lock[i]); >> >> + spin_lock_init(&sbi->spin_lock); >> >> mutex_init(&sbi->node_write); >> >> sbi->por_doing = 0; >> >> spin_lock_init(&sbi->stat_lock); >> >> (END) >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Learn the latest--Visual Studio 2012, SharePoint 2013, SQL >> 2012, more! >> Discover the easy way to master current and previous Microsoft >> technologies >> and advance your career. Get an incredible 1,500+ hours of >> step-by-step >> tutorial videos with LearnDevNow. Subscribe today and save! >> http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk >> _______________________________________________ >> Linux-f2fs-devel mailing list >> Linux-f2fs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel >> >> >> >> >> >> >> >> >> >> >> >> >