From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 65401D58065 for ; Mon, 25 Nov 2024 11:14:02 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1tFX2W-0001Mq-OD; Mon, 25 Nov 2024 11:14:00 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1tFX2V-0001Mk-7o for linux-f2fs-devel@lists.sourceforge.net; Mon, 25 Nov 2024 11:13:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: From:References:To:Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=c/VyPmzs8Xbq1ApgWPjWNpCrxAFIkkn7RfHPVRn0gvg=; b=gMsYCX6HS8D0zP6xvKwIyQt2Js lgJNnXsxT4ZOBUVOIm3/LWVpIPtH22H7Ili5iMrrwfFU1yoRrD4IUiujUeRJiVBbMQgD5LD+Fhp7I hmhvEXmrQew46KgMlrmjX10ryTZCb7ML/KjTqSbuhwEfRGQvpkhonYXbEdKoSyODcwzo=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:References:To: Subject:Cc:MIME-Version:Date:Message-ID:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=c/VyPmzs8Xbq1ApgWPjWNpCrxAFIkkn7RfHPVRn0gvg=; b=KhDwBkcj35AMgwNNIsu15evr1m 3h6b+3bBh4A/Jid18cvUW8pT8wlU9NQT1Q5qF5cfOrAwDEL0P/EZgJToDG/3Q7uEFPjKEvPEQazPR C5LIvcQa3bfECKg5kVYTtIrvhNEXPMpsJhuIhjAB4qLSokYiIm8ohcg2UvYPwafOnMgE=; Received: from nyc.source.kernel.org ([147.75.193.91]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1tFX2U-0003pu-AE for linux-f2fs-devel@lists.sourceforge.net; Mon, 25 Nov 2024 11:13:59 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 9E757A41624; Mon, 25 Nov 2024 11:11:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF722C4CECE; Mon, 25 Nov 2024 11:13:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1732533232; bh=em2+R4u2wEQPpLl6eVmHSeE2ZgN4ooDYI6iFZ92Y+sI=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=FJPmdiQekWqfdMgE1/OmJyFKt6+URYxapD+gGJI5GzAwba32anEEa4xmEB+xMYiC2 Ft1UT90zHjBBJhwlrBNDhxHdIfUrabWdhpXMjaQB1XUITtrdnA7D2quZlrxoG2naAU gtpk+BJNv97q+8Gj5MTbf+wiGuFZ6q7lcck45aQpbMTVJW7Yfy9aa3RewgNdpAqb1A sT3K6KT7Pxt/r+ieMZkP9FpPwKCfRBSWsWFK1e1BrO/5duCkkU+ICdKYpSh/7qr8G7 zOODtTV3aotqEcjUx5tuYQ/FUjhxdzFgGb4KukBcr09Thx4e9sEjJCRjuuAgoBbjgO koo9L7fp/OBGA== Message-ID: <0b9efdbb-e897-45d2-8005-bd3d6f6fa2db@kernel.org> Date: Mon, 25 Nov 2024 19:13:48 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: =?UTF-8?B?546L56eA57qiIChYaXVob25nIFdhbmcp?= , "jaegeuk@kernel.org" References: <20241122065005.3772987-1-chao@kernel.org> <6ddf779148f44295acfbe547d9ec3aab@BJMBX02.spreadtrum.com> Content-Language: en-US In-Reply-To: <6ddf779148f44295acfbe547d9ec3aab@BJMBX02.spreadtrum.com> X-Headers-End: 1tFX2U-0003pu-AE Subject: Re: [f2fs-dev] =?utf-8?b?562U5aSNOiBbUEFUQ0ggdjIgMS8yXSBmMmZzOiBm?= =?utf-8?q?ix_to_shrink_read_extent_node_in_batches?= X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Chao Yu via Linux-f2fs-devel Reply-To: Chao Yu Cc: =?UTF-8?B?54mb5b+X5Zu9IChaaGlndW8gTml1KQ==?= , "linux-kernel@vger.kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gMjAyNC8xMS8yNSAxMToxMSwg546L56eA57qiIChYaXVob25nIFdhbmcpIHdyb3RlOgo+IEhp IENoYW8sCj4gCj4gYWZ0ZXIgdGVzdGVkIGluIHRoaXMgd2Vla2VuZCB3aXRoIHRoZXNlIHBhdGNo IGJhc2Ugb24gdGhlIG9yZ2luYWwgY2FzZSwgbm8gaXNzdWUgcmVwcm9kdWNlZCwgc28KPiBUZXN0 ZWQtYnk6IFhpdWhvbmcgV2FuZyA8eGl1aG9uZy53YW5nQHVuaXNvYy5jb20+CgpIaSBYaXVob25n LAoKVGhhbmtzIGZvciBoZWxwaW5nIHRvIHRlc3QuCgpUaGFua3MsCgo+IAo+IHRoYW5rcyEKPiAK PiAtLS0tLemCruS7tuWOn+S7ti0tLS0tCj4g5Y+R5Lu25Lq6OiBDaGFvIFl1IDxjaGFvQGtlcm5l bC5vcmc+Cj4g5Y+R6YCB5pe26Ze0OiAyMDI05bm0MTHmnIgyMuaXpSAxNDo1MAo+IOaUtuS7tuS6 ujogamFlZ2V1a0BrZXJuZWwub3JnCj4g5oqE6YCBOiBsaW51eC1mMmZzLWRldmVsQGxpc3RzLnNv dXJjZWZvcmdlLm5ldDsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgQ2hhbyBZdSA8Y2hh b0BrZXJuZWwub3JnPjsg546L56eA57qiIChYaXVob25nIFdhbmcpIDxYaXVob25nLldhbmdAdW5p c29jLmNvbT47IOeJm+W/l+WbvSAoWmhpZ3VvIE5pdSkgPFpoaWd1by5OaXVAdW5pc29jLmNvbT4K PiDkuLvpopg6IFtQQVRDSCB2MiAxLzJdIGYyZnM6IGZpeCB0byBzaHJpbmsgcmVhZCBleHRlbnQg bm9kZSBpbiBiYXRjaGVzCj4gCj4gCj4g5rOo5oSPOiDov5nlsIHpgq7ku7bmnaXoh6rkuo7lpJbp g6jjgILpmaTpnZ7kvaDnoa7lrprpgq7ku7blhoXlrrnlronlhajvvIzlkKbliJnkuI3opoHngrnl h7vku7vkvZXpk77mjqXlkozpmYTku7bjgIIKPiBDQVVUSU9OOiBUaGlzIGVtYWlsIG9yaWdpbmF0 ZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBvcmdhbml6YXRpb24uIERvIG5vdCBjbGljayBsaW5rcyBv ciBvcGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3UgcmVjb2duaXplIHRoZSBzZW5kZXIgYW5kIGtu b3cgdGhlIGNvbnRlbnQgaXMgc2FmZS4KPiAKPiAKPiAKPiBXZSB1c2Ugcndsb2NrIHRvIHByb3Rl Y3QgY29yZSBzdHJ1Y3R1cmUgZGF0YSBvZiBleHRlbnQgdHJlZSBkdXJpbmcgaXRzIHNocmluaywg aG93ZXZlciwgaWYgdGhlcmUgaXMgYSBodWdlIG51bWJlciBvZiBleHRlbnQgbm9kZXMgaW4gZXh0 ZW50IHRyZWUsIGR1cmluZyBzaHJpbmsgb2YgZXh0ZW50IHRyZWUsIGl0IG1heSBob2xkIHJ3bG9j ayBmb3IgYSB2ZXJ5IGxvbmcgdGltZSwgd2hpY2ggbWF5IHRyaWdnZXIga2VybmVsIGhhbmcgaXNz dWUuCj4gCj4gVGhpcyBwYXRjaCBmaXhlcyB0byBzaHJpbmsgcmVhZCBleHRlbnQgbm9kZSBpbiBi YXRjaGVzLCBzbyB0aGF0LCBjcml0aWNhbCByZWdpb24gb2YgdGhlIHJ3bG9jayBjYW4gYmUgc2hy dW5rIHRvIGF2b2lkIGl0cyBleHRyZW1lIGxvbmcgdGltZSBob2xkLgo+IAo+IFJlcG9ydGVkLWJ5 OiBYaXVob25nIFdhbmcgPHhpdWhvbmcud2FuZ0B1bmlzb2MuY29tPgo+IENsb3NlczogaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtZjJmcy1kZXZlbC8yMDI0MTExMjExMDYyNy4xMzE0NjMy LTEteGl1aG9uZy53YW5nQHVuaXNvYy5jb20vCj4gU2lnbmVkLW9mZi1ieTogWGl1aG9uZyBXYW5n IDx4aXVob25nLndhbmdAdW5pc29jLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBaaGlndW8gTml1IDx6 aGlndW8ubml1QHVuaXNvYy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBZdSA8Y2hhb0BrZXJu ZWwub3JnPgo+IC0tLQo+IHYyOgo+IC0gbm8gdXBkYXRlcy4KPiAgIGZzL2YyZnMvZXh0ZW50X2Nh Y2hlLmMgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAg IDEgZmlsZSBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9leHRlbnRfY2FjaGUuYyBiL2ZzL2YyZnMvZXh0ZW50X2NhY2hl LmMgaW5kZXggMDE5YzFmN2I3ZmE1Li5iN2E2ODE3YjQ0YjAgMTAwNjQ0Cj4gLS0tIGEvZnMvZjJm cy9leHRlbnRfY2FjaGUuYwo+ICsrKyBiL2ZzL2YyZnMvZXh0ZW50X2NhY2hlLmMKPiBAQCAtMzc5 LDIxICszNzksMjIgQEAgc3RhdGljIHN0cnVjdCBleHRlbnRfdHJlZSAqX19ncmFiX2V4dGVudF90 cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUsICB9Cj4gCj4gICBzdGF0aWMgdW5zaWduZWQgaW50IF9f ZnJlZV9leHRlbnRfdHJlZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQpCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0LCB1bnNp Z25lZCBpbnQKPiArIG5yX3NocmluaykKPiAgIHsKPiAgICAgICAgICBzdHJ1Y3QgcmJfbm9kZSAq bm9kZSwgKm5leHQ7Cj4gICAgICAgICAgc3RydWN0IGV4dGVudF9ub2RlICplbjsKPiAtICAgICAg IHVuc2lnbmVkIGludCBjb3VudCA9IGF0b21pY19yZWFkKCZldC0+bm9kZV9jbnQpOwo+ICsgICAg ICAgdW5zaWduZWQgaW50IGNvdW50Owo+IAo+ICAgICAgICAgIG5vZGUgPSByYl9maXJzdF9jYWNo ZWQoJmV0LT5yb290KTsKPiAtICAgICAgIHdoaWxlIChub2RlKSB7Cj4gKwo+ICsgICAgICAgZm9y IChjb3VudCA9IDA7IG5vZGUgJiYgY291bnQgPCBucl9zaHJpbms7IGNvdW50KyspIHsKPiAgICAg ICAgICAgICAgICAgIG5leHQgPSByYl9uZXh0KG5vZGUpOwo+ICAgICAgICAgICAgICAgICAgZW4g PSByYl9lbnRyeShub2RlLCBzdHJ1Y3QgZXh0ZW50X25vZGUsIHJiX25vZGUpOwo+ICAgICAgICAg ICAgICAgICAgX19yZWxlYXNlX2V4dGVudF9ub2RlKHNiaSwgZXQsIGVuKTsKPiAgICAgICAgICAg ICAgICAgIG5vZGUgPSBuZXh0Owo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgIHJldHVybiBjb3Vu dCAtIGF0b21pY19yZWFkKCZldC0+bm9kZV9jbnQpOwo+ICsgICAgICAgcmV0dXJuIGNvdW50Owo+ ICAgfQo+IAo+ICAgc3RhdGljIHZvaWQgX19kcm9wX2xhcmdlc3RfZXh0ZW50KHN0cnVjdCBleHRl bnRfdHJlZSAqZXQsIEBAIC02MjIsNiArNjIzLDMwIEBAIHN0YXRpYyBzdHJ1Y3QgZXh0ZW50X25v ZGUgKl9faW5zZXJ0X2V4dGVudF90cmVlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiAgICAg ICAgICByZXR1cm4gZW47Cj4gICB9Cj4gCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19kZXN0cm95 X2V4dGVudF9ub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gZXh0ZW50X3R5cGUgdHlwZSkgewo+ICsgICAgICAgc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiArICAgICAgIHN0cnVj dCBleHRlbnRfdHJlZSAqZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVt0eXBlXTsKPiAr ICAgICAgIHVuc2lnbmVkIGludCBucl9zaHJpbmsgPSB0eXBlID09IEVYX1JFQUQgPwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBRF9FWFRFTlRfQ0FDSEVfU0hSSU5LX05VTUJF UiA6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBR0VfRVhURU5UX0NBQ0hFX1NI UklOS19OVU1CRVI7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgbm9kZV9jbnQgPSAwOwo+ICsKPiAr ICAgICAgIGlmICghZXQgfHwgIWF0b21pY19yZWFkKCZldC0+bm9kZV9jbnQpKQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICB3aGlsZSAoYXRvbWljX3JlYWQoJmV0LT5u b2RlX2NudCkpIHsKPiArICAgICAgICAgICAgICAgd3JpdGVfbG9jaygmZXQtPmxvY2spOwo+ICsg ICAgICAgICAgICAgICBub2RlX2NudCArPSBfX2ZyZWVfZXh0ZW50X3RyZWUoc2JpLCBldCwgbnJf c2hyaW5rKTsKPiArICAgICAgICAgICAgICAgd3JpdGVfdW5sb2NrKCZldC0+bG9jayk7Cj4gKyAg ICAgICB9Cj4gKwo+ICsgICAgICAgZjJmc19idWdfb24oc2JpLCBhdG9taWNfcmVhZCgmZXQtPm5v ZGVfY250KSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIG5vZGVfY250Owo+ICt9Cj4gKwo+ICAgc3Rh dGljIHZvaWQgX191cGRhdGVfZXh0ZW50X3RyZWVfcmFuZ2Uoc3RydWN0IGlub2RlICppbm9kZSwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvICp0ZWksIGVudW0g ZXh0ZW50X3R5cGUgdHlwZSkgIHsgQEAgLTc2MCw5ICs3ODUsNiBAQCBzdGF0aWMgdm9pZCBfX3Vw ZGF0ZV9leHRlbnRfdHJlZV9yYW5nZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ICAgICAgICAgICAg ICAgICAgfQo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3NldChp bm9kZSwgRklfTk9fRVhURU5UKSkKPiAtICAgICAgICAgICAgICAgX19mcmVlX2V4dGVudF90cmVl KHNiaSwgZXQpOwo+IC0KPiAgICAgICAgICBpZiAoZXQtPmxhcmdlc3RfdXBkYXRlZCkgewo+ICAg ICAgICAgICAgICAgICAgZXQtPmxhcmdlc3RfdXBkYXRlZCA9IGZhbHNlOwo+ICAgICAgICAgICAg ICAgICAgdXBkYXRlZCA9IHRydWU7Cj4gQEAgLTc4MCw2ICs4MDIsOSBAQCBzdGF0aWMgdm9pZCBf X3VwZGF0ZV9leHRlbnRfdHJlZV9yYW5nZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+ICAgb3V0X3Jl YWRfZXh0ZW50X2NhY2hlOgo+ICAgICAgICAgIHdyaXRlX3VubG9jaygmZXQtPmxvY2spOwo+IAo+ ICsgICAgICAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9OT19FWFRFTlQpKQo+ICsg ICAgICAgICAgICAgICBfX2Rlc3Ryb3lfZXh0ZW50X25vZGUoaW5vZGUsIEVYX1JFQUQpOwo+ICsK PiAgICAgICAgICBpZiAodXBkYXRlZCkKPiAgICAgICAgICAgICAgICAgIGYyZnNfbWFya19pbm9k ZV9kaXJ0eV9zeW5jKGlub2RlLCB0cnVlKTsgIH0gQEAgLTk0MiwxMCArOTY3LDE0IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgX19zaHJpbmtfZXh0ZW50X3RyZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBpbnQgbnJfc2hyaW5rCj4gICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGV0 LCBuZXh0LCAmZXRpLT56b21iaWVfbGlzdCwgbGlzdCkgewo+ICAgICAgICAgICAgICAgICAgaWYg KGF0b21pY19yZWFkKCZldC0+bm9kZV9jbnQpKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg IHdyaXRlX2xvY2soJmV0LT5sb2NrKTsKPiAtICAgICAgICAgICAgICAgICAgICAgICBub2RlX2Nu dCArPSBfX2ZyZWVfZXh0ZW50X3RyZWUoc2JpLCBldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgbm9kZV9jbnQgKz0gX19mcmVlX2V4dGVudF90cmVlKHNiaSwgZXQsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3NocmluayAtIG5vZGVfY250IC0KPiArIHRy ZWVfY250KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfdW5sb2NrKCZldC0+bG9j ayk7Cj4gICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNi aSwgYXRvbWljX3JlYWQoJmV0LT5ub2RlX2NudCkpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYg KGF0b21pY19yZWFkKCZldC0+bm9kZV9jbnQpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gdW5sb2NrX291dDsKPiArCj4gICAgICAgICAgICAgICAgICBsaXN0X2RlbF9pbml0KCZldC0+ bGlzdCk7Cj4gICAgICAgICAgICAgICAgICByYWRpeF90cmVlX2RlbGV0ZSgmZXRpLT5leHRlbnRf dHJlZV9yb290LCBldC0+aW5vKTsKPiAgICAgICAgICAgICAgICAgIGttZW1fY2FjaGVfZnJlZShl eHRlbnRfdHJlZV9zbGFiLCBldCk7IEBAIC0xMDg0LDIzICsxMTEzLDYgQEAgdW5zaWduZWQgaW50 IGYyZnNfc2hyaW5rX2FnZV9leHRlbnRfdHJlZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGlu dCBucl9zaHJpbmsKPiAgICAgICAgICByZXR1cm4gX19zaHJpbmtfZXh0ZW50X3RyZWUoc2JpLCBu cl9zaHJpbmssIEVYX0JMT0NLX0FHRSk7ICB9Cj4gCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19k ZXN0cm95X2V4dGVudF9ub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gZXh0ZW50X3R5cGUgdHlwZSkKPiAtewo+IC0g ICAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiAtICAg ICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVt0 eXBlXTsKPiAtICAgICAgIHVuc2lnbmVkIGludCBub2RlX2NudCA9IDA7Cj4gLQo+IC0gICAgICAg aWYgKCFldCB8fCAhYXRvbWljX3JlYWQoJmV0LT5ub2RlX2NudCkpCj4gLSAgICAgICAgICAgICAg IHJldHVybiAwOwo+IC0KPiAtICAgICAgIHdyaXRlX2xvY2soJmV0LT5sb2NrKTsKPiAtICAgICAg IG5vZGVfY250ID0gX19mcmVlX2V4dGVudF90cmVlKHNiaSwgZXQpOwo+IC0gICAgICAgd3JpdGVf dW5sb2NrKCZldC0+bG9jayk7Cj4gLQo+IC0gICAgICAgcmV0dXJuIG5vZGVfY250Owo+IC19Cj4g LQo+ICAgdm9pZCBmMmZzX2Rlc3Ryb3lfZXh0ZW50X25vZGUoc3RydWN0IGlub2RlICppbm9kZSkg IHsKPiAgICAgICAgICBfX2Rlc3Ryb3lfZXh0ZW50X25vZGUoaW5vZGUsIEVYX1JFQUQpOyBAQCAt MTEwOSw3ICsxMTIxLDYgQEAgdm9pZCBmMmZzX2Rlc3Ryb3lfZXh0ZW50X25vZGUoc3RydWN0IGlu b2RlICppbm9kZSkKPiAKPiAgIHN0YXRpYyB2b2lkIF9fZHJvcF9leHRlbnRfdHJlZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBlbnVtIGV4dGVudF90eXBlIHR5cGUpICB7Cj4gLSAgICAgICBzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ICAgICAgICAgIHN0cnVjdCBl eHRlbnRfdHJlZSAqZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVt0eXBlXTsKPiAgICAg ICAgICBib29sIHVwZGF0ZWQgPSBmYWxzZTsKPiAKPiBAQCAtMTExNyw3ICsxMTI4LDYgQEAgc3Rh dGljIHZvaWQgX19kcm9wX2V4dGVudF90cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGVudW0gZXh0 ZW50X3R5cGUgdHlwZSkKPiAgICAgICAgICAgICAgICAgIHJldHVybjsKPiAKPiAgICAgICAgICB3 cml0ZV9sb2NrKCZldC0+bG9jayk7Cj4gLSAgICAgICBfX2ZyZWVfZXh0ZW50X3RyZWUoc2JpLCBl dCk7Cj4gICAgICAgICAgaWYgKHR5cGUgPT0gRVhfUkVBRCkgewo+ICAgICAgICAgICAgICAgICAg c2V0X2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX0VYVEVOVCk7Cj4gICAgICAgICAgICAgICAgICBp ZiAoZXQtPmxhcmdlc3QubGVuKSB7Cj4gQEAgLTExMjYsNiArMTEzNiw5IEBAIHN0YXRpYyB2b2lk IF9fZHJvcF9leHRlbnRfdHJlZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBlbnVtIGV4dGVudF90eXBl IHR5cGUpCj4gICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAgICAgICAgIHdyaXRl X3VubG9jaygmZXQtPmxvY2spOwo+ICsKPiArICAgICAgIF9fZGVzdHJveV9leHRlbnRfbm9kZShp bm9kZSwgdHlwZSk7Cj4gKwo+ICAgICAgICAgIGlmICh1cGRhdGVkKQo+ICAgICAgICAgICAgICAg ICAgZjJmc19tYXJrX2lub2RlX2RpcnR5X3N5bmMoaW5vZGUsIHRydWUpOyAgfQo+IC0tCj4gMi40 MC4xCj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291 cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZv L2xpbnV4LWYyZnMtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA98718B47C for ; Mon, 25 Nov 2024 11:13:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732533232; cv=none; b=B95cg/VX7lbyeLIHpaCHNi7ZW0V6bzARyEBMX6Q84Z236owxJuDNYivFsij/KGieQ0ecUU/wozuqAzFChXl8sK6HGB18YqmRnxza16ulW49BlrTJMiyLIyT8uJSJ3NbKfHAZpVJdpfgwf6TviUBy3592XtFEZh/NApSw/j5CaHM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732533232; c=relaxed/simple; bh=em2+R4u2wEQPpLl6eVmHSeE2ZgN4ooDYI6iFZ92Y+sI=; h=Message-ID:Date:MIME-Version:Cc:Subject:To:References:From: In-Reply-To:Content-Type; b=k8SqM+SS3mQgFHuhMCgB2Afh2V5czKDhzkdLq++IHGSd7D+SlLJVRCxALiM9TQN0MeX8s5yXngppCe4xTvGMbq5icQGsdI5N7trE38Z6XK39Z8ENhDQe35cTVuBpQtZAcj/e+9O56Untcbt2R1IcM1CvqQM78wtK3GO1xseTEKg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FJPmdiQe; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FJPmdiQe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF722C4CECE; Mon, 25 Nov 2024 11:13:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1732533232; bh=em2+R4u2wEQPpLl6eVmHSeE2ZgN4ooDYI6iFZ92Y+sI=; h=Date:Cc:Subject:To:References:From:In-Reply-To:From; b=FJPmdiQekWqfdMgE1/OmJyFKt6+URYxapD+gGJI5GzAwba32anEEa4xmEB+xMYiC2 Ft1UT90zHjBBJhwlrBNDhxHdIfUrabWdhpXMjaQB1XUITtrdnA7D2quZlrxoG2naAU gtpk+BJNv97q+8Gj5MTbf+wiGuFZ6q7lcck45aQpbMTVJW7Yfy9aa3RewgNdpAqb1A sT3K6KT7Pxt/r+ieMZkP9FpPwKCfRBSWsWFK1e1BrO/5duCkkU+ICdKYpSh/7qr8G7 zOODtTV3aotqEcjUx5tuYQ/FUjhxdzFgGb4KukBcr09Thx4e9sEjJCRjuuAgoBbjgO koo9L7fp/OBGA== Message-ID: <0b9efdbb-e897-45d2-8005-bd3d6f6fa2db@kernel.org> Date: Mon, 25 Nov 2024 19:13:48 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: Chao Yu , "linux-f2fs-devel@lists.sourceforge.net" , "linux-kernel@vger.kernel.org" , =?UTF-8?B?54mb5b+X5Zu9IChaaGlndW8gTml1KQ==?= Subject: =?UTF-8?B?UmU6IOetlOWkjTogW1BBVENIIHYyIDEvMl0gZjJmczogZml4IHRvIHNo?= =?UTF-8?Q?rink_read_extent_node_in_batches?= To: =?UTF-8?B?546L56eA57qiIChYaXVob25nIFdhbmcp?= , "jaegeuk@kernel.org" References: <20241122065005.3772987-1-chao@kernel.org> <6ddf779148f44295acfbe547d9ec3aab@BJMBX02.spreadtrum.com> Content-Language: en-US From: Chao Yu In-Reply-To: <6ddf779148f44295acfbe547d9ec3aab@BJMBX02.spreadtrum.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2024/11/25 11:11, 王秀红 (Xiuhong Wang) wrote: > Hi Chao, > > after tested in this weekend with these patch base on the orginal case, no issue reproduced, so > Tested-by: Xiuhong Wang Hi Xiuhong, Thanks for helping to test. Thanks, > > thanks! > > -----邮件原件----- > 发件人: Chao Yu > 发送时间: 2024年11月22日 14:50 > 收件人: jaegeuk@kernel.org > 抄送: linux-f2fs-devel@lists.sourceforge.net; linux-kernel@vger.kernel.org; Chao Yu ; 王秀红 (Xiuhong Wang) ; 牛志国 (Zhiguo Niu) > 主题: [PATCH v2 1/2] f2fs: fix to shrink read extent node in batches > > > 注意: 这封邮件来自于外部。除非你确定邮件内容安全,否则不要点击任何链接和附件。 > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. > > > > We use rwlock to protect core structure data of extent tree during its shrink, however, if there is a huge number of extent nodes in extent tree, during shrink of extent tree, it may hold rwlock for a very long time, which may trigger kernel hang issue. > > This patch fixes to shrink read extent node in batches, so that, critical region of the rwlock can be shrunk to avoid its extreme long time hold. > > Reported-by: Xiuhong Wang > Closes: https://lore.kernel.org/linux-f2fs-devel/20241112110627.1314632-1-xiuhong.wang@unisoc.com/ > Signed-off-by: Xiuhong Wang > Signed-off-by: Zhiguo Niu > Signed-off-by: Chao Yu > --- > v2: > - no updates. > fs/f2fs/extent_cache.c | 69 +++++++++++++++++++++++++----------------- > 1 file changed, 41 insertions(+), 28 deletions(-) > > diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c index 019c1f7b7fa5..b7a6817b44b0 100644 > --- a/fs/f2fs/extent_cache.c > +++ b/fs/f2fs/extent_cache.c > @@ -379,21 +379,22 @@ static struct extent_tree *__grab_extent_tree(struct inode *inode, } > > static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi, > - struct extent_tree *et) > + struct extent_tree *et, unsigned int > + nr_shrink) > { > struct rb_node *node, *next; > struct extent_node *en; > - unsigned int count = atomic_read(&et->node_cnt); > + unsigned int count; > > node = rb_first_cached(&et->root); > - while (node) { > + > + for (count = 0; node && count < nr_shrink; count++) { > next = rb_next(node); > en = rb_entry(node, struct extent_node, rb_node); > __release_extent_node(sbi, et, en); > node = next; > } > > - return count - atomic_read(&et->node_cnt); > + return count; > } > > static void __drop_largest_extent(struct extent_tree *et, @@ -622,6 +623,30 @@ static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi, > return en; > } > > +static unsigned int __destroy_extent_node(struct inode *inode, > + enum extent_type type) { > + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > + struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; > + unsigned int nr_shrink = type == EX_READ ? > + READ_EXTENT_CACHE_SHRINK_NUMBER : > + AGE_EXTENT_CACHE_SHRINK_NUMBER; > + unsigned int node_cnt = 0; > + > + if (!et || !atomic_read(&et->node_cnt)) > + return 0; > + > + while (atomic_read(&et->node_cnt)) { > + write_lock(&et->lock); > + node_cnt += __free_extent_tree(sbi, et, nr_shrink); > + write_unlock(&et->lock); > + } > + > + f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); > + > + return node_cnt; > +} > + > static void __update_extent_tree_range(struct inode *inode, > struct extent_info *tei, enum extent_type type) { @@ -760,9 +785,6 @@ static void __update_extent_tree_range(struct inode *inode, > } > } > > - if (is_inode_flag_set(inode, FI_NO_EXTENT)) > - __free_extent_tree(sbi, et); > - > if (et->largest_updated) { > et->largest_updated = false; > updated = true; > @@ -780,6 +802,9 @@ static void __update_extent_tree_range(struct inode *inode, > out_read_extent_cache: > write_unlock(&et->lock); > > + if (is_inode_flag_set(inode, FI_NO_EXTENT)) > + __destroy_extent_node(inode, EX_READ); > + > if (updated) > f2fs_mark_inode_dirty_sync(inode, true); } @@ -942,10 +967,14 @@ static unsigned int __shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink > list_for_each_entry_safe(et, next, &eti->zombie_list, list) { > if (atomic_read(&et->node_cnt)) { > write_lock(&et->lock); > - node_cnt += __free_extent_tree(sbi, et); > + node_cnt += __free_extent_tree(sbi, et, > + nr_shrink - node_cnt - > + tree_cnt); > write_unlock(&et->lock); > } > - f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); > + > + if (atomic_read(&et->node_cnt)) > + goto unlock_out; > + > list_del_init(&et->list); > radix_tree_delete(&eti->extent_tree_root, et->ino); > kmem_cache_free(extent_tree_slab, et); @@ -1084,23 +1113,6 @@ unsigned int f2fs_shrink_age_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink > return __shrink_extent_tree(sbi, nr_shrink, EX_BLOCK_AGE); } > > -static unsigned int __destroy_extent_node(struct inode *inode, > - enum extent_type type) > -{ > - struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > - struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; > - unsigned int node_cnt = 0; > - > - if (!et || !atomic_read(&et->node_cnt)) > - return 0; > - > - write_lock(&et->lock); > - node_cnt = __free_extent_tree(sbi, et); > - write_unlock(&et->lock); > - > - return node_cnt; > -} > - > void f2fs_destroy_extent_node(struct inode *inode) { > __destroy_extent_node(inode, EX_READ); @@ -1109,7 +1121,6 @@ void f2fs_destroy_extent_node(struct inode *inode) > > static void __drop_extent_tree(struct inode *inode, enum extent_type type) { > - struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; > bool updated = false; > > @@ -1117,7 +1128,6 @@ static void __drop_extent_tree(struct inode *inode, enum extent_type type) > return; > > write_lock(&et->lock); > - __free_extent_tree(sbi, et); > if (type == EX_READ) { > set_inode_flag(inode, FI_NO_EXTENT); > if (et->largest.len) { > @@ -1126,6 +1136,9 @@ static void __drop_extent_tree(struct inode *inode, enum extent_type type) > } > } > write_unlock(&et->lock); > + > + __destroy_extent_node(inode, type); > + > if (updated) > f2fs_mark_inode_dirty_sync(inode, true); } > -- > 2.40.1 >