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.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 7449FC001DC for ; Wed, 19 Jul 2023 10:19:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.ozlabs.org; s=201707; t=1689761940; bh=mZxv6QK4kkz10cHqizPAseMOdFJmg0tOFzqXahIbaBs=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=hG0zgR2QOVeb+zTmAVSPhsqrLzGbZAT6VjflcZleEdw95+s4EDaTZ0hVEfWi/wyrO qock/3pzRdbB7G/dt58JYecy39h1c7RLkZZopc3+eLu6bwt6+lSartTrIub1CGxKN4 S4bMZytlBZTNvpyCy/LRgooyTjacIkeyFgymBXY+NmR3uTmNY3jibQMt5scVx10/uh xPp3zuGXMQwSMWPn7iAIu02WnuCdg9Ayz6fNcNycq64aNeDlt9kCTVULiL+Lq9GZrc XuJqahvzZjLwQmyaOGLX7Xhw8XsGR1ZUyad+JTgBVTEaMrF7tkFBoq/wUgkbQVVPkM qxZxCvDB7RImw== Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4R5Wxw64gRz30MD for ; Wed, 19 Jul 2023 20:19:00 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=xiaomi.com (client-ip=207.226.244.122; helo=outboundhk.mxmail.xiaomi.com; envelope-from=sunshijie@xiaomi.com; receiver=lists.ozlabs.org) X-Greylist: delayed 62 seconds by postgrey-1.37 at boromir; Wed, 19 Jul 2023 20:18:51 AEST Received: from outboundhk.mxmail.xiaomi.com (outboundhk.mxmail.xiaomi.com [207.226.244.122]) by lists.ozlabs.org (Postfix) with ESMTP id 4R5Wxl4vQ8z2xWc for ; Wed, 19 Jul 2023 20:18:51 +1000 (AEST) X-IronPort-AV: E=Sophos;i="6.01,216,1684771200"; d="scan'208,217";a="84746276" Received: from hk-mbx12.mioffice.cn (HELO xiaomi.com) ([10.56.21.122]) by outboundhk.mxmail.xiaomi.com with ESMTP; 19 Jul 2023 18:17:41 +0800 Received: from BJ-MBX16.mioffice.cn (10.237.8.136) by HK-MBX12.mioffice.cn (10.56.21.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.16; Wed, 19 Jul 2023 18:17:41 +0800 Received: from BJ-MBX18.mioffice.cn (10.237.8.138) by BJ-MBX16.mioffice.cn (10.237.8.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.16; Wed, 19 Jul 2023 18:17:40 +0800 Received: from BJ-MBX18.mioffice.cn ([fe80::99b2:c42d:33a0:2439]) by BJ-MBX18.mioffice.cn ([fe80::99b2:c42d:33a0:2439%16]) with mapi id 15.02.1258.016; Wed, 19 Jul 2023 18:17:40 +0800 To: Gao Xiang , "linux-erofs@lists.ozlabs.org" Subject: =?gb2312?B?tPC4tDogW0V4dGVybmFsIE1haWxdW1BBVENIXSBlcm9mczogZml4IHdyb25n?= =?gb2312?Q?_primary_bvec_selection_on_deduplicated_extents?= Thread-Topic: [External Mail][PATCH] erofs: fix wrong primary bvec selection on deduplicated extents Thread-Index: AQHZug380BXfCK+Su0ukiPiuBvsgQa/A360p Date: Wed, 19 Jul 2023 10:17:40 +0000 Message-ID: <4a9259a9675e48e083139c22f7a86c8c@xiaomi.com> References: <20230719065459.60083-1-hsiangkao@linux.alibaba.com> In-Reply-To: <20230719065459.60083-1-hsiangkao@linux.alibaba.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.8.11] Content-Type: multipart/alternative; boundary="_000_4a9259a9675e48e083139c22f7a86c8cxiaomicom_" MIME-Version: 1.0 X-BeenThere: linux-erofs@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development of Linux EROFS file system List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: =?utf-8?b?5a2Z5aOr5p2wIHZpYSBMaW51eC1lcm9mcw==?= Reply-To: =?gb2312?B?y+/Kv73c?= Cc: LKML Errors-To: linux-erofs-bounces+linux-erofs=archiver.kernel.org@lists.ozlabs.org Sender: "Linux-erofs" --_000_4a9259a9675e48e083139c22f7a86c8cxiaomicom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 V2hlbiBoYW5kbGluZyBkZWR1cGxpY2F0ZWQgY29tcHJlc3NlZCBkYXRhLCB0aGVyZSBjYW4gYmUg bXVsdGlwbGUNCmRlY29tcHJlc3NlZCBleHRlbnRzIHBvaW50aW5nIHRvIHRoZSBzYW1lIGNvbXBy ZXNzZWQgZGF0YSBpbiBvbmUgc2hvdC4NCg0KSW4gc3VjaCBjYXNlcywgdGhlIGJ2ZWNzIHdoaWNo IGJlbG9uZyB0byB0aGUgbG9uZ2VzdCBleHRlbnQgd2lsbCBiZQ0Kc2VsZWN0ZWQgYXMgdGhlIHBy aW1hcnkgYnZlY3MgZm9yIHJlYWwgZGVjb21wcmVzc29ycyB0byBkZWNvZGUgYW5kIHRoZQ0Kb3Ro ZXIgZHVwbGljYXRlZCBidmVjcyB3aWxsIGJlIGRpcmVjdGx5IGNvcGllZCBmcm9tIHRoZSBwcmlt YXJ5IGJ2ZWNzLg0KDQpQcmV2aW91c2x5LCBvbmx5IHJlbGF0aXZlIG9mZnNldHMgb2YgdGhlIGxv bmdlc3QgZXh0ZW50IHdhcyBjaGVja2VkIHRvDQpkZWNvbXByZXNzIHRoZSBwcmltYXJ5IGJ2ZWNz LiAgT24gcmFyZSBvY2Nhc2lvbnMsIGl0IGNhbiBiZSBpbmNvcnJlY3QNCmlmIHRoZXJlIGFyZSBz ZXZlcmFsIGV4dGVudHMgd2l0aCB0aGUgc2FtZSBzdGFydCByZWxhdGl2ZSBvZmZzZXQuDQpBcyBh IHJlc3VsdCwgc29tZSBzaG9ydCBidmVjcyBjb3VsZCBiZSBzZWxlY3RlZCBmb3IgZGVjb21wcmVz c2lvbiBhbmQNCnRoZW4gY2F1c2UgZGF0YSBjb3JydXB0aW9uLg0KDQpGb3IgZXhhbXBsZSwgYXMg U2hpamllIFN1biByZXBvcnRlZCBvZmYtbGlzdCwgY29uc2lkZXJpbmcgdGhlIGZvbGxvd2luZw0K ZXh0ZW50cyBvZiBhIGZpbGU6DQogMTE3OiAgIDkwMzM0NS4uICA5MTUyNTAgfCAgIDExOTA1IDog ICAgIDM4NTAyNC4uICAgIDM4OTEyMCB8ICAgIDQwOTYNCi4uLg0KIDExOTogICA5MTk3MjkuLiAg OTMwMzIzIHwgICAxMDU5NCA6ICAgICAzODUwMjQuLiAgICAzODkxMjAgfCAgICA0MDk2DQouLi4N CiAxMjQ6ICAgOTY4ODgxLi4gIDk4MDc4NiB8ICAgMTE5MDUgOiAgICAgMzg1MDI0Li4gICAgMzg5 MTIwIHwgICAgNDA5Ng0KDQpUaGUgc3RhcnQgcmVsYXRpdmUgb2Zmc2V0IGlzIHRoZSBzYW1lOiAy MjI1LCBidXQgZXh0ZW50IDExOSAoOTE5NzI5Li4NCjkzMDMyMykgaXMgc2hvcnRlciB0aGFuIHRo ZSBvdGhlcnMuDQoNCkxldCdzIHJlc3RyaWN0IHRoZSBidmVjIGxlbmd0aCBpbiBhZGRpdGlvbiB0 byB0aGUgc3RhcnQgb2Zmc2V0IGlmIGJ2ZWNzDQphcmUgbm90IGZ1bGwuDQoNClJlcG9ydGVkLWJ5 OiBTaGlqaWUgU3VuIDxzdW5zaGlqaWVAeGlhb21pLmNvbT4NCkZpeGVzOiA1YzJhNjQyNTJjNWQg KCJlcm9mczogaW50cm9kdWNlIHBhcnRpYWwtcmVmZXJlbmNlZCBwY2x1c3RlcnMiKQ0KU2lnbmVk LW9mZi1ieTogR2FvIFhpYW5nIDxoc2lhbmdrYW9AbGludXguYWxpYmFiYS5jb20+DQotLS0NCiBm cy9lcm9mcy96ZGF0YS5jIHwgNyArKysrLS0tDQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgMyBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9m cy9lcm9mcy96ZGF0YS5jDQppbmRleCBiNjlkODlhMTFkZDAuLmRlNGYxMjE1MmI2MiAxMDA2NDQN Ci0tLSBhL2ZzL2Vyb2ZzL3pkYXRhLmMNCisrKyBiL2ZzL2Vyb2ZzL3pkYXRhLmMNCkBAIC0xMTQ0 LDEwICsxMTQ0LDExIEBAIHN0YXRpYyB2b2lkIHpfZXJvZnNfZG9fZGVjb21wcmVzc2VkX2J2ZWMo c3RydWN0IHpfZXJvZnNfZGVjb21wcmVzc19iYWNrZW5kICpiZSwNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHpfZXJvZnNfYnZlYyAqYnZlYykNCiB7DQog ICAgICAgIHN0cnVjdCB6X2Vyb2ZzX2J2ZWNfaXRlbSAqaXRlbTsNCisgICAgICAgdW5zaWduZWQg aW50IHBnbnI7DQoNCi0gICAgICAgaWYgKCEoKGJ2ZWMtPm9mZnNldCArIGJlLT5wY2wtPnBhZ2Vv ZnNfb3V0KSAmIH5QQUdFX01BU0spKSB7DQotICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBn bnI7DQotDQorICAgICAgIGlmICghKChidmVjLT5vZmZzZXQgKyBiZS0+cGNsLT5wYWdlb2ZzX291 dCkgJiB+UEFHRV9NQVNLKSAmJg0KKyAgICAgICAgICAgKGJ2ZWMtPmVuZCA9PSBQQUdFX1NJWkUg fHwNCisgICAgICAgICAgICBidmVjLT5vZmZzZXQgKyBidmVjLT5lbmQgPT0gYmUtPnBjbC0+bGVu Z3RoKSkgew0KICAgICAgICAgICAgICAgIHBnbnIgPSAoYnZlYy0+b2Zmc2V0ICsgYmUtPnBjbC0+ cGFnZW9mc19vdXQpID4+IFBBR0VfU0hJRlQ7DQogICAgICAgICAgICAgICAgREJHX0JVR09OKHBn bnIgPj0gYmUtPm5yX3BhZ2VzKTsNCiAgICAgICAgICAgICAgICBpZiAoIWJlLT5kZWNvbXByZXNz ZWRfcGFnZXNbcGducl0pIHsNCi0tDQoyLjI0LjQNClRlc3RlZC1ieSBTaGlqaWUgU3VuIDxzdW5z aGlqaWVAeGlhb21pLmNvbT4NCg0KDQpUaGFua3MsDQoNClN1biBTaGlqaWUNCg0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCreivP7IyzogR2FvIFhpYW5nIDxoc2lhbmdrYW9AbGlu dXguYWxpYmFiYS5jb20+DQq3osvNyrG85DogMjAyM8TqN9TCMTnI1SAxNDo1NDo1OQ0KytW8/sjL OiBsaW51eC1lcm9mc0BsaXN0cy5vemxhYnMub3JnDQqzrcvNOiBMS01MOyBHYW8gWGlhbmc7IMvv yr+93A0K1vfM4jogW0V4dGVybmFsIE1haWxdW1BBVENIXSBlcm9mczogZml4IHdyb25nIHByaW1h cnkgYnZlYyBzZWxlY3Rpb24gb24gZGVkdXBsaWNhdGVkIGV4dGVudHMNCg0KW83isr/Tyrz+XSC0 y9PKvP7AtNS009rQocPXuavLvs3isr+jrMfrvffJ97SmwO2ho8j0ttTTyrz+sLLIq9DUtObSyaOs x+u9q9PKvP7XqreiuPhtaXNlY0B4aWFvbWkuY29tvfjQ0Le0wKENCg0KV2hlbiBoYW5kbGluZyBk ZWR1cGxpY2F0ZWQgY29tcHJlc3NlZCBkYXRhLCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUNCmRlY29t cHJlc3NlZCBleHRlbnRzIHBvaW50aW5nIHRvIHRoZSBzYW1lIGNvbXByZXNzZWQgZGF0YSBpbiBv bmUgc2hvdC4NCg0KSW4gc3VjaCBjYXNlcywgdGhlIGJ2ZWNzIHdoaWNoIGJlbG9uZyB0byB0aGUg bG9uZ2VzdCBleHRlbnQgd2lsbCBiZQ0Kc2VsZWN0ZWQgYXMgdGhlIHByaW1hcnkgYnZlY3MgZm9y IHJlYWwgZGVjb21wcmVzc29ycyB0byBkZWNvZGUgYW5kIHRoZQ0Kb3RoZXIgZHVwbGljYXRlZCBi dmVjcyB3aWxsIGJlIGRpcmVjdGx5IGNvcGllZCBmcm9tIHRoZSBwcmltYXJ5IGJ2ZWNzLg0KDQpQ cmV2aW91c2x5LCBvbmx5IHJlbGF0aXZlIG9mZnNldHMgb2YgdGhlIGxvbmdlc3QgZXh0ZW50IHdh cyBjaGVja2VkIHRvDQpkZWNvbXByZXNzIHRoZSBwcmltYXJ5IGJ2ZWNzLiAgT24gcmFyZSBvY2Nh c2lvbnMsIGl0IGNhbiBiZSBpbmNvcnJlY3QNCmlmIHRoZXJlIGFyZSBzZXZlcmFsIGV4dGVudHMg d2l0aCB0aGUgc2FtZSBzdGFydCByZWxhdGl2ZSBvZmZzZXQuDQpBcyBhIHJlc3VsdCwgc29tZSBz aG9ydCBidmVjcyBjb3VsZCBiZSBzZWxlY3RlZCBmb3IgZGVjb21wcmVzc2lvbiBhbmQNCnRoZW4g Y2F1c2UgZGF0YSBjb3JydXB0aW9uLg0KDQpGb3IgZXhhbXBsZSwgYXMgU2hpamllIFN1biByZXBv cnRlZCBvZmYtbGlzdCwgY29uc2lkZXJpbmcgdGhlIGZvbGxvd2luZw0KZXh0ZW50cyBvZiBhIGZp bGU6DQogMTE3OiAgIDkwMzM0NS4uICA5MTUyNTAgfCAgIDExOTA1IDogICAgIDM4NTAyNC4uICAg IDM4OTEyMCB8ICAgIDQwOTYNCi4uLg0KIDExOTogICA5MTk3MjkuLiAgOTMwMzIzIHwgICAxMDU5 NCA6ICAgICAzODUwMjQuLiAgICAzODkxMjAgfCAgICA0MDk2DQouLi4NCiAxMjQ6ICAgOTY4ODgx Li4gIDk4MDc4NiB8ICAgMTE5MDUgOiAgICAgMzg1MDI0Li4gICAgMzg5MTIwIHwgICAgNDA5Ng0K DQpUaGUgc3RhcnQgcmVsYXRpdmUgb2Zmc2V0IGlzIHRoZSBzYW1lOiAyMjI1LCBidXQgZXh0ZW50 IDExOSAoOTE5NzI5Li4NCjkzMDMyMykgaXMgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuDQoNCkxl dCdzIHJlc3RyaWN0IHRoZSBidmVjIGxlbmd0aCBpbiBhZGRpdGlvbiB0byB0aGUgc3RhcnQgb2Zm c2V0IGlmIGJ2ZWNzDQphcmUgbm90IGZ1bGwuDQoNClJlcG9ydGVkLWJ5OiBTaGlqaWUgU3VuIDxz dW5zaGlqaWVAeGlhb21pLmNvbT4NCkZpeGVzOiA1YzJhNjQyNTJjNWQgKCJlcm9mczogaW50cm9k dWNlIHBhcnRpYWwtcmVmZXJlbmNlZCBwY2x1c3RlcnMiKQ0KU2lnbmVkLW9mZi1ieTogR2FvIFhp YW5nIDxoc2lhbmdrYW9AbGludXguYWxpYmFiYS5jb20+DQotLS0NCiBmcy9lcm9mcy96ZGF0YS5j IHwgNyArKysrLS0tDQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv bnMoLSkNCg0KZGlmZiAtLWdpdCBhL2ZzL2Vyb2ZzL3pkYXRhLmMgYi9mcy9lcm9mcy96ZGF0YS5j DQppbmRleCBiNjlkODlhMTFkZDAuLmRlNGYxMjE1MmI2MiAxMDA2NDQNCi0tLSBhL2ZzL2Vyb2Zz L3pkYXRhLmMNCisrKyBiL2ZzL2Vyb2ZzL3pkYXRhLmMNCkBAIC0xMTQ0LDEwICsxMTQ0LDExIEBA IHN0YXRpYyB2b2lkIHpfZXJvZnNfZG9fZGVjb21wcmVzc2VkX2J2ZWMoc3RydWN0IHpfZXJvZnNf ZGVjb21wcmVzc19iYWNrZW5kICpiZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHpfZXJvZnNfYnZlYyAqYnZlYykNCiB7DQogICAgICAgIHN0cnVjdCB6 X2Vyb2ZzX2J2ZWNfaXRlbSAqaXRlbTsNCisgICAgICAgdW5zaWduZWQgaW50IHBnbnI7DQoNCi0g ICAgICAgaWYgKCEoKGJ2ZWMtPm9mZnNldCArIGJlLT5wY2wtPnBhZ2VvZnNfb3V0KSAmIH5QQUdF X01BU0spKSB7DQotICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBnbnI7DQotDQorICAgICAg IGlmICghKChidmVjLT5vZmZzZXQgKyBiZS0+cGNsLT5wYWdlb2ZzX291dCkgJiB+UEFHRV9NQVNL KSAmJg0KKyAgICAgICAgICAgKGJ2ZWMtPmVuZCA9PSBQQUdFX1NJWkUgfHwNCisgICAgICAgICAg ICBidmVjLT5vZmZzZXQgKyBidmVjLT5lbmQgPT0gYmUtPnBjbC0+bGVuZ3RoKSkgew0KICAgICAg ICAgICAgICAgIHBnbnIgPSAoYnZlYy0+b2Zmc2V0ICsgYmUtPnBjbC0+cGFnZW9mc19vdXQpID4+ IFBBR0VfU0hJRlQ7DQogICAgICAgICAgICAgICAgREJHX0JVR09OKHBnbnIgPj0gYmUtPm5yX3Bh Z2VzKTsNCiAgICAgICAgICAgICAgICBpZiAoIWJlLT5kZWNvbXByZXNzZWRfcGFnZXNbcGducl0p IHsNCi0tDQoyLjI0LjQNCg0KIy8qKioqKiqxvtPKvP68sMbkuL28/rqs09DQocPXuavLvrXEsaPD 3NDFz6KjrL32z97T2reiy824+MnPw+a12Na31tDB0LP2tcS49sjLu/LIutfpoaO9+9a5yM66zsbk y/vIy9LUyM66ztDOyr3KudPDo6iw/MCotauyu8/e09rIq7K/u/Kyv7fWtdjQucK2oaK4tNbGoaK7 8smit6KjqbG+08q8/tbQtcTQxc+ioaPI57n7xPq07crVwcuxvtPKvP6jrMfrxPrBory0tee7sLvy 08q8/s2o1qq3orz+yMuyosm+s/2xvtPKvP6joSBUaGlzIGUtbWFpbCBhbmQgaXRzIGF0dGFjaG1l bnRzIGNvbnRhaW4gY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIGZyb20gWElBT01JLCB3aGljaCBp cyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgcGVyc29uIG9yIGVudGl0eSB3aG9zZSBhZGRyZXNzIGlz IGxpc3RlZCBhYm92ZS4gQW55IHVzZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVp biBpbiBhbnkgd2F5IChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdG90YWwgb3IgcGFy dGlhbCBkaXNjbG9zdXJlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3NlbWluYXRpb24pIGJ5IHBlcnNv bnMgb3RoZXIgdGhhbiB0aGUgaW50ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHByb2hpYml0ZWQuIElm IHlvdSByZWNlaXZlIHRoaXMgZS1tYWlsIGluIGVycm9yLCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5k ZXIgYnkgcGhvbmUgb3IgZW1haWwgaW1tZWRpYXRlbHkgYW5kIGRlbGV0ZSBpdCEqKioqKiovIw0K --_000_4a9259a9675e48e083139c22f7a86c8cxiaomicom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

When handling dedup= licated compressed data, there can be multiple
decompressed extents p= ointing to the same compressed data in one shot.

In such cases, the bve= cs which belong to the longest extent will be
selected as the primar= y bvecs for real decompressors to decode and the
other duplicated bvecs= will be directly copied from the primary bvecs.

Previously, only relat= ive offsets of the longest extent was checked to
decompress the primary= bvecs.  On rare occasions, it can be incorrect
if there are several e= xtents with the same start relative offset.
As a result, some shor= t bvecs could be selected for decompression and
then cause data corrup= tion.

For example, as Shijie= Sun reported off-list, considering the following
extents of a file:
 117:  = 903345..  915250 |   11905 :     385024= ..    389120 |    4096
...
 119:  = 919729..  930323 |   10594 :     385024= ..    389120 |    4096
...
 124:  = 968881..  980786 |   11905 :     385024= ..    389120 |    4096

The start relative off= set is the same: 2225, but extent 119 (919729..
930323) is shorter tha= n the others.

Let's restrict the bve= c length in addition to the start offset if bvecs
are not full.
Reported-by: Shijie Su= n <sunshijie@xiaomi.com>
Fixes: 5c2a64252c5d (&= quot;erofs: introduce partial-referenced pclusters")
Signed-off-by: Gao Xia= ng <hsiangkao@linux.alibaba.com>
---
 fs/erofs/zdata.c= | 7 ++++---
 1 file changed, = 4 insertions(+), 3 deletions(-)

diff --git a/fs/erofs/= zdata.c b/fs/erofs/zdata.c
index b69d89a11dd0..de= 4f12152b62 100644
--- a/fs/erofs/zdata.c=
+++ b/fs/e= rofs/zdata.c
@@ -1144,10 +1144,= 11 @@ static void z_erofs_do_decompressed_bvec(struct z_erofs_decompress_ba= ckend *be,
   &nbs= p;            &= nbsp;           &nbs= p;            struct= z_erofs_bvec *bvec)
 {
   &nbs= p;    struct z_erofs_bvec_item *item;
+   = ;    unsigned int pgnr;

-   &nb= sp;   if (!((bvec->offset + be->pcl->pageofs_out) &a= mp; ~PAGE_MASK)) {
-   &nb= sp;           unsigned in= t pgnr;
-
+   = ;    if (!((bvec->offset + be->pcl->pageofs_out= ) & ~PAGE_MASK) &&
+   = ;        (bvec->end =3D=3D PAGE_SIZE = ||
+   = ;         bvec->offset + bve= c->end =3D=3D be->pcl->length)) {
   &nbs= p;            pgnr = =3D (bvec->offset + be->pcl->pageofs_out) >> PAGE_SHIFT;=
   &nbs= p;            DBG_BU= GON(pgnr >=3D be->nr_pages);
   &nbs= p;            if (!b= e->decompressed_pages[pgnr]) {
--
2.24.4
Tested-by Shijie Sun <sunshijie@xiaomi.com>


Thanks, 

Sun Shijie


=B7=A2=BC=FE=C8=CB: Gao X= iang <hsiangkao@linux.alibaba.com>
=B7=A2=CB=CD=CA=B1=BC=E4: 2023=C4=EA7=D4=C219=C8=D5 14:54:59
=CA=D5=BC=FE=C8=CB: linux-erofs@lists.ozlabs.org
=B3=AD=CB=CD: LKML; Gao Xiang; =CB=EF=CA=BF=BD=DC
=D6=F7=CC=E2: [External Mail][PATCH] erofs: fix wrong primary bvec s= election on deduplicated extents
 
[=CD=E2=B2=BF=D3=CA=BC=FE] =B4=CB=D3=CA=BC=FE=C0= =B4=D4=B4=D3=DA=D0=A1=C3=D7=B9=AB=CB=BE=CD=E2=B2=BF=A3=AC=C7=EB=BD=F7=C9=F7= =B4=A6=C0=ED=A1=A3=C8=F4=B6=D4=D3=CA=BC=FE=B0=B2=C8=AB=D0=D4=B4=E6=D2=C9=A3= =AC=C7=EB=BD=AB=D3=CA=BC=FE=D7=AA=B7=A2=B8=F8misec@xiaomi.com=BD=F8=D0=D0= =B7=B4=C0=A1

When handling deduplicated compressed data, there can be multiple
decompressed extents pointing to the same compressed data in one shot.

In such cases, the bvecs which belong to the longest extent will be
selected as the primary bvecs for real decompressors to decode and the
other duplicated bvecs will be directly copied from the primary bvecs.

Previously, only relative offsets of the longest extent was checked to
decompress the primary bvecs.  On rare occasions, it can be incorrect<= br> if there are several extents with the same start relative offset.
As a result, some short bvecs could be selected for decompression and
then cause data corruption.

For example, as Shijie Sun reported off-list, considering the following
extents of a file:
 117:   903345..  915250 |   11905 : &nb= sp;   385024..    389120 |    4096<= br> ...
 119:   919729..  930323 |   10594 : &nb= sp;   385024..    389120 |    4096<= br> ...
 124:   968881..  980786 |   11905 : &nb= sp;   385024..    389120 |    4096<= br>
The start relative offset is the same: 2225, but extent 119 (919729..
930323) is shorter than the others.

Let's restrict the bvec length in addition to the start offset if bvecs
are not full.

Reported-by: Shijie Sun <sunshijie@xiaomi.com>
Fixes: 5c2a64252c5d ("erofs: introduce partial-referenced pclusters&qu= ot;)
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
 fs/erofs/zdata.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
index b69d89a11dd0..de4f12152b62 100644
--- a/fs/erofs/zdata.c
+++ b/fs/erofs/zdata.c
@@ -1144,10 +1144,11 @@ static void z_erofs_do_decompressed_bvec(struct= z_erofs_decompress_backend *be,
            &nb= sp;            =             &nb= sp;   struct z_erofs_bvec *bvec)
 {
        struct z_erofs_bvec_item *item;<= br> +       unsigned int pgnr;

-       if (!((bvec->offset + be->p= cl->pageofs_out) & ~PAGE_MASK)) {
-            &n= bsp;  unsigned int pgnr;
-
+       if (!((bvec->offset + be-&= gt;pcl->pageofs_out) & ~PAGE_MASK) &&
+           (bvec->= ;end =3D=3D PAGE_SIZE ||
+            bve= c->offset + bvec->end =3D=3D be->pcl->length)) {
            &nb= sp;   pgnr =3D (bvec->offset + be->pcl->pageofs_out)= >> PAGE_SHIFT;
            &nb= sp;   DBG_BUGON(pgnr >=3D be->nr_pages);
            &nb= sp;   if (!be->decompressed_pages[pgnr]) {
--
2.24.4

#/******=B1=BE=D3=CA=BC=FE=BC=B0=C6=E4=B8=BD=BC=FE=BA=AC=D3= =D0=D0=A1=C3=D7=B9=AB=CB=BE=B5=C4=B1=A3=C3=DC=D0=C5=CF=A2=A3=AC=BD=F6=CF=DE= =D3=DA=B7=A2=CB=CD=B8=F8=C9=CF=C3=E6=B5=D8=D6=B7=D6=D0=C1=D0=B3=F6=B5=C4=B8= =F6=C8=CB=BB=F2=C8=BA=D7=E9=A1=A3=BD=FB=D6=B9=C8=CE=BA=CE=C6=E4=CB=FB=C8=CB= =D2=D4=C8=CE=BA=CE=D0=CE=CA=BD=CA=B9=D3=C3=A3=A8=B0=FC=C0=A8=B5=AB=B2=BB=CF= =DE=D3=DA=C8=AB=B2=BF=BB=F2=B2=BF=B7=D6=B5=D8=D0=B9=C2=B6=A1=A2=B8=B4=D6=C6= =A1=A2=BB=F2=C9=A2=B7=A2=A3=A9=B1=BE=D3=CA=BC=FE=D6=D0=B5=C4=D0=C5=CF=A2=A1= =A3=C8=E7=B9=FB=C4=FA=B4=ED=CA=D5=C1=CB=B1=BE=D3=CA=BC=FE=A3=AC=C7=EB=C4=FA= =C1=A2=BC=B4=B5=E7=BB=B0=BB=F2=D3=CA=BC=FE=CD=A8=D6=AA=B7=A2=BC=FE=C8=CB=B2= =A2=C9=BE=B3=FD=B1=BE=D3=CA=BC=FE=A3=A1 This e-mail and its attachments con= tain confidential information from XIAOMI, which is intended only for the p= erson or entity whose address is listed above. Any use of the information contained= herein in any way (including, but not limited to, total or partial disclos= ure, reproduction, or dissemination) by persons other than the intended rec= ipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email i= mmediately and delete it!******/# --_000_4a9259a9675e48e083139c22f7a86c8cxiaomicom_--