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 A1B2AC87FCB for ; Tue, 5 Aug 2025 02:38:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:In-Reply-To:MIME-Version:References: Message-ID:To:Date:Sender:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=oC/gS+C7xbWjvY19rPGkv+nbco3UFvwywKmyn4L9e8w=; b=WDtDr51+xeJi9bkfex84X43tgm hmDBBD6gkShMhNS/svX+veQ5MBgHDRPkU8EY/XRO2gvD5Itps/gnKo0FPAFm4Pfg1sNLeS1wUB5C6 wzJAPGmcAeSP8at3SDTE4ZNMmZaGg1siSNKPCUvdNwPPxTInA2M81PVX5/rD73aiZKcA=; Received: from [127.0.0.1] (helo=sfs-ml-3.v29.lw.sourceforge.com) by sfs-ml-3.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1uj7ZW-0003HB-PJ; Tue, 05 Aug 2025 02:38:38 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-3.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1uj7ZB-0003Gu-1j for linux-f2fs-devel@lists.sourceforge.net; Tue, 05 Aug 2025 02:38:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=In-Reply-To:Content-Transfer-Encoding:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: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=OqJS7EL9vd6ZAWOYdwkNbdKhfzqgemPtRtfYRmOnTf8=; b=Mhfs2QRiu3VffBSAEPmYZWSzZ7 yFuBOjAglPwE4UNBZuZqwuaYDL7HAAr1YYcs9nwKdQ1SXnq7Bwm8Y9RbOMEvDmsrLz4UrTCZ/Z6t4 KgkyRAXZKuqgc3XIabV1riJiG4WxBwGn67KGGPeP9afzluVZYp+kwEAnoyLB+piEzI+U=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date: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=OqJS7EL9vd6ZAWOYdwkNbdKhfzqgemPtRtfYRmOnTf8=; b=XQX/1IIPSUefQYZl+SRVbeShYZ KsFeOqqw6+cisXl/oUPpVSbTgnwinLbLVkvrA8y+n7LPZMAlLzRM0a/KHmzAcqd0fyNTcgwZZybpk d8S2s8nPbmBuVoIGtzGX4pjNRTBkzKYb30SkLM7Q71hOSBqwX0cXSd2x1+0nSs2jZNSE=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1uj7ZA-000821-6I for linux-f2fs-devel@lists.sourceforge.net; Tue, 05 Aug 2025 02:38:16 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 1DD3B60052; Tue, 5 Aug 2025 02:38:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 98309C4CEE7; Tue, 5 Aug 2025 02:38:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754361484; bh=tu7ueQUOTiG/oKgt5KuQSftT72yglDZKGabvf1vqReQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VMu0Xx/xp/ff1cFKQf6JW2rCWXkcxY+52XJ+7PP55BYOt9XAdyqfRlIddrn7BGA9k LDYaPZKqak91A8+jhI3AunWx2Ul9opEBbO/lgevpoTj7zY45qBH6zyyDmWzXKGFe1T zQdhYMoVWN7Qo8hRNZBdf/wMmyJxABjZSUUTCHCCfa7D6c3Sh65kY4WBS0annrrv5g bdkoTco8sVVClBW5RGBxqWEDvRmgc+KlhjT//RY3Prnvw9uVrZcyOc8qjQ0wkW2J1u z4VocGXCfK92s5JKThlxKGfBi/+/lALwc5ApokFtp7Twjk3TpTuL/0mDEgAzAFKMw4 S7l8PrWB+QC8g== Date: Tue, 5 Aug 2025 02:38:02 +0000 To: Chunhai Guo Message-ID: References: <20250731075731.628454-1-guochunhai@vivo.com> <13bec8f2-8482-44f5-a7c6-db7cbde5173b@kernel.org> <564db113-d910-4337-9581-ca59128dadc0@vivo.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <564db113-d910-4337-9581-ca59128dadc0@vivo.com> X-Headers-End: 1uj7ZA-000821-6I Subject: Re: [f2fs-dev] [PATCH v4] f2fs: add reserved nodes for privileged users 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: Jaegeuk Kim via Linux-f2fs-devel Reply-To: Jaegeuk Kim Cc: "linux-kernel@vger.kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gMDcvMzEsIENodW5oYWkgR3VvIHdyb3RlOgo+IOWcqCA3LzMxLzIwMjUgNDo0NiBQTSwgQ2hh byBZdSDlhpnpgZM6Cj4gPiBPbiA3LzMxLzI1IDE1OjU3LCBDaHVuaGFpIEd1byB3cm90ZToKPiA+ PiBUaGlzIHBhdGNoIGFsbG93cyBwcml2aWxlZ2VkIHVzZXJzIHRvIHJlc2VydmUgbm9kZXMgdmlh IHRoZQo+ID4+ICdyZXNlcnZlX25vZGUnIG1vdW50IG9wdGlvbiwgd2hpY2ggaXMgc2ltaWxhciB0 byB0aGUgZXhpc3RpbmcKPiA+PiAncmVzZXJ2ZV9yb290JyBvcHRpb24uCj4gPj4KPiA+PiAiLW8g cmVzZXJ2ZV9ub2RlPTxOPiIgbWVhbnMgPE4+IG5vZGVzIGFyZSByZXNlcnZlZCBmb3IgcHJpdmls ZWdlZAo+ID4+IHVzZXJzIG9ubHkuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBDaHVuaGFpIEd1 byA8Z3VvY2h1bmhhaUB2aXZvLmNvbT4KPiA+PiAtLS0KPiA+PiB2My0+djQ6IFJlYmFzZSB0aGlz IHBhdGNoIG9uIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWYyZnMtZGV2ZWwvMjAyNTA3 MzEwNjAzMzguMTEzNjA4Ni0xLWNoYW9Aa2VybmVsLm9yZwo+ID4+IHYyLT52MzogQXBwbHkgQ2hh bydzIHN1Z2dlc3Rpb24gZnJvbSB2Mi4KPiA+PiB2MS0+djI6IEFkZCB0d28gbWlzc2luZyBoYW5k bGluZyBwYXJ0cy4KPiA+PiB2MTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtZjJmcy1k ZXZlbC8yMDI1MDcyOTA5NTIzOC42MDc0MzMtMS1ndW9jaHVuaGFpQHZpdm8uY29tLwo+ID4+IC0t LQo+ID4+ICAgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCB8ICA5ICsrKystLS0K PiA+PiAgIGZzL2YyZnMvZjJmcy5oICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0t Cj4gPj4gICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgNDMgKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tCj4gPj4gICAzIGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMu cnN0Cj4gPj4gaW5kZXggMDNiMWVmYTZkM2IyLi45NWRiY2Q3YWM5YTggMTAwNjQ0Cj4gPj4gLS0t IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4+ICsrKyBiL0RvY3VtZW50 YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QKPiA+PiBAQCAtMTczLDkgKzE3MywxMiBAQCBkYXRh X2ZsdXNoICAgICAgICAgICAgICAgRW5hYmxlIGRhdGEgZmx1c2hpbmcgYmVmb3JlIGNoZWNrcG9p bnQgaW4gb3JkZXIgdG8KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdCBkYXRhIG9m IHJlZ3VsYXIgYW5kIHN5bWxpbmsuCj4gPj4gICByZXNlcnZlX3Jvb3Q9JWQgICAgICAgICAgICAg U3VwcG9ydCBjb25maWd1cmluZyByZXNlcnZlZCBzcGFjZSB3aGljaCBpcyB1c2VkIGZvcgo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uIGZyb20gYSBwcml2aWxlZ2VkIHVzZXIg d2l0aCBzcGVjaWZpZWQgdWlkIG9yCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGdpZCwgdW5p dDogNEtCLCB0aGUgZGVmYXVsdCBsaW1pdCBpcyAwLjIlIG9mIHVzZXIgYmxvY2tzLgo+ID4+IC1y ZXN1aWQ9JWQgICAgICAgICAgICBUaGUgdXNlciBJRCB3aGljaCBtYXkgdXNlIHRoZSByZXNlcnZl ZCBibG9ja3MuCj4gPj4gLXJlc2dpZD0lZCAgICAgICAgICAgIFRoZSBncm91cCBJRCB3aGljaCBt YXkgdXNlIHRoZSByZXNlcnZlZCBibG9ja3MuCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGdp ZCwgdW5pdDogNEtCLCB0aGUgZGVmYXVsdCBsaW1pdCBpcyAxMi41JSBvZiB1c2VyIGJsb2Nrcy4K PiA+PiArcmVzZXJ2ZV9ub2RlPSVkICAgICAgICAgICAgICBTdXBwb3J0IGNvbmZpZ3VyaW5nIHJl c2VydmVkIG5vZGVzIHdoaWNoIGFyZSB1c2VkIGZvcgo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICBhbGxvY2F0aW9uIGZyb20gYSBwcml2aWxlZ2VkIHVzZXIgd2l0aCBzcGVjaWZpZWQgdWlkIG9y Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGdpZCwgdGhlIGRlZmF1bHQgbGltaXQgaXMgMTIu NSUgb2YgYWxsIG5vZGVzLgo+ID4+ICtyZXN1aWQ9JWQgICAgICAgICAgICBUaGUgdXNlciBJRCB3 aGljaCBtYXkgdXNlIHRoZSByZXNlcnZlZCBibG9ja3MgYW5kIG5vZGVzLgo+ID4+ICtyZXNnaWQ9 JWQgICAgICAgICAgICBUaGUgZ3JvdXAgSUQgd2hpY2ggbWF5IHVzZSB0aGUgcmVzZXJ2ZWQgYmxv Y2tzIGFuZCBub2Rlcy4KPiA+PiAgIGZhdWx0X2luamVjdGlvbj0lZCAgRW5hYmxlIGZhdWx0IGlu amVjdGlvbiBpbiBhbGwgc3VwcG9ydGVkIHR5cGVzIHdpdGgKPiA+PiAgICAgICAgICAgICAgICAg ICAgICAgc3BlY2lmaWVkIGluamVjdGlvbiByYXRlLgo+ID4+ICAgZmF1bHRfdHlwZT0lZCAgICAg ICAgICAgICAgIFN1cHBvcnQgY29uZmlndXJpbmcgZmF1bHQgaW5qZWN0aW9uIHR5cGUsIHNob3Vs ZCBiZQo+ID4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4g Pj4gaW5kZXggZWIzNzJhZjIyZWRjLi5iOTY3NmVmMTYyNDYgMTAwNjQ0Cj4gPj4gLS0tIGEvZnMv ZjJmcy9mMmZzLmgKPiA+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+ID4+IEBAIC0xMzEsNiArMTMx LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmYyZnNfZmF1bHRfbmFtZVtGQVVMVF9NQVhdOwo+ID4+ ICAgICogc3RyaW5nIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBNU19MQVpZVElNRSBmbGFnLCBzbyB0 aGlzIG11c3QgcmVtYWluLgo+ID4+ICAgICovCj4gPj4gICAjZGVmaW5lIEYyRlNfTU9VTlRfTEFa WVRJTUUgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAo+ID4+ICsjZGVmaW5lIEYyRlNfTU9VTlRf UkVTRVJWRV9OT0RFICAgICAgICAgICAgIDB4ODAwMDAwMDAKPiA+Pgo+ID4+ICAgI2RlZmluZSBG MkZTX09QVElPTihzYmkpICAgKChzYmkpLT5tb3VudF9vcHQpCj4gPj4gICAjZGVmaW5lIGNsZWFy X29wdChzYmksIG9wdGlvbikgICAgIChGMkZTX09QVElPTihzYmkpLm9wdCAmPSB+RjJGU19NT1VO VF8jI29wdGlvbikKPiA+PiBAQCAtMTcyLDYgKzE3Myw3IEBAIHN0cnVjdCBmMmZzX3J3c2VtIHsK PiA+PiAgIHN0cnVjdCBmMmZzX21vdW50X2luZm8gewo+ID4+ICAgICAgdW5zaWduZWQgaW50IG9w dDsKPiA+PiAgICAgIGJsb2NrX3Qgcm9vdF9yZXNlcnZlZF9ibG9ja3M7ICAgLyogcm9vdCByZXNl cnZlZCBibG9ja3MgKi8KPiA+PiArICAgIGJsb2NrX3Qgcm9vdF9yZXNlcnZlZF9ub2RlczsgICAg Lyogcm9vdCByZXNlcnZlZCBub2RlcyAqLwo+ID4+ICAgICAga3VpZF90IHNfcmVzdWlkOyAgICAg ICAgICAgICAgICAvKiByZXNlcnZlZCBibG9ja3MgZm9yIHVpZCAqLwo+ID4+ICAgICAga2dpZF90 IHNfcmVzZ2lkOyAgICAgICAgICAgICAgICAvKiByZXNlcnZlZCBibG9ja3MgZm9yIGdpZCAqLwo+ ID4+ICAgICAgaW50IGFjdGl2ZV9sb2dzOyAgICAgICAgICAgICAgICAvKiAjIG9mIGFjdGl2ZSBs b2dzICovCj4gPj4gQEAgLTIzNTUsNyArMjM1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmMmZz X2hhc194YXR0cl9ibG9jayh1bnNpZ25lZCBpbnQgb2ZzKQo+ID4+ICAgICAgcmV0dXJuIG9mcyA9 PSBYQVRUUl9OT0RFX09GRlNFVDsKPiA+PiAgIH0KPiA+Pgo+ID4+IC1zdGF0aWMgaW5saW5lIGJv b2wgX19hbGxvd19yZXNlcnZlZF9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+ ICtzdGF0aWMgaW5saW5lIGJvb2wgX19hbGxvd19yZXNlcnZlZF9yb290KHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGlub2RlICppbm9kZSwgYm9vbCBjYXApCj4gPj4gICB7Cj4gPj4gICAgICBpZiAoIWlub2Rl KQo+ID4+IEBAIC0yMzgwLDcgKzIzODIsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBn ZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+PiAg ICAgIGF2YWlsX3VzZXJfYmxvY2tfY291bnQgPSBzYmktPnVzZXJfYmxvY2tfY291bnQgLQo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmktPmN1cnJlbnRfcmVzZXJ2 ZWRfYmxvY2tzOwo+ID4+Cj4gPj4gLSAgICBpZiAodGVzdF9vcHQoc2JpLCBSRVNFUlZFX1JPT1Qp ICYmICFfX2FsbG93X3Jlc2VydmVkX2Jsb2NrcyhzYmksIGlub2RlLCBjYXApKQo+ID4+ICsgICAg aWYgKHRlc3Rfb3B0KHNiaSwgUkVTRVJWRV9ST09UKSAmJiAhX19hbGxvd19yZXNlcnZlZF9yb290 KHNiaSwgaW5vZGUsIGNhcCkpCj4gPj4gICAgICAgICAgICAgIGF2YWlsX3VzZXJfYmxvY2tfY291 bnQgLT0gRjJGU19PUFRJT04oc2JpKS5yb290X3Jlc2VydmVkX2Jsb2NrczsKPiA+Pgo+ID4+ICAg ICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKSB7 Cj4gPj4gQEAgLTI3MzgsNyArMjc0MCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGluY192YWxpZF9u b2RlX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBpc19pbm9kZSkK PiA+PiAgIHsKPiA+PiAgICAgIGJsb2NrX3QgdmFsaWRfYmxvY2tfY291bnQ7Cj4gPj4gLSAgICB1 bnNpZ25lZCBpbnQgdmFsaWRfbm9kZV9jb3VudDsKPiA+PiArICAgIHVuc2lnbmVkIGludCB2YWxp ZF9ub2RlX2NvdW50LCBhdmFpbF91c2VyX25vZGVfY291bnQ7Cj4gPj4gICAgICB1bnNpZ25lZCBp bnQgYXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPiA+PiAgICAgIGludCBlcnI7Cj4gPj4KPiA+PiBA QCAtMjc2Nyw4ICsyNzY5LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGluY192YWxpZF9ub2RlX2Nv dW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+PiAgICAgICAgICAgICAgZ290byBlbm9z cGM7Cj4gPj4gICAgICB9Cj4gPj4KPiA+PiArICAgIGF2YWlsX3VzZXJfbm9kZV9jb3VudCA9IHNi aS0+dG90YWxfbm9kZV9jb3VudCAtIEYyRlNfUkVTRVJWRURfTk9ERV9OVU07Cj4gPj4gKyAgICBp ZiAodGVzdF9vcHQoc2JpLCBSRVNFUlZFX05PREUpICYmCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgIV9fYWxsb3dfcmVzZXJ2ZWRfcm9vdChzYmksIGlub2RlLCBmYWxzZSkpCj4gPiBDaHVuaGFp LAo+ID4KPiA+IERvIHdlIG5lZWQgdG8gcGFzcyBjYXA9dHJ1ZSB0byBfX2FsbG93X3Jlc2VydmVk X3Jvb3QoKT8KPiA+Cj4gPiBJbiBhZGRpdGlvbiwgZG8gd2UgbmVlZCB0byBjaGFuZ2UgY2FwIGFz IHdlbGwgZm9yIGJlbG93IHN0YXRlbWVudD8KPiA+Cj4gPiBhdmFpbF91c2VyX2Jsb2NrX2NvdW50 ID0gZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCBmYWxzZSk7Cj4gCj4gCj4g SGkgSmFlZ2V1aywKPiAKPiAKPiBCYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gaW4gY29tbWl0IGE5 MGEwODg0YWM3NSAoImYyZnM6IGNoZWNrCj4gY2FwX3Jlc291cmNlIG9ubHkgZm9yIGRhdGEgYmxv Y2tzIiksIGl0IHNlZW1zIHRoYXQgaW5vZGUgb3Igbm9kZSBibG9ja3MKPiBkb24ndCBuZWVkIHRv IHBlcmZvcm0gYSBjaGVjayBvbiB0aGUgY2FwX3Jlc291cmNlLiBJJ20gbm90IGNlcnRhaW4gYWJv dXQKPiB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzLiBDb3VsZCB5b3UgcGxlYXNlIGhlbHAgdG8g Y2xhcmlmeSBpdD8KCkkgZG9uJ3QgcXVpdGUgcmVtZW1iZXIgYXMgSSBoYWQgdG8gZml4IHRoZSBz ZWxpbnggaXNzdWUgbG9uZyBsb25nIHRpbWUgYWdvLgoKPiAKPiAKPiBUaGFua3MsCj4gCj4gPgo+ ID4gVGhhbmtzLAo+ID4KPiA+PiArICAgICAgICAgICAgYXZhaWxfdXNlcl9ub2RlX2NvdW50IC09 IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ub2RlczsKPiA+PiAgICAgIHZhbGlkX25v ZGVfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlkX25vZGVfY291bnQgKyAxOwo+ID4+IC0gICAgaWYg KHVubGlrZWx5KHZhbGlkX25vZGVfY291bnQgPiBzYmktPnRvdGFsX25vZGVfY291bnQpKSB7Cj4g Pj4gKyAgICBpZiAodW5saWtlbHkodmFsaWRfbm9kZV9jb3VudCA+IGF2YWlsX3VzZXJfbm9kZV9j b3VudCkpIHsKPiA+PiAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsK PiA+PiAgICAgICAgICAgICAgZ290byBlbm9zcGM7Cj4gPj4gICAgICB9Cj4gPj4gZGlmZiAtLWdp dCBhL2ZzL2YyZnMvc3VwZXIuYyBiL2ZzL2YyZnMvc3VwZXIuYwo+ID4+IGluZGV4IDMwYzAzODQx MzA0MC4uYTI0ZTg1NWEzOGVkIDEwMDY0NAo+ID4+IC0tLSBhL2ZzL2YyZnMvc3VwZXIuYwo+ID4+ ICsrKyBiL2ZzL2YyZnMvc3VwZXIuYwo+ID4+IEBAIC0xNDMsNiArMTQzLDcgQEAgZW51bSB7Cj4g Pj4gICAgICBPcHRfZXh0ZW50X2NhY2hlLAo+ID4+ICAgICAgT3B0X2RhdGFfZmx1c2gsCj4gPj4g ICAgICBPcHRfcmVzZXJ2ZV9yb290LAo+ID4+ICsgICAgT3B0X3Jlc2VydmVfbm9kZSwKPiA+PiAg ICAgIE9wdF9yZXNnaWQsCj4gPj4gICAgICBPcHRfcmVzdWlkLAo+ID4+ICAgICAgT3B0X21vZGUs Cj4gPj4gQEAgLTI2NSw2ICsyNjYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZzX3BhcmFtZXRl cl9zcGVjIGYyZnNfcGFyYW1fc3BlY3NbXSA9IHsKPiA+PiAgICAgIGZzcGFyYW1fZmxhZ19ubygi ZXh0ZW50X2NhY2hlIiwgT3B0X2V4dGVudF9jYWNoZSksCj4gPj4gICAgICBmc3BhcmFtX2ZsYWco ImRhdGFfZmx1c2giLCBPcHRfZGF0YV9mbHVzaCksCj4gPj4gICAgICBmc3BhcmFtX3UzMigicmVz ZXJ2ZV9yb290IiwgT3B0X3Jlc2VydmVfcm9vdCksCj4gPj4gKyAgICBmc3BhcmFtX3UzMigicmVz ZXJ2ZV9ub2RlIiwgT3B0X3Jlc2VydmVfbm9kZSksCj4gPj4gICAgICBmc3BhcmFtX2dpZCgicmVz Z2lkIiwgT3B0X3Jlc2dpZCksCj4gPj4gICAgICBmc3BhcmFtX3VpZCgicmVzdWlkIiwgT3B0X3Jl c3VpZCksCj4gPj4gICAgICBmc3BhcmFtX2VudW0oIm1vZGUiLCBPcHRfbW9kZSwgZjJmc19wYXJh bV9tb2RlKSwKPiA+PiBAQCAtMzM2LDYgKzMzOCw3IEBAIHN0YXRpYyBtYXRjaF90YWJsZV90IGYy ZnNfY2hlY2twb2ludF90b2tlbnMgPSB7Cj4gPj4gICAjZGVmaW5lIEYyRlNfU1BFQ19kaXNjYXJk X3VuaXQgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyMSkKPiA+PiAgICNkZWZpbmUgRjJGU19T UEVDX21lbW9yeV9tb2RlICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDIyKQo+ID4+ICAgI2Rl ZmluZSBGMkZTX1NQRUNfZXJyb3JzICAgICAgICAgICAgICAgICAgICgxIDw8IDIzKQo+ID4+ICsj ZGVmaW5lIEYyRlNfU1BFQ19yZXNlcnZlX25vZGUgICAgICAgICAgICAgICAgICAgICAgKDEgPDwg MjQpCj4gPj4KPiA+PiAgIHN0cnVjdCBmMmZzX2ZzX2NvbnRleHQgewo+ID4+ICAgICAgc3RydWN0 IGYyZnNfbW91bnRfaW5mbyBpbmZvOwo+ID4+IEBAIC00MzcsMjIgKzQ0MCwzMCBAQCBzdGF0aWMg dm9pZCBmMmZzX2Rlc3Ryb3lfY2FzZWZvbGRfY2FjaGUodm9pZCkgeyB9Cj4gPj4KPiA+PiAgIHN0 YXRpYyBpbmxpbmUgdm9pZCBsaW1pdF9yZXNlcnZlX3Jvb3Qoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpKQo+ID4+ICAgewo+ID4+IC0gICAgYmxvY2tfdCBsaW1pdCA9IG1pbigoc2JpLT51c2VyX2Js b2NrX2NvdW50ID4+IDMpLAo+ID4+ICsgICAgYmxvY2tfdCBibG9ja19saW1pdCA9IG1pbigoc2Jp LT51c2VyX2Jsb2NrX2NvdW50ID4+IDMpLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgIHNiaS0+ dXNlcl9ibG9ja19jb3VudCAtIHNiaS0+cmVzZXJ2ZWRfYmxvY2tzKTsKPiA+PiArICAgIGJsb2Nr X3Qgbm9kZV9saW1pdCA9IHNiaS0+dG90YWxfbm9kZV9jb3VudCA+PiAzOwo+ID4+Cj4gPj4gICAg ICAvKiBsaW1pdCBpcyAxMi41JSAqLwo+ID4+ICAgICAgaWYgKHRlc3Rfb3B0KHNiaSwgUkVTRVJW RV9ST09UKSAmJgo+ID4+IC0gICAgICAgICAgICAgICAgICAgIEYyRlNfT1BUSU9OKHNiaSkucm9v dF9yZXNlcnZlZF9ibG9ja3MgPiBsaW1pdCkgewo+ID4+IC0gICAgICAgICAgICBGMkZTX09QVElP TihzYmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzID0gbGltaXQ7Cj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgRjJGU19PUFRJT04oc2JpKS5yb290X3Jlc2VydmVkX2Jsb2NrcyA+IGJsb2NrX2xpbWl0 KSB7Cj4gPj4gKyAgICAgICAgICAgIEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ibG9j a3MgPSBibG9ja19saW1pdDsKPiA+PiAgICAgICAgICAgICAgZjJmc19pbmZvKHNiaSwgIlJlZHVj ZSByZXNlcnZlZCBibG9ja3MgZm9yIHJvb3QgPSAldSIsCj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICBGMkZTX09QVElPTihzYmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzKTsKPiA+PiAgICAgIH0K PiA+PiAtICAgIGlmICghdGVzdF9vcHQoc2JpLCBSRVNFUlZFX1JPT1QpICYmCj4gPj4gKyAgICBp ZiAodGVzdF9vcHQoc2JpLCBSRVNFUlZFX05PREUpICYmCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgRjJGU19PUFRJT04oc2JpKS5yb290X3Jlc2VydmVkX25vZGVzID4gbm9kZV9saW1pdCkgewo+ ID4+ICsgICAgICAgICAgICBGMkZTX09QVElPTihzYmkpLnJvb3RfcmVzZXJ2ZWRfbm9kZXMgPSBu b2RlX2xpbWl0Owo+ID4+ICsgICAgICAgICAgICBmMmZzX2luZm8oc2JpLCAiUmVkdWNlIHJlc2Vy dmVkIG5vZGVzIGZvciByb290ID0gJXUiLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgRjJG U19PUFRJT04oc2JpKS5yb290X3Jlc2VydmVkX25vZGVzKTsKPiA+PiArICAgIH0KPiA+PiArICAg IGlmICghdGVzdF9vcHQoc2JpLCBSRVNFUlZFX1JPT1QpICYmICF0ZXN0X29wdChzYmksIFJFU0VS VkVfTk9ERSkgJiYKPiA+PiAgICAgICAgICAgICAgKCF1aWRfZXEoRjJGU19PUFRJT04oc2JpKS5z X3Jlc3VpZCwKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfa3VpZCgmaW5p dF91c2VyX25zLCBGMkZTX0RFRl9SRVNVSUQpKSB8fAo+ID4+ICAgICAgICAgICAgICAhZ2lkX2Vx KEYyRlNfT1BUSU9OKHNiaSkuc19yZXNnaWQsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYWtlX2tnaWQoJmluaXRfdXNlcl9ucywgRjJGU19ERUZfUkVTR0lEKSkpKQo+ID4+IC0g ICAgICAgICAgICBmMmZzX2luZm8oc2JpLCAiSWdub3JlIHNfcmVzdWlkPSV1LCBzX3Jlc2dpZD0l dSB3L28gcmVzZXJ2ZV9yb290IiwKPiA+PiArICAgICAgICAgICAgZjJmc19pbmZvKHNiaSwgIkln bm9yZSBzX3Jlc3VpZD0ldSwgc19yZXNnaWQ9JXUgdy9vIHJlc2VydmVfcm9vdCIKPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgYW5kIHJlc2VydmVfbm9kZSIsCj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICBmcm9tX2t1aWRfbXVuZ2VkKCZpbml0X3VzZXJfbnMsCj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfT1BUSU9OKHNiaSkuc19y ZXN1aWQpLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9rZ2lkX211bmdlZCgmaW5p dF91c2VyX25zLAo+ID4+IEBAIC04NDEsNiArODUyLDExIEBAIHN0YXRpYyBpbnQgZjJmc19wYXJz ZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFt KQo+ID4+ICAgICAgICAgICAgICBGMkZTX0NUWF9JTkZPKGN0eCkucm9vdF9yZXNlcnZlZF9ibG9j a3MgPSByZXN1bHQudWludF8zMjsKPiA+PiAgICAgICAgICAgICAgY3R4LT5zcGVjX21hc2sgfD0g RjJGU19TUEVDX3Jlc2VydmVfcm9vdDsKPiA+PiAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gKyAg ICBjYXNlIE9wdF9yZXNlcnZlX25vZGU6Cj4gPj4gKyAgICAgICAgICAgIGN0eF9zZXRfb3B0KGN0 eCwgRjJGU19NT1VOVF9SRVNFUlZFX05PREUpOwo+ID4+ICsgICAgICAgICAgICBGMkZTX0NUWF9J TkZPKGN0eCkucm9vdF9yZXNlcnZlZF9ub2RlcyA9IHJlc3VsdC51aW50XzMyOwo+ID4+ICsgICAg ICAgICAgICBjdHgtPnNwZWNfbWFzayB8PSBGMkZTX1NQRUNfcmVzZXJ2ZV9ub2RlOwo+ID4+ICsg ICAgICAgICAgICBicmVhazsKPiA+PiAgICAgIGNhc2UgT3B0X3Jlc3VpZDoKPiA+PiAgICAgICAg ICAgICAgRjJGU19DVFhfSU5GTyhjdHgpLnNfcmVzdWlkID0gcmVzdWx0LnVpZDsKPiA+PiAgICAg ICAgICAgICAgY3R4LT5zcGVjX21hc2sgfD0gRjJGU19TUEVDX3Jlc3VpZDsKPiA+PiBAQCAtMTQy NCw2ICsxNDQwLDE0IEBAIHN0YXRpYyBpbnQgZjJmc19jaGVja19vcHRfY29uc2lzdGVuY3koc3Ry dWN0IGZzX2NvbnRleHQgKmZjLAo+ID4+ICAgICAgICAgICAgICBjdHhfY2xlYXJfb3B0KGN0eCwg RjJGU19NT1VOVF9SRVNFUlZFX1JPT1QpOwo+ID4+ICAgICAgICAgICAgICBjdHgtPm9wdF9tYXNr ICY9IH5GMkZTX01PVU5UX1JFU0VSVkVfUk9PVDsKPiA+PiAgICAgIH0KPiA+PiArICAgIGlmICh0 ZXN0X29wdChzYmksIFJFU0VSVkVfTk9ERSkgJiYKPiA+PiArICAgICAgICAgICAgICAgICAgICAo Y3R4LT5vcHRfbWFzayAmIEYyRlNfTU9VTlRfUkVTRVJWRV9OT0RFKSAmJgo+ID4+ICsgICAgICAg ICAgICAgICAgICAgIGN0eF90ZXN0X29wdChjdHgsIEYyRlNfTU9VTlRfUkVTRVJWRV9OT0RFKSkg ewo+ID4+ICsgICAgICAgICAgICBmMmZzX2luZm8oc2JpLCAiUHJlc2VydmUgcHJldmlvdXMgcmVz ZXJ2ZV9ub2RlPSV1IiwKPiA+PiArICAgICAgICAgICAgICAgICAgICBGMkZTX09QVElPTihzYmkp LnJvb3RfcmVzZXJ2ZWRfbm9kZXMpOwo+ID4+ICsgICAgICAgICAgICBjdHhfY2xlYXJfb3B0KGN0 eCwgRjJGU19NT1VOVF9SRVNFUlZFX05PREUpOwo+ID4+ICsgICAgICAgICAgICBjdHgtPm9wdF9t YXNrICY9IH5GMkZTX01PVU5UX1JFU0VSVkVfTk9ERTsKPiA+PiArICAgIH0KPiA+Pgo+ID4+ICAg ICAgZXJyID0gZjJmc19jaGVja190ZXN0X2R1bW15X2VuY3J5cHRpb24oZmMsIHNiKTsKPiA+PiAg ICAgIGlmIChlcnIpCj4gPj4gQEAgLTE2MjMsNiArMTY0Nyw5IEBAIHN0YXRpYyB2b2lkIGYyZnNf YXBwbHlfb3B0aW9ucyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAq c2IpCj4gPj4gICAgICBpZiAoY3R4LT5zcGVjX21hc2sgJiBGMkZTX1NQRUNfcmVzZXJ2ZV9yb290 KQo+ID4+ICAgICAgICAgICAgICBGMkZTX09QVElPTihzYmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tz ID0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19DVFhfSU5G TyhjdHgpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4+ICsgICAgaWYgKGN0eC0+c3BlY19tYXNr ICYgRjJGU19TUEVDX3Jlc2VydmVfbm9kZSkKPiA+PiArICAgICAgICAgICAgRjJGU19PUFRJT04o c2JpKS5yb290X3Jlc2VydmVkX25vZGVzID0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRjJGU19DVFhfSU5GTyhjdHgpLnJvb3RfcmVzZXJ2ZWRfbm9kZXM7Cj4gPj4g ICAgICBpZiAoY3R4LT5zcGVjX21hc2sgJiBGMkZTX1NQRUNfcmVzZ2lkKQo+ID4+ICAgICAgICAg ICAgICBGMkZTX09QVElPTihzYmkpLnNfcmVzZ2lkID0gRjJGU19DVFhfSU5GTyhjdHgpLnNfcmVz Z2lkOwo+ID4+ICAgICAgaWYgKGN0eC0+c3BlY19tYXNrICYgRjJGU19TUEVDX3Jlc3VpZCkKPiA+ PiBAQCAtMjM0Miw5ICsyMzY5LDExIEBAIHN0YXRpYyBpbnQgZjJmc19zaG93X29wdGlvbnMoc3Ry dWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBkZW50cnkgKnJvb3QpCj4gPj4gICAgICBlbHNlIGlm IChGMkZTX09QVElPTihzYmkpLmZzX21vZGUgPT0gRlNfTU9ERV9GUkFHTUVOVF9CTEspCj4gPj4g ICAgICAgICAgICAgIHNlcV9wdXRzKHNlcSwgImZyYWdtZW50OmJsb2NrIik7Cj4gPj4gICAgICBz ZXFfcHJpbnRmKHNlcSwgIixhY3RpdmVfbG9ncz0ldSIsIEYyRlNfT1BUSU9OKHNiaSkuYWN0aXZl X2xvZ3MpOwo+ID4+IC0gICAgaWYgKHRlc3Rfb3B0KHNiaSwgUkVTRVJWRV9ST09UKSkKPiA+PiAt ICAgICAgICAgICAgc2VxX3ByaW50ZihzZXEsICIscmVzZXJ2ZV9yb290PSV1LHJlc3VpZD0ldSxy ZXNnaWQ9JXUiLAo+ID4+ICsgICAgaWYgKHRlc3Rfb3B0KHNiaSwgUkVTRVJWRV9ST09UKSB8fCB0 ZXN0X29wdChzYmksIFJFU0VSVkVfTk9ERSkpCj4gPj4gKyAgICAgICAgICAgIHNlcV9wcmludGYo c2VxLCAiLHJlc2VydmVfcm9vdD0ldSxyZXNlcnZlX25vZGU9JXUscmVzdWlkPSV1LCIKPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXNnaWQ9JXUiLAo+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRjJGU19PUFRJT04oc2JpKS5yb290X3Jlc2VydmVkX2Jsb2NrcywK PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfT1BUSU9OKHNiaSkucm9vdF9y ZXNlcnZlZF9ub2RlcywKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fa3Vp ZF9tdW5nZWQoJmluaXRfdXNlcl9ucywKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRjJGU19PUFRJT04oc2JpKS5zX3Jlc3VpZCksCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tX2tnaWRfbXVuZ2VkKCZpbml0X3VzZXJfbnMsCj4gCj4gCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1k ZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK aHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1k ZXZlbAo= 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 5DD4D1F948 for ; Tue, 5 Aug 2025 02:38:04 +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=1754361485; cv=none; b=lYs4ur1OjEXzrGzwoey5fg0qqv8uM9Ss9T31yLUGiIy9cR/LRANZQJ+A15gk5ttYLI6LTiJQufp+H6RJHKMsDONoIp9Y/qrOfvwuZGw4yqctexKKHOW/YkjtMR3E7Ti3VgNTTCFYVjGA//6rGmQo61Jyt/Eaw48D9I/GYW9ug8Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754361485; c=relaxed/simple; bh=tu7ueQUOTiG/oKgt5KuQSftT72yglDZKGabvf1vqReQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=mj1vOi+cZwXsbreaa8Sll120ewvwpggt4fdnQcULcDyb5Pc57WpxE1wT7Z1qBwCC/NSm1IonRIZkP+YdW/scUfJUgmZsXcs8WZWU9X7JH6XG61TLXIFnpgtY9i+1iy0jS8p1EH6a1q9oX9VdEtwSCnkf+gXqsQ1ylWkoHSTcW/w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VMu0Xx/x; 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="VMu0Xx/x" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 98309C4CEE7; Tue, 5 Aug 2025 02:38:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754361484; bh=tu7ueQUOTiG/oKgt5KuQSftT72yglDZKGabvf1vqReQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VMu0Xx/xp/ff1cFKQf6JW2rCWXkcxY+52XJ+7PP55BYOt9XAdyqfRlIddrn7BGA9k LDYaPZKqak91A8+jhI3AunWx2Ul9opEBbO/lgevpoTj7zY45qBH6zyyDmWzXKGFe1T zQdhYMoVWN7Qo8hRNZBdf/wMmyJxABjZSUUTCHCCfa7D6c3Sh65kY4WBS0annrrv5g bdkoTco8sVVClBW5RGBxqWEDvRmgc+KlhjT//RY3Prnvw9uVrZcyOc8qjQ0wkW2J1u z4VocGXCfK92s5JKThlxKGfBi/+/lALwc5ApokFtp7Twjk3TpTuL/0mDEgAzAFKMw4 S7l8PrWB+QC8g== Date: Tue, 5 Aug 2025 02:38:02 +0000 From: Jaegeuk Kim To: Chunhai Guo Cc: Chao Yu , "linux-f2fs-devel@lists.sourceforge.net" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v4] f2fs: add reserved nodes for privileged users Message-ID: References: <20250731075731.628454-1-guochunhai@vivo.com> <13bec8f2-8482-44f5-a7c6-db7cbde5173b@kernel.org> <564db113-d910-4337-9581-ca59128dadc0@vivo.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <564db113-d910-4337-9581-ca59128dadc0@vivo.com> On 07/31, Chunhai Guo wrote: > 在 7/31/2025 4:46 PM, Chao Yu 写道: > > On 7/31/25 15:57, Chunhai Guo wrote: > >> This patch allows privileged users to reserve nodes via the > >> 'reserve_node' mount option, which is similar to the existing > >> 'reserve_root' option. > >> > >> "-o reserve_node=" means nodes are reserved for privileged > >> users only. > >> > >> Signed-off-by: Chunhai Guo > >> --- > >> v3->v4: Rebase this patch on https://lore.kernel.org/linux-f2fs-devel/20250731060338.1136086-1-chao@kernel.org > >> v2->v3: Apply Chao's suggestion from v2. > >> v1->v2: Add two missing handling parts. > >> v1: https://lore.kernel.org/linux-f2fs-devel/20250729095238.607433-1-guochunhai@vivo.com/ > >> --- > >> Documentation/filesystems/f2fs.rst | 9 ++++--- > >> fs/f2fs/f2fs.h | 14 +++++++--- > >> fs/f2fs/super.c | 43 +++++++++++++++++++++++++----- > >> 3 files changed, 52 insertions(+), 14 deletions(-) > >> > >> diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst > >> index 03b1efa6d3b2..95dbcd7ac9a8 100644 > >> --- a/Documentation/filesystems/f2fs.rst > >> +++ b/Documentation/filesystems/f2fs.rst > >> @@ -173,9 +173,12 @@ data_flush Enable data flushing before checkpoint in order to > >> persist data of regular and symlink. > >> reserve_root=%d Support configuring reserved space which is used for > >> allocation from a privileged user with specified uid or > >> - gid, unit: 4KB, the default limit is 0.2% of user blocks. > >> -resuid=%d The user ID which may use the reserved blocks. > >> -resgid=%d The group ID which may use the reserved blocks. > >> + gid, unit: 4KB, the default limit is 12.5% of user blocks. > >> +reserve_node=%d Support configuring reserved nodes which are used for > >> + allocation from a privileged user with specified uid or > >> + gid, the default limit is 12.5% of all nodes. > >> +resuid=%d The user ID which may use the reserved blocks and nodes. > >> +resgid=%d The group ID which may use the reserved blocks and nodes. > >> fault_injection=%d Enable fault injection in all supported types with > >> specified injection rate. > >> fault_type=%d Support configuring fault injection type, should be > >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > >> index eb372af22edc..b9676ef16246 100644 > >> --- a/fs/f2fs/f2fs.h > >> +++ b/fs/f2fs/f2fs.h > >> @@ -131,6 +131,7 @@ extern const char *f2fs_fault_name[FAULT_MAX]; > >> * string rather than using the MS_LAZYTIME flag, so this must remain. > >> */ > >> #define F2FS_MOUNT_LAZYTIME 0x40000000 > >> +#define F2FS_MOUNT_RESERVE_NODE 0x80000000 > >> > >> #define F2FS_OPTION(sbi) ((sbi)->mount_opt) > >> #define clear_opt(sbi, option) (F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option) > >> @@ -172,6 +173,7 @@ struct f2fs_rwsem { > >> struct f2fs_mount_info { > >> unsigned int opt; > >> block_t root_reserved_blocks; /* root reserved blocks */ > >> + block_t root_reserved_nodes; /* root reserved nodes */ > >> kuid_t s_resuid; /* reserved blocks for uid */ > >> kgid_t s_resgid; /* reserved blocks for gid */ > >> int active_logs; /* # of active logs */ > >> @@ -2355,7 +2357,7 @@ static inline bool f2fs_has_xattr_block(unsigned int ofs) > >> return ofs == XATTR_NODE_OFFSET; > >> } > >> > >> -static inline bool __allow_reserved_blocks(struct f2fs_sb_info *sbi, > >> +static inline bool __allow_reserved_root(struct f2fs_sb_info *sbi, > >> struct inode *inode, bool cap) > >> { > >> if (!inode) > >> @@ -2380,7 +2382,7 @@ static inline unsigned int get_available_block_count(struct f2fs_sb_info *sbi, > >> avail_user_block_count = sbi->user_block_count - > >> sbi->current_reserved_blocks; > >> > >> - if (test_opt(sbi, RESERVE_ROOT) && !__allow_reserved_blocks(sbi, inode, cap)) > >> + if (test_opt(sbi, RESERVE_ROOT) && !__allow_reserved_root(sbi, inode, cap)) > >> avail_user_block_count -= F2FS_OPTION(sbi).root_reserved_blocks; > >> > >> if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { > >> @@ -2738,7 +2740,7 @@ static inline int inc_valid_node_count(struct f2fs_sb_info *sbi, > >> struct inode *inode, bool is_inode) > >> { > >> block_t valid_block_count; > >> - unsigned int valid_node_count; > >> + unsigned int valid_node_count, avail_user_node_count; > >> unsigned int avail_user_block_count; > >> int err; > >> > >> @@ -2767,8 +2769,12 @@ static inline int inc_valid_node_count(struct f2fs_sb_info *sbi, > >> goto enospc; > >> } > >> > >> + avail_user_node_count = sbi->total_node_count - F2FS_RESERVED_NODE_NUM; > >> + if (test_opt(sbi, RESERVE_NODE) && > >> + !__allow_reserved_root(sbi, inode, false)) > > Chunhai, > > > > Do we need to pass cap=true to __allow_reserved_root()? > > > > In addition, do we need to change cap as well for below statement? > > > > avail_user_block_count = get_available_block_count(sbi, inode, false); > > > Hi Jaegeuk, > > > Based on the description in commit a90a0884ac75 ("f2fs: check > cap_resource only for data blocks"), it seems that inode or node blocks > don't need to perform a check on the cap_resource. I'm not certain about > the reasoning behind this. Could you please help to clarify it? I don't quite remember as I had to fix the selinx issue long long time ago. > > > Thanks, > > > > > Thanks, > > > >> + avail_user_node_count -= F2FS_OPTION(sbi).root_reserved_nodes; > >> valid_node_count = sbi->total_valid_node_count + 1; > >> - if (unlikely(valid_node_count > sbi->total_node_count)) { > >> + if (unlikely(valid_node_count > avail_user_node_count)) { > >> spin_unlock(&sbi->stat_lock); > >> goto enospc; > >> } > >> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > >> index 30c038413040..a24e855a38ed 100644 > >> --- a/fs/f2fs/super.c > >> +++ b/fs/f2fs/super.c > >> @@ -143,6 +143,7 @@ enum { > >> Opt_extent_cache, > >> Opt_data_flush, > >> Opt_reserve_root, > >> + Opt_reserve_node, > >> Opt_resgid, > >> Opt_resuid, > >> Opt_mode, > >> @@ -265,6 +266,7 @@ static const struct fs_parameter_spec f2fs_param_specs[] = { > >> fsparam_flag_no("extent_cache", Opt_extent_cache), > >> fsparam_flag("data_flush", Opt_data_flush), > >> fsparam_u32("reserve_root", Opt_reserve_root), > >> + fsparam_u32("reserve_node", Opt_reserve_node), > >> fsparam_gid("resgid", Opt_resgid), > >> fsparam_uid("resuid", Opt_resuid), > >> fsparam_enum("mode", Opt_mode, f2fs_param_mode), > >> @@ -336,6 +338,7 @@ static match_table_t f2fs_checkpoint_tokens = { > >> #define F2FS_SPEC_discard_unit (1 << 21) > >> #define F2FS_SPEC_memory_mode (1 << 22) > >> #define F2FS_SPEC_errors (1 << 23) > >> +#define F2FS_SPEC_reserve_node (1 << 24) > >> > >> struct f2fs_fs_context { > >> struct f2fs_mount_info info; > >> @@ -437,22 +440,30 @@ static void f2fs_destroy_casefold_cache(void) { } > >> > >> static inline void limit_reserve_root(struct f2fs_sb_info *sbi) > >> { > >> - block_t limit = min((sbi->user_block_count >> 3), > >> + block_t block_limit = min((sbi->user_block_count >> 3), > >> sbi->user_block_count - sbi->reserved_blocks); > >> + block_t node_limit = sbi->total_node_count >> 3; > >> > >> /* limit is 12.5% */ > >> if (test_opt(sbi, RESERVE_ROOT) && > >> - F2FS_OPTION(sbi).root_reserved_blocks > limit) { > >> - F2FS_OPTION(sbi).root_reserved_blocks = limit; > >> + F2FS_OPTION(sbi).root_reserved_blocks > block_limit) { > >> + F2FS_OPTION(sbi).root_reserved_blocks = block_limit; > >> f2fs_info(sbi, "Reduce reserved blocks for root = %u", > >> F2FS_OPTION(sbi).root_reserved_blocks); > >> } > >> - if (!test_opt(sbi, RESERVE_ROOT) && > >> + if (test_opt(sbi, RESERVE_NODE) && > >> + F2FS_OPTION(sbi).root_reserved_nodes > node_limit) { > >> + F2FS_OPTION(sbi).root_reserved_nodes = node_limit; > >> + f2fs_info(sbi, "Reduce reserved nodes for root = %u", > >> + F2FS_OPTION(sbi).root_reserved_nodes); > >> + } > >> + if (!test_opt(sbi, RESERVE_ROOT) && !test_opt(sbi, RESERVE_NODE) && > >> (!uid_eq(F2FS_OPTION(sbi).s_resuid, > >> make_kuid(&init_user_ns, F2FS_DEF_RESUID)) || > >> !gid_eq(F2FS_OPTION(sbi).s_resgid, > >> make_kgid(&init_user_ns, F2FS_DEF_RESGID)))) > >> - f2fs_info(sbi, "Ignore s_resuid=%u, s_resgid=%u w/o reserve_root", > >> + f2fs_info(sbi, "Ignore s_resuid=%u, s_resgid=%u w/o reserve_root" > >> + " and reserve_node", > >> from_kuid_munged(&init_user_ns, > >> F2FS_OPTION(sbi).s_resuid), > >> from_kgid_munged(&init_user_ns, > >> @@ -841,6 +852,11 @@ static int f2fs_parse_param(struct fs_context *fc, struct fs_parameter *param) > >> F2FS_CTX_INFO(ctx).root_reserved_blocks = result.uint_32; > >> ctx->spec_mask |= F2FS_SPEC_reserve_root; > >> break; > >> + case Opt_reserve_node: > >> + ctx_set_opt(ctx, F2FS_MOUNT_RESERVE_NODE); > >> + F2FS_CTX_INFO(ctx).root_reserved_nodes = result.uint_32; > >> + ctx->spec_mask |= F2FS_SPEC_reserve_node; > >> + break; > >> case Opt_resuid: > >> F2FS_CTX_INFO(ctx).s_resuid = result.uid; > >> ctx->spec_mask |= F2FS_SPEC_resuid; > >> @@ -1424,6 +1440,14 @@ static int f2fs_check_opt_consistency(struct fs_context *fc, > >> ctx_clear_opt(ctx, F2FS_MOUNT_RESERVE_ROOT); > >> ctx->opt_mask &= ~F2FS_MOUNT_RESERVE_ROOT; > >> } > >> + if (test_opt(sbi, RESERVE_NODE) && > >> + (ctx->opt_mask & F2FS_MOUNT_RESERVE_NODE) && > >> + ctx_test_opt(ctx, F2FS_MOUNT_RESERVE_NODE)) { > >> + f2fs_info(sbi, "Preserve previous reserve_node=%u", > >> + F2FS_OPTION(sbi).root_reserved_nodes); > >> + ctx_clear_opt(ctx, F2FS_MOUNT_RESERVE_NODE); > >> + ctx->opt_mask &= ~F2FS_MOUNT_RESERVE_NODE; > >> + } > >> > >> err = f2fs_check_test_dummy_encryption(fc, sb); > >> if (err) > >> @@ -1623,6 +1647,9 @@ static void f2fs_apply_options(struct fs_context *fc, struct super_block *sb) > >> if (ctx->spec_mask & F2FS_SPEC_reserve_root) > >> F2FS_OPTION(sbi).root_reserved_blocks = > >> F2FS_CTX_INFO(ctx).root_reserved_blocks; > >> + if (ctx->spec_mask & F2FS_SPEC_reserve_node) > >> + F2FS_OPTION(sbi).root_reserved_nodes = > >> + F2FS_CTX_INFO(ctx).root_reserved_nodes; > >> if (ctx->spec_mask & F2FS_SPEC_resgid) > >> F2FS_OPTION(sbi).s_resgid = F2FS_CTX_INFO(ctx).s_resgid; > >> if (ctx->spec_mask & F2FS_SPEC_resuid) > >> @@ -2342,9 +2369,11 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root) > >> else if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK) > >> seq_puts(seq, "fragment:block"); > >> seq_printf(seq, ",active_logs=%u", F2FS_OPTION(sbi).active_logs); > >> - if (test_opt(sbi, RESERVE_ROOT)) > >> - seq_printf(seq, ",reserve_root=%u,resuid=%u,resgid=%u", > >> + if (test_opt(sbi, RESERVE_ROOT) || test_opt(sbi, RESERVE_NODE)) > >> + seq_printf(seq, ",reserve_root=%u,reserve_node=%u,resuid=%u," > >> + "resgid=%u", > >> F2FS_OPTION(sbi).root_reserved_blocks, > >> + F2FS_OPTION(sbi).root_reserved_nodes, > >> from_kuid_munged(&init_user_ns, > >> F2FS_OPTION(sbi).s_resuid), > >> from_kgid_munged(&init_user_ns, > >