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 985F2CCF2E3 for ; Mon, 19 Oct 2026 14:05:03 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:To:Sender:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7y7z9eVY6u4IlAhAqSObIrryyUvuoCksFwlSCPnYnpw=; b=ApD1VE4QYK/uMsFYZQqssRF5Qk 6nh9tfKebXq1npuzMyPFgFXVxhbOW/LvcZGIYA7CvK0gcFKpLfRFIE1cOAKrp9tbm+OeZSiVHCL+O sygNRSx/PZGIIC5KBIW+qGaS/XZbNoGoxwGtj233/PyHEoS/QvnJyy/9hoDF8gNL15GI=; 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 1xInz1-0003gu-PG; Mon, 19 Oct 2026 14:04:59 +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 1xInz0-0003gn-BI for linux-f2fs-devel@lists.sourceforge.net; Mon, 19 Oct 2026 14:04:58 +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:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: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=4amEEY/Xct1faar7l9czoxlKhgGqkKJbq754RzhoEmM=; b=gaB35luM1rCpSJJJMxArKqi5kp nZ/peBYiFlQWHRp3F2dwg/dG2jlyWN89NP5Vdj7PM8Tjb48hltXcJY50moirxzy6ebItpScaFy0nT Okj8LwDcEBKUOLEF4ZHLDsEsZyepn8P+fxawrTOpayDr1ZfTGQUvj1iy5qLQbMpp3P0c=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From: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=4amEEY/Xct1faar7l9czoxlKhgGqkKJbq754RzhoEmM=; b=cYvFEHHtvlwJaag2p2lt98EcyP zmZwh1hAZ5d5RJkleAo2qsJkoOdy3iJ6//a/VGn0o/VHTTBLRE00Xk7uzBD9VuVGV/if9CFMPAGOy I8X+ytnvUiPLDadUOmWixSMMn6CIrZhccBfNApx7wAUbKK9x16UAWMUyVkPqs3kD+TcY=; 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 1xInyy-0004Ma-EJ for linux-f2fs-devel@lists.sourceforge.net; Mon, 19 Oct 2026 14:04:58 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id BDEB660534; Mon, 19 Oct 2026 14:04:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 681EE1F000C9; Mon, 19 Oct 2026 14:04:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792418690; bh=4amEEY/Xct1faar7l9czoxlKhgGqkKJbq754RzhoEmM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jOfWy+BuXrTl8vItMCjvJtfMgVCfoAfYqcU0HA9oQ5a4DVxgwzVc5tp42HmkE80Qf p8adFBF6IGGWG1ZBEx4YBVGl3oq9DhvGKJxqqqX3DPCOmMhTrMcxTUOwmWdQpedWws 2b2IWbPzdWrq4yMP1VBGt5GQCBKetUeT8YaAo9kyJKdxwarmWEqjTLXkF17ieo7XNK Mru+hBkOTMDqHc5V1X1cG6dxuZ6ZnA3/Jdm2Qg8Z8zNKcgiECbI0DSkxjo3H6kWU2v 1TCnkqH81BHmW1xQaVR+pQ2/TRJDtrh3ZbJHqgaisyXLT9m87y0TFPMm+j1z74Uf0K CROb5LuYAIl4A== To: patches@lists.linux.dev, stable@vger.kernel.org Date: Mon, 19 Oct 2026 09:51:58 -0400 Message-ID: <20261019135441.1420968-427-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org> References: <20261019135441.1420968-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.57 X-Headers-End: 1xInyy-0004Ma-EJ Subject: [f2fs-dev] [PATCH AUTOSEL 6.18-5.10] f2fs: avoid setting SBI_NEED_FSCK on transient resize failure 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: Sasha Levin via Linux-f2fs-devel Reply-To: Sasha Levin Cc: Sasha Levin , Daeho Jeong , linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, Jaegeuk Kim Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net RnJvbTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KClsgVXBzdHJlYW0gY29t bWl0IDI1OGM5NTE1MGMyNmEzMGRiMTg5NmVhY2QzYmRlZjI2MzE0ZjJjYTEgXQoKV2hlbiBmcmVl X3NlZ21lbnRfcmFuZ2UoKSBmYWlscyBpbiBmMmZzX3Jlc2l6ZV9mcygpLCBubyBvbi1kaXNrCnN1 cGVyYmxvY2sgb3IgZmlsZXN5c3RlbSBtZXRhZGF0YSBoYXMgYmVlbiBtb2RpZmllZCB5ZXQsIGFu ZApmcmVlX3NlZ21lbnRfcmFuZ2UoKSBzYWZlbHkgcmVzdG9yZXMgYWxsIGluLW1lbW9yeSBjb3Vu dGVycyBiZWZvcmUKcmV0dXJuaW5nLgoKSG93ZXZlciwgdGhlIGN1cnJlbnQgZXJyb3IgcmVjb3Zl cnkgcGF0aCB1bmNvbmRpdGlvbmFsbHkgc2V0cyB0aGUKU0JJX05FRURfRlNDSyBmbGFnIGFuZCBw cmludHMgYSBzY2FyeSBlcnJvciBtZXNzYWdlIG9uIGFueSBlcnJvciwKZm9yY2luZyBhbiB1bm5l Y2Vzc2FyeSBhbmQgdGltZS1jb25zdW1pbmcgZnNjay5mMmZzIHJlcGFpciBvbiB0aGUKc3Vic2Vx dWVudCBtb3VudC9yZWJvb3QuCgpGaXggdGhpcyBieSBzZXBhcmF0aW5nIHRoZSBlcnJvciByZWNv dmVyeSBwYXRoIHdpdGggYSBkZWRpY2F0ZWQKcmVjb3Zlcl91c2VyX2Jsb2NrcyBsYWJlbCB0byBi eXBhc3Mgc2V0dGluZyBTQklfTkVFRF9GU0NLIG9uCmZyZWVfc2VnbWVudF9yYW5nZSgpIGZhaWx1 cmVzLgoKU2lnbmVkLW9mZi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogU3VubWluIEplb25nIDxzX21pbi5qZW9uZ0BzYW1zdW5nLmNvbT4KUmV2 aWV3ZWQtYnk6IENoYW8gWXUgPGNoYW9Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogSmFlZ2V1 ayBLaW0gPGphZWdldWtAa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPHNh c2hhbEBrZXJuZWwub3JnPgotLS0KCkxMTSBHZW5lcmF0ZWQgZXhwbGFuYXRpb25zLCBtYXkgYmUg Y29tcGxldGVseSBib2d1czoKCkkgaGF2ZSB0aGUgbG9jYWwgNi4xMiBjb2RlLCB0aGUgaW50cm9k dWNlciwgYW5kIHRoZSBtYWlsaW5nLWxpc3QgcmV2aWV3LgpDb21waWxpbmcgdGhlIGZ1bGwgbmlu ZS1waGFzZSBhbmFseXNpcyBuZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBIQVNFIDE6IENPTU1JVCBNRVNTQUdFIEZP UkVOU0lDUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KClN0ZXAgMS4xOiBQQVJTRSBUSEUgU1VCSkVDVCBMSU5FClJlY29yZDog W2YyZnNdIFthdm9pZCBzZXR0aW5nXSBBdm9pZCBzZXR0aW5nIGBTQklfTkVFRF9GU0NLYCB3aGVu CmBmMmZzX3Jlc2l6ZV9mcygpYCBmYWlscyBpbiBgZnJlZV9zZWdtZW50X3JhbmdlKClgIGJlZm9y ZSBhbnkgb24tZGlzawptZXRhZGF0YSBpcyBtb2RpZmllZC4KClN0ZXAgMS4yOiBQQVJTRSBBTEwg Q09NTUlUIE1FU1NBR0UgVEFHUwpSZWNvcmQ6Ci0gU2lnbmVkLW9mZi1ieTogRGFlaG8gSmVvbmcg PGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4gKGF1dGhvciwKICBHb29nbGUvQW5kcm9pZCBmMmZzKQot IFNpZ25lZC1vZmYtYnk6IFN1bm1pbiBKZW9uZyA8c19taW4uamVvbmdAc2Ftc3VuZy5jb20+Ci0g UmV2aWV3ZWQtYnk6IENoYW8gWXUgPGNoYW9Aa2VybmVsLm9yZz4gKHByaW1hcnkgZjJmcyByZXZp ZXdlcikKLSBTaWduZWQtb2ZmLWJ5OiBKYWVnZXVrIEtpbSA8amFlZ2V1a0BrZXJuZWwub3JnPiAo ZjJmcyBtYWludGFpbmVyKQotIE5vIEZpeGVzOiB0YWcgKGV4cGVjdGVkKQotIE5vIENjOiBzdGFi bGUgKGV4cGVjdGVkKQotIE5vIFJlcG9ydGVkLWJ5IC8gVGVzdGVkLWJ5IC8gTGluayAvIHN5emJv dAotIElnbm9yZSBwaXBlbGluZS1hZGRlZCBTYXNoYSBMZXZpbiBTT0IgLyBVcHN0cmVhbSBjb21t aXQgbWFya2VycyBpZgogIHByZXNlbnQKClN0ZXAgMS4zOiBBTkFMWVpFIFRIRSBDT01NSVQgQk9E WSBURVhUClJlY29yZDoKLSBCdWc6IGBmMmZzX3Jlc2l6ZV9mcygpYCBlcnJvciByZWNvdmVyeSBz ZXRzIGBTQklfTkVFRF9GU0NLYCBvbiBhbnkKICBlcnJvciBhZnRlciBgZnJlZV9zZWdtZW50X3Jh bmdlKClgLCBpbmNsdWRpbmcgZmFpbHVyZXMgdGhhdCBoYXBwZW4KICBiZWZvcmUgYHVwZGF0ZV9z Yl9tZXRhZGF0YSgpYCAvIGBmMmZzX2NvbW1pdF9zdXBlcigpYC4KLSBTeW1wdG9tOiBzY2FyeSBg ZjJmc19lcnJgIHBsdXMgYSBwZXJzaXN0ZW50IOKAnG5lZWQgZnNja+KAnSBtYXJrLCBzbyB0aGUK ICBuZXh0IG1vdW50L3JlYm9vdCBydW5zIGEgbG9uZyBgZnNjay5mMmZzYCBldmVuIHRob3VnaCB0 aGUgZmlsZXN5c3RlbQogIGlzIHN0aWxsIGNvbnNpc3RlbnQuCi0gUm9vdCBjYXVzZTogb25lIHNo YXJlZCBgcmVjb3Zlcl9vdXRgIGxhYmVsIGZvciBib3RoIOKAnEdDL3NlZ21lbnQtZnJlZQogIGZh aWxlZCwgbm90aGluZyBjb21taXR0ZWTigJ0gYW5kIOKAnHN1cGVyYmxvY2svY2hlY2twb2ludCBh bHJlYWR5CiAgY2hhbmdlZC7igJ0KLSBWZXJzaW9uIGluZm86IG5vbmUgaW4gdGhlIG1lc3NhZ2Uu IENvZGUgaGFzIGJlZW4gdGhpcyB3YXkgc2luY2Ugb25saW5lCiAgcmVzaXplIHdhcyBhZGRlZC4K ClN0ZXAgMS40OiBERVRFQ1QgSElEREVOIEJVRyBGSVhFUwpSZWNvcmQ6IE5vdCBoaWRkZW4uIEl0 IGlzIGFuIGV4cGxpY2l0IGVycm9yLXBhdGggY29ycmVjdG5lc3MgZml4OiBzdG9wCnRyZWF0aW5n IGEgdHJhbnNpZW50IHJlc2l6ZSBmYWlsdXJlIGFzIGZpbGVzeXN0ZW0gY29ycnVwdGlvbi4KCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpQSEFTRSAyOiBESUZGIEFOQUxZU0lTIC0gTElORSBCWSBMSU5FCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU3RlcCAy LjE6IElOVkVOVE9SWSBUSEUgQ0hBTkdFUwpSZWNvcmQ6Ci0gRmlsZTogYGZzL2YyZnMvZ2MuY2Ag b25seSAofjYgaW5zZXJ0aW9ucyAvIDMgZGVsZXRpb25zIGluCiAgYGYyZnNfcmVzaXplX2ZzKClg KQotIEZ1bmN0aW9uczogYGYyZnNfcmVzaXplX2ZzKClgCi0gU2NvcGU6IHNpbmdsZS1maWxlIHN1 cmdpY2FsIGVycm9yLXBhdGggY2hhbmdlCgpTdGVwIDIuMjogVU5ERVJTVEFORCBUSEUgQ09ERSBG TE9XIENIQU5HRQpSZWNvcmQgKHZlcmlmaWVkIGFnYWluc3QgbG9jYWwgYGZzL2YyZnMvZ2MuY2Ap OgotIEJlZm9yZTogYGZyZWVfc2VnbWVudF9yYW5nZSgpYCBlcnJvciDihpIgYGdvdG8gcmVjb3Zl cl9vdXRgIOKGkiBhbHdheXMKICBgc2V0X3NiaV9mbGFnKFNCSV9ORUVEX0ZTQ0spYCArIHJlc3Rv cmUgYHVzZXJfYmxvY2tfY291bnRgLgotIEFmdGVyOiBgZnJlZV9zZWdtZW50X3JhbmdlKClgIGVy cm9yIOKGkiBgZ290byByZWNvdmVyX3VzZXJfYmxvY2tzYCDihpIKICByZXN0b3JlIGB1c2VyX2Js b2NrX2NvdW50YCAvIGNsZWFyIGBTQklfSVNfUkVTSVpFRlNgIG9ubHkuCi0gYHJlY292ZXJfb3V0 YCBzdGlsbCB1c2VkIGFmdGVyIGBmMmZzX2NvbW1pdF9zdXBlcigpYCAvCiAgYGYyZnNfd3JpdGVf Y2hlY2twb2ludCgpYCBmYWlsdXJlcyAob24tZGlzayBtZXRhZGF0YSBhbHJlYWR5IHRvdWNoZWQp LgogIEl0IG5vdyBhbHNvIGBmMmZzX2J1Z19vbihzYmksIGVyciA9PSAtRUFHQUlOKWAgdGhlbiBz ZXRzCiAgYFNCSV9ORUVEX0ZTQ0tgLCB0aGVuIGZhbGxzIHRocm91Z2ggdG8gcmVzdG9yZSBgdXNl cl9ibG9ja19jb3VudGAuCi0gU3VjY2VzcyBwYXRoIHN0aWxsIGZhbGxzIHRocm91Z2ggYm90aCBs YWJlbHMgd2l0aCBgZXJyID09IDBgOyBubyBleHRyYQogIE5FRURfRlNDSywgbm8gY291bnRlciBy ZXN0b3JlLgoKU3RlcCAyLjM6IElERU5USUZZIFRIRSBCVUcgTUVDSEFOSVNNClJlY29yZDoKLSBD YXRlZ29yeTogbG9naWMgLyBlcnJvci1wYXRoIGNvcnJlY3RuZXNzIChmYWxzZS1wb3NpdGl2ZSBj b3JydXB0aW9uCiAgZmxhZykKLSBNZWNoYW5pc206IGBmcmVlX3NlZ21lbnRfcmFuZ2UoKWAgcmVz dG9yZXMgYE1BSU5fU0VDU2Agb24gZXZlcnkgcmV0dXJuCiAgKGBNQUlOX1NFQ1Moc2JpKSArPSBz ZWNzYCBhdCBpdHMgYG91dDpgIGxhYmVsKS4gQ2FsbGVycyBoYXZlIG5vdCB5ZXQKICBjYWxsZWQg YHVwZGF0ZV9zYl9tZXRhZGF0YSgpYC4gTWFya2luZyBORUVEX0ZTQ0sgaXMgd3JvbmcgZm9yIHRo YXQKICBwYXRoLgotIENvbW1vbiB0cmlnZ2VyIGluIHRoaXMgdHJlZTogYGYyZnNfZ2NfcmFuZ2Uo KWAgcmV0dXJucyBgLUVBR0FJTmAgd2hlbgogIHZhbGlkIGJsb2NrcyByZW1haW4gYWZ0ZXIgb25l IEdDIHBhc3MgKGBnYy5jYCDigJxpZiAoIWRyeV9ydW4gJiYKICBnZXRfdmFsaWRfYmxvY2tzKC4u LikpIHJldHVybiAtRUFHQUlO4oCdKS4KClN0ZXAgMi40OiBBU1NFU1MgVEhFIEZJWCBRVUFMSVRZ ClJlY29yZDoKLSBPYnZpb3VzbHkgY29ycmVjdDogc3BsaXRzIOKAnG5vIG1ldGFkYXRhIHdyaXR0 ZW7igJ0gdnMg4oCcbWV0YWRhdGEgYWxyZWFkeQogIHVwZGF0ZWQu4oCdCi0gTWluaW1hbDsgbm8g QVBJL2RhdGEtc3RydWN0dXJlIGNoYW5nZS4KLSBSZWdyZXNzaW9uIHJpc2sgbG93LiBgZjJmc19i dWdfb24oZXJyID09IC1FQUdBSU4pYCBvbiBgcmVjb3Zlcl9vdXRgIGlzCiAgYW4gaW52YXJpYW50 OiB3aXRoIGBDT05GSUdfRjJGU19DSEVDS19GUz1uYCBpdCBXQVJOcyBhbmQgc2V0cwogIE5FRURf RlNDSyAoYWxyZWFkeSBiZWluZyBzZXQpOyB3aXRoIENIRUNLX0ZTIGl0IEJVR19PTnMgb25seSBp ZgogIGNoZWNrcG9pbnQvc3VwZXIgY29tbWl0IHJldHVybmVkIGAtRUFHQUlOYCwgd2hpY2ggdGhh dCBwYXRoIHNob3VsZAogIG5vdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQSEFTRSAzOiBHSVQgSElTVE9SWSBJTlZFU1RJ R0FUSU9OCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQoKU3RlcCAzLjE6IEJMQU1FIFRIRSBDSEFOR0VEIExJTkVTClJlY29yZDoK LSBVbmNvbmRpdGlvbmFsIE5FRURfRlNDSyBvbiByZXNpemUgZmFpbHVyZSBpbnRyb2R1Y2VkIGlu CiAgYDA0ZjBiMmVhYTNiM2VlYCAo4oCcZjJmczogaW9jdGwgZm9yIHJlbW92aW5nIGEgcmFuZ2Ug ZnJvbSBGMkZT4oCdLAogIFFpdXlhbmcgU3VuLCAyMDE5KS4KLSBgcmVjb3Zlcl9vdXRgIGxhYmVs IGZyb20gYGI0YjEwMDYxZWY5OGM1YCAoSmFlZ2V1ayBLaW0sIDIwMjApLgotIFByZXNlbnQgaW4g dGhpcyA2LjEyIHRyZWUgKGBnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yCiAgMDRmMGIyZWFh M2IzZWUgSEVBRGAgc3VjY2VlZGVkKS4KClN0ZXAgMy4yOiBGT0xMT1cgVEhFIEZJWEVTOiBUQUcK UmVjb3JkOiBObyBGaXhlczogdGFnLiBJbnRyb2R1Y2VyIGlzIHRoZSAyMDE5IG9ubGluZS1yZXNp emUgaW9jdGwsCmNvbmZpcm1lZCBpbi10cmVlLgoKU3RlcCAzLjM6IENIRUNLIEZJTEUgSElTVE9S WSBGT1IgUkVMQVRFRCBDSEFOR0VTClJlY29yZDoKLSBSZWxhdGVkIGluLXRyZWU6IGAzYjg1ZWRm MzM5MWYzYCAobWlncmF0ZSBhbGwgY3Vyc2VnIHR5cGVzIGluCiAgYGZyZWVfc2VnbWVudF9yYW5n ZWApLCBgMjhmYzRlOTA3N2NlNWAgKFNCSV9JU19SRVNJWkVGUyBsb2NraW5nKSwKICBgM2FiMDU5 OGU2ZDg2MGAgKHJlc2l6ZSBwYW5pYykuIE5vbmUgYWxyZWFkeSBza2lwIE5FRURfRlNDSyBvbgog IGBmcmVlX3NlZ21lbnRfcmFuZ2UoKWAgZmFpbHVyZS4KLSBMYXRlciBtYWlubGluZSAoZjJmcy1m b3ItNy4zLXJjMSwgYWZ0ZXIgdGhpcyBwYXRjaCk6IOKAnGFjY3VyYXRlbHkKICBhZGp1c3QgZnJl ZV9zZWN0aW9ucyBkdXJpbmcgZnJlZV9zZWdtZW50X3Jhbmdl4oCdIOKAlCBzZXBhcmF0ZSBhY2Nv dW50aW5nCiAgZml4LCBub3QgYSBwcmVyZXF1aXNpdGUuCi0gU3RhbmRhbG9uZS4KClN0ZXAgMy40 OiBDSEVDSyBUSEUgQVVUSE9SJ1MgT1RIRVIgQ09NTUlUUwpSZWNvcmQ6IERhZWhvIEplb25nIGlz IGEgcmVndWxhciBHb29nbGUvQW5kcm9pZCBmMmZzIGNvbnRyaWJ1dG9yIGluIHRoaXMKdHJlZSAo Z2Mvem9uZWQvc3lzZnMgd29yaykuIENvLWF1dGhvciBTYW1zdW5nLiBNYWludGFpbmVyIEphZWdl dWsKYXBwbGllZCBpdC4KClN0ZXAgMy41OiBDSEVDSyBGT1IgREVQRU5ERU5UL1BSRVJFUVVJU0lU RSBDT01NSVRTClJlY29yZDogTm8gbmV3IGhlbHBlcnMuIFVzZXMgZXhpc3RpbmcgYHNldF9zYmlf ZmxhZ2AgLyBgZjJmc19idWdfb25gIC8KYHJlY292ZXJfb3V0YC4gU3Vycm91bmRpbmcgbWFpbmxp bmUgY29udGV4dCB1c2VzIGBmMmZzX2Rvd25fd3JpdGVfdHJhY2VgCmFuZCAzLWFyZyBgdGhhd19z dXBlcmAsIHdoaWNoIHRoaXMgdHJlZSBkb2VzIG5vdCBoYXZlOyB0aG9zZSBhcmUgY29udGV4dApv bmx5LCBub3QgZGVwZW5kZW5jaWVzIG9mIHRoZSBsb2dpYyBjaGFuZ2UuIENhbiBhcHBseSBzdGFu ZGFsb25lIHdpdGggYQp0cml2aWFsIGNvbnRleHQgdHdlYWsuCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0UgNDogTUFJ TElORyBMSVNUIEFORCBFWFRFUk5BTCBSRVNFQVJDSAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0ZXAgNC4xOiBGSU5EIFRI RSBPUklHSU5BTCBQQVRDSCBESVNDVVNTSU9OClJlY29yZDoKLSBgYjQgZGlnIC1jIDxzaGE+YCBu b3QgdXNlZDogY2FuZGlkYXRlIFNIQSBpcyBub3QgaW4gdGhpcyBjaGVja291dCAoYGI0CiAgZGln YCBvbiB0aGUgZjJmcy1mb3ItNy4zLXJjMSBtZXJnZSAxMTViZDM2NCByZWplY3RlZCBhcyBhIG1l cmdlCiAgY29tbWl0KS4KLSBgYjQgbWJveGAgbXNnaWQgYDIwMjYwODE4MTcwNTM1LjMxOTA4Njkt MS1kYWVobzQzQGdtYWlsLmNvbWA6CiAgNS1tZXNzYWdlIHYxIHRocmVhZCBzYXZlZC4KLSB2MSAo MTggQXVnIDIwMjYpOiBza2lwIE5FRURfRlNDSyBvbmx5IHdoZW4gYGVyciAhPSAtRUFHQUlOYC4K LSBDaGFvIFl1OiBkb27igJl0IGtleSBvZmYgYC1FQUdBSU5gIGdsb2JhbGx5OyBpdCBtaWdodCBj b21lIGZyb20gb3RoZXIKICBzaXRlcyBsYXRlci4KLSBEYWVobzogYW55IGBmcmVlX3NlZ21lbnRf cmFuZ2UoKWAgZXJyb3IgaXMgcHJlLW1ldGFkYXRhOyB1c2UgYQogIHNlcGFyYXRlIGxhYmVsLgot IENoYW86IGFkZCBgZjJmc19idWdfb24oc2JpLCBlcnIgPT0gLUVBR0FJTilgIG9uIGByZWNvdmVy X291dGAuCi0gdjIgKDIwIEF1ZyAyMDI2KTogbWF0Y2hlcyB0aGlzIGNhbmRpZGF0ZS4gQ2hhbyBS ZXZpZXdlZC1ieS4gTm8gTkFLcy4KICBObyBDYzogc3RhYmxlIGluIHRoZSB0aHJlYWQuCi0gTGFu ZGVkIGluIGYyZnMtZm9yLTcuMy1yYzEgKG1lcmdlZCB0byBtYWlubGluZSBhcyAxMTViZDM2NCwg 4oCcZjJmczoKICBhdm9pZCBzZXR0aW5nIFNCSV9ORUVEX0ZTQ0sgb24gdHJhbnNpZW50IHJlc2l6 ZSBmYWlsdXJl4oCdKS4KClN0ZXAgNC4yOiBDSEVDSyBXSE8gUkVWSUVXRUQgVEhFIFBBVENIClJl Y29yZDogbGludXgtZjJmcy1kZXZlbCwgbGludXgta2VybmVsLCBrZXJuZWwtdGVhbUBhbmRyb2lk LmNvbS4KUmV2aWV3ZWQgYnkgQ2hhbyBZdTsgYXBwbGllZCBieSBKYWVnZXVrIEtpbS4KClN0ZXAg NC4zOiBTRUFSQ0ggRk9SIFRIRSBCVUcgUkVQT1JUClJlY29yZDogTm8gc3l6Ym90L2J1Z3ppbGxh LiBBdXRob3JzIGFyZSBBbmRyb2lkL1NhbXN1bmc7IHRoZSBtZXNzYWdlCmRlc2NyaWJlcyBmb3Jj ZWQgZnNjayBhZnRlciBhIGZhaWxlZCByZXNpemUuIE5vIHNlcGFyYXRlIHVzZXIgYnVnIFVSTApm b3VuZC4KClN0ZXAgNC40OiBDSEVDSyBGT1IgUkVMQVRFRCBQQVRDSEVTIEFORCBTRVJJRVMKUmVj b3JkOiBTdGFuZGFsb25lICh2MSB0aGVuIHYyIG9mIHRoZSBzYW1lIGlkZWEpLiBTYW1lIDcuMyBw dWxsIGhhcwpvdGhlciBgZnJlZV9zZWdtZW50X3JhbmdlYCBmaXhlczsgdGhpcyBvbmUgZG9lcyBu b3QgZGVwZW5kIG9uIHRoZW0uCuKAnG1pZ3JhdGUgYWxsIGN1cnNlZyB0eXBlc+KAnSBpcyBhbHJl YWR5IGhlcmUuCgpTdGVwIDQuNTogQ0hFQ0sgU1RBQkxFIE1BSUxJTkcgTElTVCBISVNUT1JZClJl Y29yZDogV2ViIHNlYXJjaCBvZiBsb3JlLmtlcm5lbC5vcmcvc3RhYmxlIGZvciB0aGlzIHN1Ympl Y3QgZm91bmQgbm8KcHJpb3Igc3RhYmxlIGRpc2N1c3Npb24gb3IgcmVqZWN0aW9uLiBVTlZFUklG SUVEIHRoYXQgbm8gb25lIHByaXZhdGVseQpyZXF1ZXN0ZWQgaXQuCgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0UgNTog Q09ERSBTRU1BTlRJQyBBTkFMWVNJUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0ZXAgNS4xOiBJREVOVElGWSBLRVkgRlVO Q1RJT05TIElOIFRIRSBESUZGClJlY29yZDogYGYyZnNfcmVzaXplX2ZzKClgOyBjbG9zZWx5IHJl bGF0ZWQgY2FsbGVlcwpgZnJlZV9zZWdtZW50X3JhbmdlKClgLCBgdXBkYXRlX3NiX21ldGFkYXRh KClgLCBgZjJmc19jb21taXRfc3VwZXIoKWAsCmBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoKWAuCgpT dGVwIDUuMjogVFJBQ0UgQ0FMTEVSUwpSZWNvcmQ6Ci0gYGYyZnNfaW9jX3Jlc2l6ZV9mcygpYCBp biBgZnMvZjJmcy9maWxlLmNgIChGMkZTX0lPQ19SRVNJWkVfRlMgYW5kCiAgY29tcGF0KS4gUmVx dWlyZXMgYENBUF9TWVNfQURNSU5gLgotIE5vdCBpbnRlcnJ1cHQvaG90LXBhdGguIFVzZXJzcGFj ZS10cmlnZ2VyZWQgYWRtaW4gaW9jdGwgKEFuZHJvaWQKICB1cGRhdGVfZW5naW5lL3ZvbGQgb25s aW5lIHNocmluayBpcyB0aGUgbWFpbiBwcm9kdWN0aW9uIHVzZSkuCgpTdGVwIDUuMzogVFJBQ0Ug Q0FMTEVFUwpSZWNvcmQ6IGBmcmVlX3NlZ21lbnRfcmFuZ2UoKWAgdGVtcG9yYXJpbHkgZHJvcHMg YE1BSU5fU0VDU2AsIG1heSBtb3ZlCmN1cnNlZ3MgYW5kIEdDLCB0aGVuIGFsd2F5cyBgTUFJTl9T RUNTICs9IHNlY3NgIGJlZm9yZSByZXR1cm4uIE9ubHkKYWZ0ZXIgc3VjY2VzcyBkb2VzIGBmMmZz X3Jlc2l6ZV9mcygpYCBjYWxsIGB1cGRhdGVfc2JfbWV0YWRhdGEoKWAgLwpgZjJmc19jb21taXRf c3VwZXIoKWAuCgpTdGVwIDUuNDogRk9MTE9XIFRIRSBDQUxMIENIQUlOClJlY29yZDogaW9jdGwg 4oaSIGBmMmZzX3Jlc2l6ZV9mc2Ag4oaSIGZyZWV6ZSDihpIgYHVzZXJfYmxvY2tfY291bnQgLT0K c2hydW5rX2Jsb2Nrc2Ag4oaSIGBmcmVlX3NlZ21lbnRfcmFuZ2VgLiBgLUVBR0FJTmAgd2hlbiB0 YWlsIHNlY3Rpb25zCnN0aWxsIGhhdmUgdmFsaWQgYmxvY2tzIGlzIHJlYWNoYWJsZSBhbmQgZXhw ZWN0ZWQuIEFmdGVyIE5FRURfRlNDSyBpcwpzZXQsIGEgbGF0ZXIgcmVzaXplIGhpdHMgYGlzX3Ni aV9mbGFnX3NldChzYmksIFNCSV9ORUVEX0ZTQ0spYCBhbmQKcmV0dXJucyBgLUVGU0NPUlJVUFRF RGAuIENoZWNrcG9pbnQgcGVyc2lzdHMgYENQX0ZTQ0tfRkxBR2A7IHJlbW91bnQKcmVzdG9yZXMg TkVFRF9GU0NLLgoKU3RlcCA1LjU6IFNFQVJDSCBGT1IgU0lNSUxBUiBQQVRURVJOUwpSZWNvcmQ6 IE5FRURfRlNDSyBpcyB1c2VkIHdpZGVseSBmb3IgcmVhbCBjb3JydXB0aW9uLiBUaGlzIHdhcyB0 aGUgb25seQpyZXNpemUgcGF0aCB0aGF0IHNldCBpdCBvbiBhIGZ1bGx5IHJvbGxlZC1iYWNrIGlu LW1lbW9yeSBmYWlsdXJlLiBJbi0KdHJlZSDigJxmMmZzOiByZW1vdmUgZmFsc2UgYWxhcm0gb24g aWdldCBmYWlsdXJlIGR1cmluZyBHQ+KAnSBpcyB0aGUgc2FtZQpjbGFzcyBvZiBmYWxzZSBORUVE X0ZTQ0suCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUEhBU0UgNjogQ1JPU1MtUkVGRVJFTkNJTkcgQUdBSU5TVCBUSEUgTE9D QUwgVFJFRQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KClN0ZXAgNi4xOiBET0VTIFRIRSBCVUdHWSBDT0RFIEVYSVNUIElOIFRI SVMgVFJFRT8KUmVjb3JkOiBZZXMuIExvY2FsIHRyZWUgaXMgYHBlbmRpbmctNi4xMmAsIGBnaXQg ZGVzY3JpYmUgSEVBRGAgPQpgcC02LjEyLTMtZ2M1MDRjZjBiYWEzZDhgLCBgbWFrZSBrZXJuZWx2 ZXJzaW9uYCA9IDYuMTIuMTExLgpgYGAKMjM2NDogICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfSVNf UkVTSVpFRlMpOwoyMzY1OiAgIGVyciA9IGZyZWVfc2VnbWVudF9yYW5nZShzYmksIHNlY3MsIGZh bHNlKTsKMjM2NjogICBpZiAoZXJyKQoyMzY3OiAgICAgICAgICAgZ290byByZWNvdmVyX291dDsK Li4uCjIzODg6cmVjb3Zlcl9vdXQ6CjIzOTA6ICAgaWYgKGVycikgewoyMzkxOiAgICAgICAgICAg c2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7CmBgYApCdWcgcHJlc2VudCBzaW5jZSAy MDE5IHJlc2l6ZSBpb2N0bC4gYHJlY292ZXJfdXNlcl9ibG9ja3NgIGlzIGFic2VudC4KClN0ZXAg Ni4yOiBDSEVDSyBGT1IgQkFDS1BPUlQgQ09NUExJQ0FUSU9OUwpSZWNvcmQ6IEZ1bmN0aW9uYWwg aHVuayBtYXRjaGVzLiBNYWlubGluZSBjb250ZXh0IHVzZXMKYGYyZnNfZG93bl93cml0ZV90cmFj ZWAgKG5vdCBpbiA2LjEyKSBhbmQgYHRoYXdfc3VwZXIoLi4uLApGUkVFWkVfSE9MREVSX0tFUk5F TCwgTlVMTClgIHZzIGxvY2FsIHR3by1hcmcgYEZSRUVaRV9IT0xERVJfVVNFUlNQQUNFYC4KRXhw ZWN0ZWQgZGlmZmljdWx0eTogbWlub3IgY29udGV4dCBhZGp1c3RtZW50LCBub3QgYSByZXdvcmsu CgpTdGVwIDYuMzogQ0hFQ0sgSUYgUkVMQVRFRCBGSVhFUyBBUkUgQUxSRUFEWSBIRVJFClJlY29y ZDogTm8uIGBnaXQgbG9nIC0tZ3JlcGAgb24gZ2MuYyBmb3IgdGhpcyBzdWJqZWN0IGlzIGVtcHR5 LiBSZXNpemUtCnJlbGF0ZWQgY29tbWl0cyBoZXJlIGRvIG5vdCBza2lwIE5FRURfRlNDSyBvbiBg ZnJlZV9zZWdtZW50X3JhbmdlKClgCmZhaWx1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUEhBU0UgNzogU1VCU1lTVEVN IEFORCBNQUlOVEFJTkVSIENPTlRFWFQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdGVwIDcuMTogSURFTlRJRlkgVEhFIFNV QlNZU1RFTSBBTkQgSVRTIENSSVRJQ0FMSVRZClJlY29yZDogZjJmcyAoYGZzL2YyZnMvYCkuIElN UE9SVEFOVDogbm90IGNvcmUgVkZTLCBidXQgdGhlIGRlZmF1bHQKQW5kcm9pZCB1c2VyZGF0YSBm aWxlc3lzdGVtOyA2LjEyIExUUyBpcyB1c2VkIHRoZXJlLgoKU3RlcCA3LjI6IEFTU0VTUyBTVUJT WVNURU0gQUNUSVZJVFkKUmVjb3JkOiBBY3RpdmUgKHJlY2VudCBnYy5jIGhpc3RvcnkgaXMgYnVz eSksIGJ1dCB0aGlzIGJ1ZyBpcyBpbiBsb25nLQpzdGFibGUgcmVzaXplIHJlY292ZXJ5LCBub3Qg bmV3IDYuMTItb25seSBjb2RlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBIQVNFIDg6IElNUEFDVCBBTkQgUklTSyBBU1NF U1NNRU5UCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQoKU3RlcCA4LjE6IERFVEVSTUlORSBXSE8gSVMgQUZGRUNURUQKUmVjb3Jk OiBmMmZzIHVzZXJzIG9mIGBGMkZTX0lPQ19SRVNJWkVfRlNgIChBbmRyb2lkIHZpcnR1YWwgQS9C IC8KZHluYW1pYyBwYXJ0aXRpb25zLCBzb21lIGVtYmVkZGVkKS4gTm90IHVuaXZlcnNhbC4gQ29u ZmlnOgpgQ09ORklHX0YyRlNfRlNgLgoKU3RlcCA4LjI6IERFVEVSTUlORSBUSEUgVFJJR0dFUiBD T05ESVRJT05TClJlY29yZDogU2hyaW5rIGlvY3RsIHdoaWxlIHRhaWwgc2VjdGlvbnMgc3RpbGwg aGF2ZSB2YWxpZCBibG9ja3MKKGAtRUFHQUlOYCksIG9yIG90aGVyIGBmcmVlX3NlZ21lbnRfcmFu Z2UoKWAgZXJyb3JzIChgLUVJT2AsCmAtRVJFU1RBUlRTWVNgLCBhbGxvY2F0ZS1zZWdtZW50IGZh aWx1cmVzKS4gQ29tbW9uIG9uIGEgYnVzeS9mdWxsCmZpbGVzeXN0ZW0uIFByaXZpbGVnZWQgb25s eSAoYENBUF9TWVNfQURNSU5gKS4gTm90IGEgcmFjZTsgZGV0ZXJtaW5pc3RpYwpvbiB0aGF0IGVy cm9yIHBhdGguCgpTdGVwIDguMzogREVURVJNSU5FIFRIRSBGQUlMVVJFIE1PREUgU0VWRVJJVFkK UmVjb3JkOgotIEZhbHNlIGBTQklfTkVFRF9GU0NLYCDihpIgbmV4dCBjaGVja3BvaW50IHdyaXRl cyBgQ1BfRlNDS19GTEFHYCDihpIKICByZW1vdW50IHJlc3RvcmVzIHRoZSBmbGFnIOKGkiB1c2Vy c3BhY2UgYGZzY2suZjJmc2AuCi0gRnVydGhlciByZXNpemUgaW1tZWRpYXRlbHkgYC1FRlNDT1JS VVBURURgLgotIGBmc3RyaW1gIHdhcm5zIGFuZCByZXR1cm5zIGAtRUZTQ09SUlVQVEVEYDsgZGlz Y2FyZCB0aHJlYWQgYmFja3Mgb2ZmLgotIFNldmVyaXR5OiBISUdIIG9wZXJhdGlvbmFsIChmb3Jj ZWQgbG9uZyBmc2NrLCByZXNpemUgc3R1Y2spLiBOb3QgYQogIHBhbmljLCBzaWxlbnQgY29ycnVw dGlvbiwgb3IgVUFGLgoKU3RlcCA4LjQ6IENBTENVTEFURSBSSVNLLUJFTkVGSVQgUkFUSU8KUmVj b3JkOgotIEJlbmVmaXQ6IGhpZ2ggZm9yIEFuZHJvaWQvZW1iZWRkZWQgZjJmcy1yZXNpemUgdXNl cnMgb24gNi4xMjsgc3RvcHMgYQogIGNvbW1vbiBgLUVBR0FJTmAgZnJvbSBwaW5uaW5nIE5FRURf RlNDSyB1bnRpbCBmc2NrLgotIFJpc2s6IHZlcnkgbG93IChmZXcgbGluZXMsIGVycm9yIHBhdGgg b25seSwgbWFpbnRhaW5lci1hY2tlZCkuCi0gUmF0aW86IGZhdm9yYWJsZS4KCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQSEFT RSA5OiBGSU5BTCBTWU5USEVTSVMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpTdGVwIDkuMTogQ09NUElMRSBUSEUgRVZJREVO Q0UKRk9SOgotIFJlYWwsIGxvbmctc3RhbmRpbmcgYnVnICgyMDE5KSBzdGlsbCBpbiA2LjEyLjEx MS4KLSBDb21tb24gYC1FQUdBSU5gIGZyb20gR0MgZHVyaW5nIHNocmluayBpcyB0cmVhdGVkIGFz IGNvcnJ1cHRpb24uCi0gU3RpY2t5IE5FRURfRlNDSyBibG9ja3MgcmVzaXplIGFuZCBjYW4gZm9y Y2UgYSBsYXJnZS1wYXJ0aXRpb24gZnNjay4KLSBTbWFsbCwgb2J2aW91c2x5IGNvcnJlY3QsIHJl dmlld2VkIGJ5IENoYW8gWXUsIGFwcGxpZWQgYnkgSmFlZ2V1ay4KLSBHb29nbGUvU2Ftc3VuZyBh dXRob3JzOyBBbmRyb2lkIHRlYW0gb24gQ2MuCi0gTm8gbWlzc2luZyBoZWxwZXJzIGluIHRoaXMg dHJlZS4KCkFHQUlOU1Q6Ci0gTm90IGEgY3Jhc2gsIFVBRiwgb3Igb24tZGlzayBjb3JydXB0aW9u IChpdCBvdmVyLXJlcG9ydHMgY29ycnVwdGlvbikuCi0gUHJpdmlsZWdlZCBpb2N0bCwgbm90IHVu cHJpdmlsZWdlZC4KLSBFeGFjdCBtYWlubGluZSBodW5rIG5lZWRzIHRyaXZpYWwgY29udGV4dCAo bG9jayB3cmFwcGVycyAvCiAgdGhhd19zdXBlcikuCi0gTm8gRml4ZXM6L0NjOiBzdGFibGUgKG5v dCBhIG5lZ2F0aXZlIHBlciB0aGUgcnVsZXMpLgoKVU5SRVNPTFZFRDoKLSBFeGFjdCBtYWlubGlu ZSBTSEEgbm90IGluIHRoaXMgY2hlY2tvdXQgKHByZXNlbnQgaW4gNy4zLXJjMSBmMmZzCiAgcHVs bCkuCi0gTm8gc3RhYmxlLWxpc3QgdGhyZWFkIGZvdW5kLgotIERhZWhvIG1lbnRpb25lZCByZXN0 b3JpbmcgYGZyZWVfc2VjdGlvbnNgOyA2LjEyIGBmcmVlX3NlZ21lbnRfcmFuZ2UoKWAKICBvbmx5 IHJlc3RvcmVzIGBNQUlOX1NFQ1NgLiBUaGF0IGRvZXMgbm90IHdlYWtlbiB0aGUgTkVFRF9GU0NL IHNwbGl0LgoKU3RlcCA5LjI6IEFQUExZIFRIRSBTVEFCTEUgUlVMRVMgQ0hFQ0tMSVNUCjEuIE9i dmlvdXNseSBjb3JyZWN0IGFuZCB0ZXN0ZWQ/IFBBU1Mg4oCUIHJldmlldy1kcml2ZW4gdjI7IGxv Z2ljIG1hdGNoZXMKICAgYGZyZWVfc2VnbWVudF9yYW5nZSgpYCByb2xsYmFjay4KMi4gRml4ZXMg YSByZWFsIGJ1ZyB0aGF0IGFmZmVjdHMgdXNlcnM/IFBBU1Mg4oCUIGZhbHNlIE5FRURfRlNDSyAv IGZvcmNlZAogICBmc2NrIC8gcmVzaXplIHN0dWNrLgozLiBJbXBvcnRhbnQgaXNzdWU/IFBBU1Mg 4oCUIG5vdCBhIHBhbmljLCBidXQgcGVyc2lzdGVudCBmYWxzZSBjb3JydXB0aW9uCiAgIGZsYWcg cGx1cyBgLUVGU0NPUlJVUFRFRGAgb24gbGF0ZXIgcmVzaXplL2ZzdHJpbSBpcyBhIHNlcmlvdXMK ICAgYXZhaWxhYmlsaXR5IGJ1ZyBvbiBBbmRyb2lkIGYyZnMuCjQuIFNtYWxsIGFuZCBjb250YWlu ZWQ/IFBBU1Mg4oCUIG9uZSBmdW5jdGlvbiwgfjkgbGluZXMuCjUuIE5vIG5ldyBmZWF0dXJlcyBv ciBBUElzPyBQQVNTCjYuIENhbiBhcHBseSB0byB0aGUgbG9jYWwgdHJlZT8gUEFTUyDigJQgYnVn Z3kgY29kZSBwcmVzZW50OyBuZWVkcyBvbmx5CiAgIGNvbnRleHQgYWRqdXN0bWVudC4KClN0ZXAg OS4zOiBDSEVDSyBGT1IgRVhDRVBUSU9OIENBVEVHT1JJRVMKUmVjb3JkOiBOb25lIG9mIGRldmlj ZS1JRCAvIHF1aXJrIC8gRFQgLyBidWlsZCAvIGRvY3MuIE9yZGluYXJ5IGJ1Z2ZpeC4KClN0ZXAg OS40OiBNQUtFIFlPVVIgREVDSVNJT04KVGhpcyBiZWxvbmdzIG9uIDYuMTIuIFRoZSBidWcgZXhp c3RzIGhlcmUsIHRoZSBmaXggaXMgc3VyZ2ljYWwsIGFuZApsZWF2aW5nIGl0IG91dCBrZWVwcyBh IHByb2R1Y3Rpb24gQW5kcm9pZCBwYXRoIHdoZXJlIGEgcmV0cnlhYmxlIHNocmluawpmYWlsdXJl IG1hcmtzIHRoZSBmaWxlc3lzdGVtIGNvcnJ1cHRlZCB1bnRpbCBmc2NrLgoKV2hhdCBpdCBzb2x2 ZXMgZm9yIHN0YWJsZSB1c2VyczogYSBmYWlsZWQgYEYyRlNfSU9DX1JFU0laRV9GU2AgdGhhdApu ZXZlciBjb21taXR0ZWQgc3VwZXJibG9jay9GUyBtZXRhZGF0YSBjdXJyZW50bHkgc2V0cyBgU0JJ X05FRURfRlNDS2AuClRoYXQgZmxhZyBpcyBjaGVja3BvaW50ZWQgYXMgYENQX0ZTQ0tfRkxBR2As IGJsb2NrcyBsYXRlciByZXNpemUgd2l0aApgLUVGU0NPUlJVUFRFRGAsIGFuZCBmb3JjZXMgYSBs b25nIGBmc2NrLmYyZnNgLiBUaGUgdXN1YWwgdHJpZ2dlciBpcwpgLUVBR0FJTmAgZnJvbSBHQyB3 aGVuIHRoZSB0YWlsIGlzIG5vdCBlbXB0eSB5ZXQuCgpSaXNrIHZzIGJlbmVmaXQ6IGEgZmV3IGVy cm9yLXBhdGggbGluZXMsIGZhbGwtdGhyb3VnaCByZXN0b3JlIHByZXNlcnZlZCwKTkVFRF9GU0NL IHN0aWxsIHNldCBhZnRlciByZWFsIHN1cGVyL2NoZWNrcG9pbnQgZmFpbHVyZXMuIEJlbmVmaXQg aXMKbGFyZ2UgZm9yIGYyZnMgcmVzaXplIHVzZXJzIG9uIHRoaXMgTFRTLgoKQ29uY2VybnM6IGFw cGx5IHdpdGggNi4xMiBsb2NrL3RoYXcgY29udGV4dCwgbm90IHRoZSBtYWlubGluZQpgZjJmc19k b3duX3dyaXRlX3RyYWNlYCAvIDMtYXJnIGB0aGF3X3N1cGVyYCBsaW5lcy4KClZlcmlmaWNhdGlv bjoKLSBbUGhhc2UgMV0gVGFnczogQ2hhbyBSZXZpZXdlZC1ieSwgSmFlZ2V1ayBTT0IsIEdvb2ds ZStTYW1zdW5nOyBubwogIEZpeGVzL3N5emJvdAotIFtQaGFzZSAyXSBEaWZmOiBgZ290byByZWNv dmVyX3VzZXJfYmxvY2tzYCBvbiBgZnJlZV9zZWdtZW50X3JhbmdlKClgCiAgZXJyb3I7IE5FRURf RlNDSyBvbmx5IG9uIGByZWNvdmVyX291dGAKLSBbUGhhc2UgMl0gTG9jYWwgYGZyZWVfc2VnbWVu dF9yYW5nZSgpYDogYE1BSU5fU0VDUyArPSBzZWNzYCBvbiBhbGwKICBleGl0cyBiZWZvcmUgYHVw ZGF0ZV9zYl9tZXRhZGF0YSgpYAotIFtQaGFzZSAyXSBMb2NhbCBgZjJmc19nY19yYW5nZSgpYDog YC1FQUdBSU5gIGlmIHZhbGlkIGJsb2NrcyByZW1haW4KLSBbUGhhc2UgM10gYmxhbWU6IE5FRURf RlNDSyBmcm9tIDA0ZjBiMmVhYTNiM2VlICgyMDE5KTsgYW5jZXN0b3Igb2YKICBIRUFECi0gW1Bo YXNlIDNdIGBnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIDA0ZjBiMmVhYTNiM2VlIEhFQURg IHN1Y2NlZWRlZAotIFtQaGFzZSAzXSBObyBgcmVjb3Zlcl91c2VyX2Jsb2Nrc2AgaW4gdGhpcyB0 cmVlCi0gW1BoYXNlIDRdIGBiNCBtYm94YCBtc2dpZCAyMDI2MDgxODE3MDUzNS4zMTkwODY5LTEt ZGFlaG80M0BnbWFpbC5jb206CiAgdjEsIENoYW8gcmV2aWV3LCBsYWJlbCBzcGxpdAotIFtQaGFz ZSA0XSB2MiArIENoYW8gUmV2aWV3ZWQtYnkgdmlhIGxrbWwvb3BlbndhbGw7IG5vIE5BSwotIFtQ aGFzZSA0XSBQdWxsIGYyZnMtZm9yLTcuMy1yYzEgbGlzdHMgdGhpcyBzdWJqZWN0Ci0gW1BoYXNl IDRdIGxvcmUua2VybmVsLm9yZyBXZWJGZXRjaCA0MDM7IHVzZWQgYjQgbWJveCArIGxrbWwgbWly cm9ycwogIGluc3RlYWQKLSBbUGhhc2UgNV0gQ2FsbGVyOiBgZjJmc19pb2NfcmVzaXplX2ZzYCwg YENBUF9TWVNfQURNSU5gOyBORUVEX0ZTQ0sKICBibG9ja3MgcmVzaXplIChgZ2MuYzoyMjkzYCkg YW5kIGZzdHJpbSAoYHNlZ21lbnQuYzozNDAwYCk7IGNoZWNrcG9pbnQKICB3cml0ZXMgYENQX0ZT Q0tfRkxBR2AgKGBjaGVja3BvaW50LmM6MTM4Ni0xMzg3YCk7IHJlbW91bnQgcmVzdG9yZXMgaXQK ICAoYHN1cGVyLmM6NDY0Mi00NjQzYCkKLSBbUGhhc2UgNl0gYGdpdCBkZXNjcmliZSBIRUFEYCBw LTYuMTItMy1nYzUwNGNmMGJhYTNkODsgYG1ha2UKICBrZXJuZWx2ZXJzaW9uYCA2LjEyLjExMQot IFtQaGFzZSA2XSBgZjJmc19kb3duX3dyaXRlX3RyYWNlYCBhYnNlbnQ7IGB0aGF3X3N1cGVyYCBp cyAyLWFyZwotIFtQaGFzZSA4XSBGYWlsdXJlOiBmYWxzZSBORUVEX0ZTQ0ssIG5vdCBvb3BzOyBI SUdIIG9wZXJhdGlvbmFsIGltcGFjdAotIFVOVkVSSUZJRUQ6IGV4YWN0IG1haW5saW5lIFNIQSAo bm90IGluIHRoaXMgY2hlY2tvdXQpOyBubyBzdGFibGUtbGlzdAogIGhpdAoKKipZRVMqKgoKIGZz L2YyZnMvZ2MuYyB8IDkgKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZ2MuYyBiL2ZzL2YyZnMvZ2Mu YwppbmRleCAwMmJkMDA4ZDc5YjVjLi5lODVkN2YyMzllN2QwIDEwMDY0NAotLS0gYS9mcy9mMmZz L2djLmMKKysrIGIvZnMvZjJmcy9nYy5jCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBpbnQgZjJmc19y ZXNpemVfZnMoc3RydWN0IGZpbGUgKmZpbHAsIF9fdTY0IGJsb2NrX2NvdW50KQogCXNldF9zYmlf ZmxhZyhzYmksIFNCSV9JU19SRVNJWkVGUyk7CiAJZXJyID0gZnJlZV9zZWdtZW50X3JhbmdlKHNi aSwgc2VjcywgZmFsc2UpOwogCWlmIChlcnIpCi0JCWdvdG8gcmVjb3Zlcl9vdXQ7CisJCWdvdG8g cmVjb3Zlcl91c2VyX2Jsb2NrczsKIAogCXVwZGF0ZV9zYl9tZXRhZGF0YShzYmksIC1zZWNzKTsK IApAQCAtMjQzNywxMSArMjQzNywxNCBAQCBpbnQgZjJmc19yZXNpemVfZnMoc3RydWN0IGZpbGUg KmZpbHAsIF9fdTY0IGJsb2NrX2NvdW50KQogCQlmMmZzX2NvbW1pdF9zdXBlcihzYmksIGZhbHNl KTsKIAl9CiByZWNvdmVyX291dDoKLQljbGVhcl9zYmlfZmxhZyhzYmksIFNCSV9JU19SRVNJWkVG Uyk7CiAJaWYgKGVycikgeworCQlmMmZzX2J1Z19vbihzYmksIGVyciA9PSAtRUFHQUlOKTsKIAkJ c2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7CiAJCWYyZnNfZXJyKHNiaSwgInJlc2l6 ZV9mcyBmYWlsZWQsIHNob3VsZCBydW4gZnNjayB0byByZXBhaXIhIik7Ci0KKwl9CityZWNvdmVy X3VzZXJfYmxvY2tzOgorCWNsZWFyX3NiaV9mbGFnKHNiaSwgU0JJX0lTX1JFU0laRUZTKTsKKwlp ZiAoZXJyKSB7CiAJCXNwaW5fbG9jaygmc2JpLT5zdGF0X2xvY2spOwogCQlzYmktPnVzZXJfYmxv Y2tfY291bnQgKz0gc2hydW5rX2Jsb2NrczsKIAkJc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2Nr KTsKLS0gCjIuNTMuMAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRldmVsQGxp c3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9s aXN0aW5mby9saW51eC1mMmZzLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 B2A386238A0; Mon, 19 Oct 2026 14:04:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792418693; cv=none; b=s5dDmhQhy3bUfs50TQyFQtBlBhjDqPwHGuaXRu28zbePy8RcQgDW+HwudXwRUCsvwrkaOW0jRX5MwKaveL/v/MIESvSnQWJUwmz9pQI4654eV6KmAEZVNkGYsk9Xx55IeWTngRuiB3NQCJjgLcp0k4DIwuUAlMfEFnWEMM4Clus= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792418693; c=relaxed/simple; bh=ft629vtileep1FfktRDH0L4etrkbJbrC8XDK3cHHkWo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=EfvDvdrPCDUtr9h2hKc3IqRLrVRTsSk9eAsdPVKDWi3PwGavVLvypLIxdZHq+pFwlM2wgwjt80AfUrIWy4ltGceCCZFZwXIuhO3wi2WPMVng835jcyXx+I9i8YIRMpyLFlwE7Cn+LB5VtPMwyklbQxK2GiLlwNgwbiKhsevKm/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=jOfWy+Bu; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jOfWy+Bu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 681EE1F000C9; Mon, 19 Oct 2026 14:04:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792418690; bh=4amEEY/Xct1faar7l9czoxlKhgGqkKJbq754RzhoEmM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jOfWy+BuXrTl8vItMCjvJtfMgVCfoAfYqcU0HA9oQ5a4DVxgwzVc5tp42HmkE80Qf p8adFBF6IGGWG1ZBEx4YBVGl3oq9DhvGKJxqqqX3DPCOmMhTrMcxTUOwmWdQpedWws 2b2IWbPzdWrq4yMP1VBGt5GQCBKetUeT8YaAo9kyJKdxwarmWEqjTLXkF17ieo7XNK Mru+hBkOTMDqHc5V1X1cG6dxuZ6ZnA3/Jdm2Qg8Z8zNKcgiECbI0DSkxjo3H6kWU2v 1TCnkqH81BHmW1xQaVR+pQ2/TRJDtrh3ZbJHqgaisyXLT9m87y0TFPMm+j1z74Uf0K CROb5LuYAIl4A== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Daeho Jeong , Sunmin Jeong , Chao Yu , Jaegeuk Kim , Sasha Levin , linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-5.10] f2fs: avoid setting SBI_NEED_FSCK on transient resize failure Date: Mon, 19 Oct 2026 09:51:58 -0400 Message-ID: <20261019135441.1420968-427-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261019135441.1420968-1-sashal@kernel.org> References: <20261019135441.1420968-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.57 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Daeho Jeong [ Upstream commit 258c95150c26a30db1896eacd3bdef26314f2ca1 ] When free_segment_range() fails in f2fs_resize_fs(), no on-disk superblock or filesystem metadata has been modified yet, and free_segment_range() safely restores all in-memory counters before returning. However, the current error recovery path unconditionally sets the SBI_NEED_FSCK flag and prints a scary error message on any error, forcing an unnecessary and time-consuming fsck.f2fs repair on the subsequent mount/reboot. Fix this by separating the error recovery path with a dedicated recover_user_blocks label to bypass setting SBI_NEED_FSCK on free_segment_range() failures. Signed-off-by: Daeho Jeong Signed-off-by: Sunmin Jeong Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- LLM Generated explanations, may be completely bogus: I have the local 6.12 code, the introducer, and the mailing-list review. Compiling the full nine-phase analysis next. =============================================================== PHASE 1: COMMIT MESSAGE FORENSICS =============================================================== Step 1.1: PARSE THE SUBJECT LINE Record: [f2fs] [avoid setting] Avoid setting `SBI_NEED_FSCK` when `f2fs_resize_fs()` fails in `free_segment_range()` before any on-disk metadata is modified. Step 1.2: PARSE ALL COMMIT MESSAGE TAGS Record: - Signed-off-by: Daeho Jeong (author, Google/Android f2fs) - Signed-off-by: Sunmin Jeong - Reviewed-by: Chao Yu (primary f2fs reviewer) - Signed-off-by: Jaegeuk Kim (f2fs maintainer) - No Fixes: tag (expected) - No Cc: stable (expected) - No Reported-by / Tested-by / Link / syzbot - Ignore pipeline-added Sasha Levin SOB / Upstream commit markers if present Step 1.3: ANALYZE THE COMMIT BODY TEXT Record: - Bug: `f2fs_resize_fs()` error recovery sets `SBI_NEED_FSCK` on any error after `free_segment_range()`, including failures that happen before `update_sb_metadata()` / `f2fs_commit_super()`. - Symptom: scary `f2fs_err` plus a persistent “need fsck” mark, so the next mount/reboot runs a long `fsck.f2fs` even though the filesystem is still consistent. - Root cause: one shared `recover_out` label for both “GC/segment-free failed, nothing committed” and “superblock/checkpoint already changed.” - Version info: none in the message. Code has been this way since online resize was added. Step 1.4: DETECT HIDDEN BUG FIXES Record: Not hidden. It is an explicit error-path correctness fix: stop treating a transient resize failure as filesystem corruption. =============================================================== PHASE 2: DIFF ANALYSIS - LINE BY LINE =============================================================== Step 2.1: INVENTORY THE CHANGES Record: - File: `fs/f2fs/gc.c` only (~6 insertions / 3 deletions in `f2fs_resize_fs()`) - Functions: `f2fs_resize_fs()` - Scope: single-file surgical error-path change Step 2.2: UNDERSTAND THE CODE FLOW CHANGE Record (verified against local `fs/f2fs/gc.c`): - Before: `free_segment_range()` error → `goto recover_out` → always `set_sbi_flag(SBI_NEED_FSCK)` + restore `user_block_count`. - After: `free_segment_range()` error → `goto recover_user_blocks` → restore `user_block_count` / clear `SBI_IS_RESIZEFS` only. - `recover_out` still used after `f2fs_commit_super()` / `f2fs_write_checkpoint()` failures (on-disk metadata already touched). It now also `f2fs_bug_on(sbi, err == -EAGAIN)` then sets `SBI_NEED_FSCK`, then falls through to restore `user_block_count`. - Success path still falls through both labels with `err == 0`; no extra NEED_FSCK, no counter restore. Step 2.3: IDENTIFY THE BUG MECHANISM Record: - Category: logic / error-path correctness (false-positive corruption flag) - Mechanism: `free_segment_range()` restores `MAIN_SECS` on every return (`MAIN_SECS(sbi) += secs` at its `out:` label). Callers have not yet called `update_sb_metadata()`. Marking NEED_FSCK is wrong for that path. - Common trigger in this tree: `f2fs_gc_range()` returns `-EAGAIN` when valid blocks remain after one GC pass (`gc.c` “if (!dry_run && get_valid_blocks(...)) return -EAGAIN”). Step 2.4: ASSESS THE FIX QUALITY Record: - Obviously correct: splits “no metadata written” vs “metadata already updated.” - Minimal; no API/data-structure change. - Regression risk low. `f2fs_bug_on(err == -EAGAIN)` on `recover_out` is an invariant: with `CONFIG_F2FS_CHECK_FS=n` it WARNs and sets NEED_FSCK (already being set); with CHECK_FS it BUG_ONs only if checkpoint/super commit returned `-EAGAIN`, which that path should not. =============================================================== PHASE 3: GIT HISTORY INVESTIGATION =============================================================== Step 3.1: BLAME THE CHANGED LINES Record: - Unconditional NEED_FSCK on resize failure introduced in `04f0b2eaa3b3ee` (“f2fs: ioctl for removing a range from F2FS”, Qiuyang Sun, 2019). - `recover_out` label from `b4b10061ef98c5` (Jaegeuk Kim, 2020). - Present in this 6.12 tree (`git merge-base --is-ancestor 04f0b2eaa3b3ee HEAD` succeeded). Step 3.2: FOLLOW THE FIXES: TAG Record: No Fixes: tag. Introducer is the 2019 online-resize ioctl, confirmed in-tree. Step 3.3: CHECK FILE HISTORY FOR RELATED CHANGES Record: - Related in-tree: `3b85edf3391f3` (migrate all curseg types in `free_segment_range`), `28fc4e9077ce5` (SBI_IS_RESIZEFS locking), `3ab0598e6d860` (resize panic). None already skip NEED_FSCK on `free_segment_range()` failure. - Later mainline (f2fs-for-7.3-rc1, after this patch): “accurately adjust free_sections during free_segment_range” — separate accounting fix, not a prerequisite. - Standalone. Step 3.4: CHECK THE AUTHOR'S OTHER COMMITS Record: Daeho Jeong is a regular Google/Android f2fs contributor in this tree (gc/zoned/sysfs work). Co-author Samsung. Maintainer Jaegeuk applied it. Step 3.5: CHECK FOR DEPENDENT/PREREQUISITE COMMITS Record: No new helpers. Uses existing `set_sbi_flag` / `f2fs_bug_on` / `recover_out`. Surrounding mainline context uses `f2fs_down_write_trace` and 3-arg `thaw_super`, which this tree does not have; those are context only, not dependencies of the logic change. Can apply standalone with a trivial context tweak. =============================================================== PHASE 4: MAILING LIST AND EXTERNAL RESEARCH =============================================================== Step 4.1: FIND THE ORIGINAL PATCH DISCUSSION Record: - `b4 dig -c ` not used: candidate SHA is not in this checkout (`b4 dig` on the f2fs-for-7.3-rc1 merge 115bd364 rejected as a merge commit). - `b4 mbox` msgid `20260818170535.3190869-1-daeho43@gmail.com`: 5-message v1 thread saved. - v1 (18 Aug 2026): skip NEED_FSCK only when `err != -EAGAIN`. - Chao Yu: don’t key off `-EAGAIN` globally; it might come from other sites later. - Daeho: any `free_segment_range()` error is pre-metadata; use a separate label. - Chao: add `f2fs_bug_on(sbi, err == -EAGAIN)` on `recover_out`. - v2 (20 Aug 2026): matches this candidate. Chao Reviewed-by. No NAKs. No Cc: stable in the thread. - Landed in f2fs-for-7.3-rc1 (merged to mainline as 115bd364, “f2fs: avoid setting SBI_NEED_FSCK on transient resize failure”). Step 4.2: CHECK WHO REVIEWED THE PATCH Record: linux-f2fs-devel, linux-kernel, kernel-team@android.com. Reviewed by Chao Yu; applied by Jaegeuk Kim. Step 4.3: SEARCH FOR THE BUG REPORT Record: No syzbot/bugzilla. Authors are Android/Samsung; the message describes forced fsck after a failed resize. No separate user bug URL found. Step 4.4: CHECK FOR RELATED PATCHES AND SERIES Record: Standalone (v1 then v2 of the same idea). Same 7.3 pull has other `free_segment_range` fixes; this one does not depend on them. “migrate all curseg types” is already here. Step 4.5: CHECK STABLE MAILING LIST HISTORY Record: Web search of lore.kernel.org/stable for this subject found no prior stable discussion or rejection. UNVERIFIED that no one privately requested it. =============================================================== PHASE 5: CODE SEMANTIC ANALYSIS =============================================================== Step 5.1: IDENTIFY KEY FUNCTIONS IN THE DIFF Record: `f2fs_resize_fs()`; closely related callees `free_segment_range()`, `update_sb_metadata()`, `f2fs_commit_super()`, `f2fs_write_checkpoint()`. Step 5.2: TRACE CALLERS Record: - `f2fs_ioc_resize_fs()` in `fs/f2fs/file.c` (F2FS_IOC_RESIZE_FS and compat). Requires `CAP_SYS_ADMIN`. - Not interrupt/hot-path. Userspace-triggered admin ioctl (Android update_engine/vold online shrink is the main production use). Step 5.3: TRACE CALLEES Record: `free_segment_range()` temporarily drops `MAIN_SECS`, may move cursegs and GC, then always `MAIN_SECS += secs` before return. Only after success does `f2fs_resize_fs()` call `update_sb_metadata()` / `f2fs_commit_super()`. Step 5.4: FOLLOW THE CALL CHAIN Record: ioctl → `f2fs_resize_fs` → freeze → `user_block_count -= shrunk_blocks` → `free_segment_range`. `-EAGAIN` when tail sections still have valid blocks is reachable and expected. After NEED_FSCK is set, a later resize hits `is_sbi_flag_set(sbi, SBI_NEED_FSCK)` and returns `-EFSCORRUPTED`. Checkpoint persists `CP_FSCK_FLAG`; remount restores NEED_FSCK. Step 5.5: SEARCH FOR SIMILAR PATTERNS Record: NEED_FSCK is used widely for real corruption. This was the only resize path that set it on a fully rolled-back in-memory failure. In- tree “f2fs: remove false alarm on iget failure during GC” is the same class of false NEED_FSCK. =============================================================== PHASE 6: CROSS-REFERENCING AGAINST THE LOCAL TREE =============================================================== Step 6.1: DOES THE BUGGY CODE EXIST IN THIS TREE? Record: Yes. Local tree is `pending-6.12`, `git describe HEAD` = `p-6.12-3-gc504cf0baa3d8`, `make kernelversion` = 6.12.111. ``` 2364: set_sbi_flag(sbi, SBI_IS_RESIZEFS); 2365: err = free_segment_range(sbi, secs, false); 2366: if (err) 2367: goto recover_out; ... 2388:recover_out: 2390: if (err) { 2391: set_sbi_flag(sbi, SBI_NEED_FSCK); ``` Bug present since 2019 resize ioctl. `recover_user_blocks` is absent. Step 6.2: CHECK FOR BACKPORT COMPLICATIONS Record: Functional hunk matches. Mainline context uses `f2fs_down_write_trace` (not in 6.12) and `thaw_super(..., FREEZE_HOLDER_KERNEL, NULL)` vs local two-arg `FREEZE_HOLDER_USERSPACE`. Expected difficulty: minor context adjustment, not a rework. Step 6.3: CHECK IF RELATED FIXES ARE ALREADY HERE Record: No. `git log --grep` on gc.c for this subject is empty. Resize- related commits here do not skip NEED_FSCK on `free_segment_range()` failure. =============================================================== PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT =============================================================== Step 7.1: IDENTIFY THE SUBSYSTEM AND ITS CRITICALITY Record: f2fs (`fs/f2fs/`). IMPORTANT: not core VFS, but the default Android userdata filesystem; 6.12 LTS is used there. Step 7.2: ASSESS SUBSYSTEM ACTIVITY Record: Active (recent gc.c history is busy), but this bug is in long- stable resize recovery, not new 6.12-only code. =============================================================== PHASE 8: IMPACT AND RISK ASSESSMENT =============================================================== Step 8.1: DETERMINE WHO IS AFFECTED Record: f2fs users of `F2FS_IOC_RESIZE_FS` (Android virtual A/B / dynamic partitions, some embedded). Not universal. Config: `CONFIG_F2FS_FS`. Step 8.2: DETERMINE THE TRIGGER CONDITIONS Record: Shrink ioctl while tail sections still have valid blocks (`-EAGAIN`), or other `free_segment_range()` errors (`-EIO`, `-ERESTARTSYS`, allocate-segment failures). Common on a busy/full filesystem. Privileged only (`CAP_SYS_ADMIN`). Not a race; deterministic on that error path. Step 8.3: DETERMINE THE FAILURE MODE SEVERITY Record: - False `SBI_NEED_FSCK` → next checkpoint writes `CP_FSCK_FLAG` → remount restores the flag → userspace `fsck.f2fs`. - Further resize immediately `-EFSCORRUPTED`. - `fstrim` warns and returns `-EFSCORRUPTED`; discard thread backs off. - Severity: HIGH operational (forced long fsck, resize stuck). Not a panic, silent corruption, or UAF. Step 8.4: CALCULATE RISK-BENEFIT RATIO Record: - Benefit: high for Android/embedded f2fs-resize users on 6.12; stops a common `-EAGAIN` from pinning NEED_FSCK until fsck. - Risk: very low (few lines, error path only, maintainer-acked). - Ratio: favorable. =============================================================== PHASE 9: FINAL SYNTHESIS =============================================================== Step 9.1: COMPILE THE EVIDENCE FOR: - Real, long-standing bug (2019) still in 6.12.111. - Common `-EAGAIN` from GC during shrink is treated as corruption. - Sticky NEED_FSCK blocks resize and can force a large-partition fsck. - Small, obviously correct, reviewed by Chao Yu, applied by Jaegeuk. - Google/Samsung authors; Android team on Cc. - No missing helpers in this tree. AGAINST: - Not a crash, UAF, or on-disk corruption (it over-reports corruption). - Privileged ioctl, not unprivileged. - Exact mainline hunk needs trivial context (lock wrappers / thaw_super). - No Fixes:/Cc: stable (not a negative per the rules). UNRESOLVED: - Exact mainline SHA not in this checkout (present in 7.3-rc1 f2fs pull). - No stable-list thread found. - Daeho mentioned restoring `free_sections`; 6.12 `free_segment_range()` only restores `MAIN_SECS`. That does not weaken the NEED_FSCK split. Step 9.2: APPLY THE STABLE RULES CHECKLIST 1. Obviously correct and tested? PASS — review-driven v2; logic matches `free_segment_range()` rollback. 2. Fixes a real bug that affects users? PASS — false NEED_FSCK / forced fsck / resize stuck. 3. Important issue? PASS — not a panic, but persistent false corruption flag plus `-EFSCORRUPTED` on later resize/fstrim is a serious availability bug on Android f2fs. 4. Small and contained? PASS — one function, ~9 lines. 5. No new features or APIs? PASS 6. Can apply to the local tree? PASS — buggy code present; needs only context adjustment. Step 9.3: CHECK FOR EXCEPTION CATEGORIES Record: None of device-ID / quirk / DT / build / docs. Ordinary bugfix. Step 9.4: MAKE YOUR DECISION This belongs on 6.12. The bug exists here, the fix is surgical, and leaving it out keeps a production Android path where a retryable shrink failure marks the filesystem corrupted until fsck. What it solves for stable users: a failed `F2FS_IOC_RESIZE_FS` that never committed superblock/FS metadata currently sets `SBI_NEED_FSCK`. That flag is checkpointed as `CP_FSCK_FLAG`, blocks later resize with `-EFSCORRUPTED`, and forces a long `fsck.f2fs`. The usual trigger is `-EAGAIN` from GC when the tail is not empty yet. Risk vs benefit: a few error-path lines, fall-through restore preserved, NEED_FSCK still set after real super/checkpoint failures. Benefit is large for f2fs resize users on this LTS. Concerns: apply with 6.12 lock/thaw context, not the mainline `f2fs_down_write_trace` / 3-arg `thaw_super` lines. Verification: - [Phase 1] Tags: Chao Reviewed-by, Jaegeuk SOB, Google+Samsung; no Fixes/syzbot - [Phase 2] Diff: `goto recover_user_blocks` on `free_segment_range()` error; NEED_FSCK only on `recover_out` - [Phase 2] Local `free_segment_range()`: `MAIN_SECS += secs` on all exits before `update_sb_metadata()` - [Phase 2] Local `f2fs_gc_range()`: `-EAGAIN` if valid blocks remain - [Phase 3] blame: NEED_FSCK from 04f0b2eaa3b3ee (2019); ancestor of HEAD - [Phase 3] `git merge-base --is-ancestor 04f0b2eaa3b3ee HEAD` succeeded - [Phase 3] No `recover_user_blocks` in this tree - [Phase 4] `b4 mbox` msgid 20260818170535.3190869-1-daeho43@gmail.com: v1, Chao review, label split - [Phase 4] v2 + Chao Reviewed-by via lkml/openwall; no NAK - [Phase 4] Pull f2fs-for-7.3-rc1 lists this subject - [Phase 4] lore.kernel.org WebFetch 403; used b4 mbox + lkml mirrors instead - [Phase 5] Caller: `f2fs_ioc_resize_fs`, `CAP_SYS_ADMIN`; NEED_FSCK blocks resize (`gc.c:2293`) and fstrim (`segment.c:3400`); checkpoint writes `CP_FSCK_FLAG` (`checkpoint.c:1386-1387`); remount restores it (`super.c:4642-4643`) - [Phase 6] `git describe HEAD` p-6.12-3-gc504cf0baa3d8; `make kernelversion` 6.12.111 - [Phase 6] `f2fs_down_write_trace` absent; `thaw_super` is 2-arg - [Phase 8] Failure: false NEED_FSCK, not oops; HIGH operational impact - UNVERIFIED: exact mainline SHA (not in this checkout); no stable-list hit **YES** fs/f2fs/gc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 02bd008d79b5c..e85d7f239e7d0 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -2415,7 +2415,7 @@ int f2fs_resize_fs(struct file *filp, __u64 block_count) set_sbi_flag(sbi, SBI_IS_RESIZEFS); err = free_segment_range(sbi, secs, false); if (err) - goto recover_out; + goto recover_user_blocks; update_sb_metadata(sbi, -secs); @@ -2437,11 +2437,14 @@ int f2fs_resize_fs(struct file *filp, __u64 block_count) f2fs_commit_super(sbi, false); } recover_out: - clear_sbi_flag(sbi, SBI_IS_RESIZEFS); if (err) { + f2fs_bug_on(sbi, err == -EAGAIN); set_sbi_flag(sbi, SBI_NEED_FSCK); f2fs_err(sbi, "resize_fs failed, should run fsck to repair!"); - + } +recover_user_blocks: + clear_sbi_flag(sbi, SBI_IS_RESIZEFS); + if (err) { spin_lock(&sbi->stat_lock); sbi->user_block_count += shrunk_blocks; spin_unlock(&sbi->stat_lock); -- 2.53.0