From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gu Zheng Subject: Re: [PATCH] f2fs: optimize fs_lock for better performance Date: Thu, 12 Sep 2013 11:18:00 +0800 Message-ID: <52313268.4010002@cn.fujitsu.com> References: <88.C4.11914.9D4A9225@epcpsbge6.samsung.com> <1378774324.2354.103.camel@kjgkr> <523001B6.3080506@cn.fujitsu.com> <001001ceaf61$a4ea9a90$eebfcfb0$@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1VJxUb-0003G2-0O for linux-f2fs-devel@lists.sourceforge.net; Thu, 12 Sep 2013 03:22:53 +0000 Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by sog-mx-4.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VJxUZ-000532-MN for linux-f2fs-devel@lists.sourceforge.net; Thu, 12 Sep 2013 03:22:52 +0000 In-Reply-To: <001001ceaf61$a4ea9a90$eebfcfb0$@samsung.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: =?UTF-8?B?5L+e6LaF?= Cc: linux-fsdevel@vger.kernel.org, shu.tan@samsung.com, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net SGkgQ2hhbywKT24gMDkvMTIvMjAxMyAxMDo0MCBBTSwg5L+e6LaFIHdyb3RlOgoKPiBIaSBHdQo+ IAo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBHdSBaaGVuZyBbbWFpbHRv Omd1ei5mbnN0QGNuLmZ1aml0c3UuY29tXQo+PiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAx MSwgMjAxMyAxOjM4IFBNCj4+IFRvOiBqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbQo+PiBDYzogY2hh bzIueXVAc2Ftc3VuZy5jb207IHNodS50YW5Ac2Ftc3VuZy5jb207Cj4+IGxpbnV4LWZzZGV2ZWxA dmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOwo+PiBsaW51eC1m MmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAo+PiBTdWJqZWN0OiBSZTogW2YyZnMtZGV2 XVtQQVRDSF0gZjJmczogb3B0aW1pemUgZnNfbG9jayBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCj4+ Cj4+IEhpIEphZWdldWssIENoYW8sCj4+Cj4+IE9uIDA5LzEwLzIwMTMgMDg6NTIgQU0sIEphZWdl dWsgS2ltIHdyb3RlOgo+Pgo+Pj4gSGksCj4+Pgo+Pj4gQXQgZmlyc3QsIHRoYW5rIHlvdSBmb3Ig dGhlIHJlcG9ydCBhbmQgcGxlYXNlIGZvbGxvdyB0aGUgZW1haWwgd3JpdGluZwo+Pj4gcnVsZXMu IDopCj4+Pgo+Pj4gQW55d2F5LCBJIGFncmVlIHRvIHRoZSBiZWxvdyBpc3N1ZS4KPj4+IE9uZSB0 aGluZyB0aGF0IEkgY2FuIHRoaW5rIG9mIGlzIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB1c2UgdGhl Cj4+PiBzcGluX2xvY2ssIHNpbmNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGV4YWN0IGxvY2sg bnVtYmVyLCBidXQganVzdAo+Pj4gbmVlZCB0byBnZXQgYW55IG5vdC1jb2xsaWRlZCBudW1iZXIu Cj4+Cj4+IElNSE8sIGp1c3QgbW92aW5nIHNiaS0+bmV4dF9sb2NrX251bSsrIGJlZm9yZQo+PiBt dXRleF9sb2NrKCZzYmktPmZzX2xvY2tbbmV4dF9sb2NrXSkKPj4gY2FuIGF2b2lkIHVuYmFsYW5j ZSBpc3N1ZSBtb3N0bHkuCj4+IElNTywgdGhlIGNhc2UgdHdvIG9yIG1vcmUgdGhyZWFkcyBpbmNy ZWFzZSBzYmktPm5leHRfbG9ja19udW0gaW4gdGhlIHNhbWUKPj4gdGltZSBpcyByZWFsbHkgdmVy eSB2ZXJ5IGxpdHRsZS4gSWYgeW91IHRoaW5rIGl0IGlzIG5vdCByaWdvcm91cywgY2hhbmdlCj4+ IG5leHRfbG9ja19udW0gdG8gYXRvbWljIG9uZSBjYW4gZml4IGl0Lgo+PiBXaGF0J3MgeW91ciBv cGluaW9uPwo+Pgo+PiBSZWdhcmRzLAo+PiBHdQo+IAo+IEkgZGlkIHRoZSB0ZXN0IHNiaS0+bmV4 dF9sb2NrX251bSsrIGNvbXBhcmUgd2l0aCB0aGUgYXRvbWljIG9uZSwKPiBBbmQgSSBmb3VuZCBw ZXJmb3JtYW5jZSBvZiB0aGVtIGlzIGFsbW9zdCB0aGUgc2FtZSB1bmRlciBhIHNtYWxsIG51bWJl ciB0aHJlYWQgcmFjaW5nLgo+IFNvIGFzIHlvdXIgYW5kIEtpbSdzIG9waW5pb24sIGl0J3MgZW5v dWdoIHRvIHVzZSAic2JpLT5uZXh0X2xvY2tfbnVtKysiIHRvIGZpeCB0aGlzIGlzc3VlLgoKR29v ZCwgYnV0IGl0IHNlZW1zIHRoYXQgeW91ciByZXBsYXkgcGF0Y2ggaXMgb3V0IG9mIGZvcm1hdCwg YW5kIGl0J3MgaGFyZCBmb3IgSmFlZ2V1ayB0byBtZXJnZS4KSSdsbCBmb3JtYXQgaXQsIHNlZSB0 aGUgZm9sbG93aW5nIHRocmVhZC4KClRoYW5rcywKR3UKCj4gCj4gVGhhbmtzIGZvciB0aGUgYWR2 aWNlLgo+Pgo+Pj4KPj4+IFNvLCBob3cgYWJvdXQgcmVtb3ZpbmcgdGhlIHNwaW5fbG9jaz8KPj4+ IEFuZCBob3cgYWJvdXQgdXNpbmcgYSByYW5kb20gbnVtYmVyPwo+Pgo+Pj4gVGhhbmtzLAo+Pj4K Pj4+IDIwMTMtMDktMDYgKOq4iCksIDA5OjQ4ICswMDAwLCBDaGFvIFl1Ogo+Pj4+IEhpIEtpbToK Pj4+Pgo+Pj4+ICAgICAgSSB0aGluayB0aGVyZSBpcyBhIHBlcmZvcm1hbmNlIHByb2JsZW06IHdo ZW4gYWxsIHNiaS0+ZnNfbG9jayBpcwo+Pj4+IGhvbGRlZCwKPj4+Pgo+Pj4+IHRoZW4gYWxsIG90 aGVyIHRocmVhZHMgbWF5IGdldCB0aGUgc2FtZSBuZXh0X2xvY2sgdmFsdWUgZnJvbQo+Pj4+IHNi aS0+bmV4dF9sb2NrX251bSBpbiBmdW5jdGlvbiBtdXRleF9sb2NrX29wLAo+Pj4+Cj4+Pj4gYW5k IHdhaXQgdG8gZ2V0IHRoZSBzYW1lIGxvY2sgYXQgcG9zaXRpb24gZnNfbG9ja1tuZXh0X2xvY2td LCBpdAo+Pj4+IHVuYmFsYW5jZSB0aGUgZnNfbG9jayB1c2FnZS4KPj4+Pgo+Pj4+IEl0IG1heSBs b3N0IHBlcmZvcm1hbmNlIHdoZW4gd2UgZG8gdGhlIG11bHRpdGhyZWFkIHRlc3QuCj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4gSGVyZSBpcyB0aGUgcGF0Y2ggdG8gZml4IHRoaXMgcHJvYmxlbToKPj4+Pgo+ Pj4+Cj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBZdSBDaGFvIDxjaGFvMi55dUBzYW1zdW5nLmNv bT4KPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5o Cj4+Pj4KPj4+PiBvbGQgbW9kZSAxMDA2NDQKPj4+Pgo+Pj4+IG5ldyBtb2RlIDEwMDc1NQo+Pj4+ Cj4+Pj4gaW5kZXggNDY3ZDQyZC4uOTgzYmI0NQo+Pj4+Cj4+Pj4gLS0tIGEvZnMvZjJmcy9mMmZz LmgKPj4+Pgo+Pj4+ICsrKyBiL2ZzL2YyZnMvZjJmcy5oCj4+Pj4KPj4+PiBAQCAtMzcxLDYgKzM3 MSw3IEBAIHN0cnVjdCBmMmZzX3NiX2luZm8gewo+Pj4+Cj4+Pj4gICAgICAgICBzdHJ1Y3QgbXV0 ZXggZnNfbG9ja1tOUl9HTE9CQUxfTE9DS1NdOyAgLyogYmxvY2tpbmcgRlMKPj4+PiBvcGVyYXRp b25zICovCj4+Pj4KPj4+PiAgICAgICAgIHN0cnVjdCBtdXRleCBub2RlX3dyaXRlOyAgICAgICAg ICAgICAgICAvKiBsb2NraW5nIG5vZGUKPj4gd3JpdGVzCj4+Pj4gKi8KPj4+Pgo+Pj4+ICAgICAg ICAgc3RydWN0IG11dGV4IHdyaXRlcGFnZXM7ICAgICAgICAgICAgICAgIC8qIG11dGV4IGZvcgo+ Pj4+IHdyaXRlcGFnZXMoKSAqLwo+Pj4+Cj4+Pj4gKyAgICAgICBzcGlubG9ja190IHNwaW5fbG9j azsgICAgICAgICAgICAgICAgICAgLyogbG9jayBmb3IKPj4+PiBuZXh0X2xvY2tfbnVtICovCj4+ Pj4KPj4+PiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmV4dF9sb2NrX251bTsgICAgICAgICAgICAv KiByb3VuZC1yb2Jpbgo+PiBnbG9iYWwKPj4+PiBsb2NrcyAqLwo+Pj4+Cj4+Pj4gICAgICAgICBp bnQgcG9yX2RvaW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjb3ZlcnkgaXMgZG9p bmcKPj4+PiBvciBub3QgKi8KPj4+Pgo+Pj4+ICAgICAgICAgaW50IG9uX2J1aWxkX2ZyZWVfbmlk czsgICAgICAgICAgICAgICAgIC8qIGJ1aWxkX2ZyZWVfbmlkcyBpcwo+Pj4+IGRvaW5nICovCj4+ Pj4KPj4+PiBAQCAtNTMzLDE1ICs1MzQsMTkgQEAgc3RhdGljIGlubGluZSB2b2lkIG11dGV4X3Vu bG9ja19hbGwoc3RydWN0Cj4+Pj4gZjJmc19zYl9pbmZvICpzYmkpCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4gIHN0YXRpYyBpbmxpbmUgaW50IG11dGV4X2xvY2tfb3Aoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpKQo+Pj4+Cj4+Pj4gIHsKPj4+Pgo+Pj4+IC0gICAgICAgdW5zaWduZWQgY2hhciBuZXh0X2xv Y2sgPSBzYmktPm5leHRfbG9ja19udW0gJQo+Pj4+IE5SX0dMT0JBTF9MT0NLUzsKPj4+Pgo+Pj4+ ICsgICAgICAgdW5zaWduZWQgY2hhciBuZXh0X2xvY2s7Cj4+Pj4KPj4+PiAgICAgICAgIGludCBp ID0gMDsKPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgICAgICAgIGZvciAoOyBpIDwgTlJfR0xPQkFMX0xP Q0tTOyBpKyspCj4+Pj4KPj4+PiAgICAgICAgICAgICAgICAgaWYgKG11dGV4X3RyeWxvY2soJnNi aS0+ZnNfbG9ja1tpXSkpCj4+Pj4KPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g aTsKPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAtICAgICAgIG11dGV4X2xvY2soJnNiaS0+ZnNfbG9ja1tu ZXh0X2xvY2tdKTsKPj4+Pgo+Pj4+ICsgICAgICAgc3Bpbl9sb2NrKCZzYmktPnNwaW5fbG9jayk7 Cj4+Pj4KPj4+PiArICAgICAgIG5leHRfbG9jayA9IHNiaS0+bmV4dF9sb2NrX251bSAlIE5SX0dM T0JBTF9MT0NLUzsKPj4+Pgo+Pj4+ICAgICAgICAgc2JpLT5uZXh0X2xvY2tfbnVtKys7Cj4+Pj4K Pj4+PiArICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnNwaW5fbG9jayk7Cj4+Pj4KPj4+PiArCj4+ Pj4KPj4+PiArICAgICAgIG11dGV4X2xvY2soJnNiaS0+ZnNfbG9ja1tuZXh0X2xvY2tdKTsKPj4+ Pgo+Pj4+ICAgICAgICAgcmV0dXJuIG5leHRfbG9jazsKPj4+Pgo+Pj4+ICB9Cj4+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc3VwZXIuYyBiL2ZzL2YyZnMvc3VwZXIuYwo+ Pj4+Cj4+Pj4gb2xkIG1vZGUgMTAwNjQ0Cj4+Pj4KPj4+PiBuZXcgbW9kZSAxMDA3NTUKPj4+Pgo+ Pj4+IGluZGV4IDc1YzdkYzMuLjRmMjc1OTYKPj4+Pgo+Pj4+IC0tLSBhL2ZzL2YyZnMvc3VwZXIu Ywo+Pj4+Cj4+Pj4gKysrIGIvZnMvZjJmcy9zdXBlci5jCj4+Pj4KPj4+PiBAQCAtNjU3LDYgKzY1 Nyw3IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jawo+Pj4+ ICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKPj4+Pgo+Pj4+ICAgICAgICAgbXV0ZXhfaW5p dCgmc2JpLT5jcF9tdXRleCk7Cj4+Pj4KPj4+PiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOUl9H TE9CQUxfTE9DS1M7IGkrKykKPj4+Pgo+Pj4+ICAgICAgICAgICAgICAgICBtdXRleF9pbml0KCZz YmktPmZzX2xvY2tbaV0pOwo+Pj4+Cj4+Pj4gKyAgICAgICBzcGluX2xvY2tfaW5pdCgmc2JpLT5z cGluX2xvY2spOwo+Pj4+Cj4+Pj4gICAgICAgICBtdXRleF9pbml0KCZzYmktPm5vZGVfd3JpdGUp Owo+Pj4+Cj4+Pj4gICAgICAgICBzYmktPnBvcl9kb2luZyA9IDA7Cj4+Pj4KPj4+PiAgICAgICAg IHNwaW5fbG9ja19pbml0KCZzYmktPnN0YXRfbG9jayk7Cj4+Pj4KPj4+PiAoRU5EKQo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4KPj4KPj4KPj4gPQo+IAo+IAoKCgotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KSG93IFNlcnZpY2VOb3cgaGVscHMgSVQgcGVvcGxlIHRyYW5zZm9ybSBJVCBk ZXBhcnRtZW50czoKMS4gQ29uc29saWRhdGUgbGVnYWN5IElUIHN5c3RlbXMgdG8gYSBzaW5nbGUg c3lzdGVtIG9mIHJlY29yZCBmb3IgSVQKMi4gU3RhbmRhcmRpemUgYW5kIGdsb2JhbGl6ZSBzZXJ2 aWNlIHByb2Nlc3NlcyBhY3Jvc3MgSVQKMy4gSW1wbGVtZW50IHplcm8tdG91Y2ggYXV0b21hdGlv biB0byByZXBsYWNlIG1hbnVhbCwgcmVkdW5kYW50IHRhc2tzCmh0dHA6Ly9wdWJhZHMuZy5kb3Vi bGVjbGljay5uZXQvZ2FtcGFkL2Nsaz9pZD01MTI3MTExMSZpdT0vNDE0MC9vc3RnLmNsa3Ryawpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZz LWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5l dApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZz LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757660Ab3ILDWw (ORCPT ); Wed, 11 Sep 2013 23:22:52 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:42252 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1752790Ab3ILDWu convert rfc822-to-8bit (ORCPT ); Wed, 11 Sep 2013 23:22:50 -0400 X-IronPort-AV: E=Sophos;i="4.90,888,1371052800"; d="scan'208";a="8499499" Message-ID: <52313268.4010002@cn.fujitsu.com> Date: Thu, 12 Sep 2013 11:18:00 +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: =?UTF-8?B?5L+e6LaF?= CC: jaegeuk.kim@samsung.com, shu.tan@samsung.com, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: Re: [f2fs-dev][PATCH] f2fs: optimize fs_lock for better performance References: <88.C4.11914.9D4A9225@epcpsbge6.samsung.com> <1378774324.2354.103.camel@kjgkr> <523001B6.3080506@cn.fujitsu.com> <001001ceaf61$a4ea9a90$eebfcfb0$@samsung.com> In-Reply-To: <001001ceaf61$a4ea9a90$eebfcfb0$@samsung.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/09/12 11:20:26, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/09/12 11:20:27 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 Chao, On 09/12/2013 10:40 AM, 俞超 wrote: > Hi Gu > >> -----Original Message----- >> From: Gu Zheng [mailto:guz.fnst@cn.fujitsu.com] >> Sent: Wednesday, September 11, 2013 1:38 PM >> To: jaegeuk.kim@samsung.com >> Cc: chao2.yu@samsung.com; shu.tan@samsung.com; >> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; >> linux-f2fs-devel@lists.sourceforge.net >> Subject: Re: [f2fs-dev][PATCH] f2fs: optimize fs_lock for better performance >> >> Hi Jaegeuk, Chao, >> >> On 09/10/2013 08:52 AM, Jaegeuk Kim wrote: >> >>> Hi, >>> >>> At first, thank you for the report and please follow the email writing >>> rules. :) >>> >>> Anyway, I agree to the below issue. >>> One thing that I can think of is that we don't need to use the >>> spin_lock, since we don't care about the exact lock number, but just >>> need to get any not-collided number. >> >> IMHO, just moving sbi->next_lock_num++ before >> mutex_lock(&sbi->fs_lock[next_lock]) >> can avoid unbalance issue mostly. >> IMO, the case two or more threads increase sbi->next_lock_num in the same >> time is really very very little. If you think it is not rigorous, change >> next_lock_num to atomic one can fix it. >> What's your opinion? >> >> Regards, >> Gu > > I did the test sbi->next_lock_num++ compare with the atomic one, > And I found performance of them is almost the same under a small number thread racing. > So as your and Kim's opinion, it's enough to use "sbi->next_lock_num++" to fix this issue. Good, but it seems that your replay patch is out of format, and it's hard for Jaegeuk to merge. I'll format it, see the following thread. Thanks, Gu > > Thanks for the advice. >> >>> >>> So, how about removing the spin_lock? >>> And how about using a random number? >> >>> Thanks, >>> >>> 2013-09-06 (금), 09:48 +0000, Chao Yu: >>>> 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) >>>> >>>> >>>> >>>> >>>> >>>> >>> >> >> >> = > >