From nobody Sun May 5 17:02:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+82757+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+82757+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=outlook.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1635354551095341.0947446658795; Wed, 27 Oct 2021 10:09:11 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id YWvSYY1788612x7qXuqCBpM6; Wed, 27 Oct 2021 10:09:10 -0700 X-Received: from AUS01-ME3-obe.outbound.protection.outlook.com (AUS01-ME3-obe.outbound.protection.outlook.com [40.92.63.186]) by mx.groups.io with SMTP id smtpd.web11.11707.1635341867281265715 for ; Wed, 27 Oct 2021 06:37:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ku1mNhKwwzbgnAIlvvhz8ziZk4iQIAmisivGKnFNin5aVml2T993+JQJuDZ65whB9k/DG24LbSZCAbWN5CES4G+UglbRsohte6Q959s9XmEDTGELIQ29kXePOpFt2lHd11m/Kwf0nxAgqG/3WnJBSOpocBIDBoSbJJJ3agx+9V03iw9bIA/Cx4e/TXCzSd9AZiZOHPXjZnyyejKDI5Wez+HAehavwu9EPDjojFspKIreGTkml7blwqXwiVHsZ1BsbhDfDZxs0n0Cw1FvOpoSBeEDp0yuz887sPQj3Gfk48JPB/xu/gThg+ZDu4BH0rLZgUu8YDSTKVmE+3W3U+MmIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mmMQApM2iA6HK9u7uJKJ9A0gTPgnssbhT6MggeQQl6Q=; b=aQc99rlzL6Hm0ZeGam1kbxq1NaBedhENBy+TKYSNWtYttFMpuhgnPoV4afteXMzKuvce9OgZFet8pbbQ9tkdS+CIlm4Rg2Hiw3t9t70owulcP8cStmc8DdzEyS9QWBzrxDEnCSGGOlLvEKo3gecHePu6zSgvsPjBeu0FNqTpFz/jI3rIPLIjEPd/ZdvPfXLrUeLFQheOCyLbOUivwgnFtZTBJc+d0wRE4q5aIN6JjpoVMGfdAniFdzEDQJZbHytWny02F+hQBLWq/INJYSy2mmloNs2bNcbIoadftjGh9ToIDyadrereA6zthcjQn4J7xFMIBY7SlKmAEHrIGL1RpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none X-Received: from SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:169::6) by SYBP282MB3009.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:13e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Wed, 27 Oct 2021 13:37:43 +0000 X-Received: from SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM ([fe80::755a:3211:db9a:8cc8]) by SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM ([fe80::755a:3211:db9a:8cc8%4]) with mapi id 15.20.4628.020; Wed, 27 Oct 2021 13:37:43 +0000 From: "qi zhou" To: "devel@edk2.groups.io" CC: "pedro.falcato@gmail.com" Subject: [edk2-devel] [PATCH][Ext4Pkg] unwritten extent suuport Thread-Topic: [PATCH][Ext4Pkg] unwritten extent suuport Thread-Index: AQHXyzcMbiIWfYFzgEiW74tSJAK0Bg== Date: Wed, 27 Oct 2021 13:37:43 +0000 Message-ID: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: a8dc7321-c969-8f6e-8822-6effd0e9a7c5 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Knvv8lKiz2BgdjXo7FNb//FLpJjPa+13] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d2c8eb7a-2f7a-4d4b-735d-08d9994ef46a x-ms-traffictypediagnostic: SYBP282MB3009: x-microsoft-antispam-message-info: WchGmnJ9a7+vGIwMSWPEABWxBdP+LJO6rWhl0CgoPU5TBKTwblTccnSpTuVe9guW39E92qpOIKRiKFSA3wE3NaH2/sr5oIEXPZoF30m71H7L2Eh+XSmdf7/LIz+Ad42fcnqS4GFc62TT7whheV3Ttrb7uWeC4q0JSYTGlpNJSaKPgszRYToqEaeiuL9bw6XJpcz8sMcXUiKWEq7qkWd44kEJPMAClLvGUkAQYXKewAUoJLp6AAgwNa/JPO1pO90in0jC3ySAPfa/FW50yWngNSZHi+qigJp/Xzk/TO0J8QqLgRQfpjuMFomZiAwaeCKbP7Ba9fZhTFEJwtOpokKpFf4h0mpCuJsanzeHlqzA+0Eqm17axowA6HlIjsUIjCP0yZs+ZZUcr0cSik0XjlZ4t9eR4wDeUu5S/y0mlaQxi/1BmVUFz7kuHw0OQD6ubSmtGdxJUN3VZG6AvX0cZBVBdmMJEPsNcUATgDnVz/ajeLmPgIi9HiAxSoeNu5m6GRQhM2PEiDQcUnkUGSGc6DmLz4XFl/yxxs4lmxg8ATLnVsVdciqa/UILm3sd144rC6IGqWyKbKtseRDob6CGBWnhsA== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: RPMcXYX8G9SVRmtoebP5U03fSMR3RNT9adw49/XO4YCnoTNP+zI6TOGzotLjZcoQqRRVpdD4GJJeJjI7ysO7R4QIX7ifO2otsyLFW47We4IvD5J7Jipd/bGAJTyP/lCvgtiKkF9HPrEo7RwMl8K+ov9vlH3fLNkH007FwV5ClGxnVAhfWzQdpKvVsiy/+fRUoof5UoBsi/6ftDVLITX6LEJnLNwYsjeDWLSzvG7E21kfeevvD3muoeVPyU5rsPKG8j5On415Zm8U2wkUKbO/RCDExKFFz+hqnw8USqD2XXYYYDYMyXbQ9kX1SQMUzBnclshXVmDTn25kz5Zzio1/cjdlW/IuVR7KbcBrJif4NuOIht09QTr/KdoRCNV/rrzElnEKJLTegjtVF3hQsQkqcJb1fIUGzYx0jkjaf7qmdzHI3nQByaY9u0Cob5eu7f5Si6eSv4+cSiliceL3w71shjMmsxTkQmMqscYLdrXuhZw03UMTbN7yqhANbxViDY3Kip9nbkaPHI9RwYxObTW9UIs80VyHSNWayRmKZP6bobwMVdIFImkzB1llClyeQOukK50eu4b+xy8O4n8nhgH0bpkTL5VWREM6J/NzAV18VYri57j0ZpM5yEIRe+x5QqWdWVG58pE9Mlb1CJrbMmbJTImdqPoybtu1hvWQbzZ5yILWAZZYbNr5algnpDm4cvJ4hSPDzOIm8x9ktk2U0CPEXA== MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: d2c8eb7a-2f7a-4d4b-735d-08d9994ef46a X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Oct 2021 13:37:43.5875 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SYBP282MB3009 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,atmgnd@outlook.com X-Gm-Message-State: 77ZfapxsujGlfX7RaOMcUY2xx1787277AA= Content-Language: en-US Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1635354550; bh=1vXY3toTU084WMu/OXVqSyR8oL1GnE0T2msrmPKHc8I=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=G687ECfaPDiGUnaFfpdt2joxV497P2Othm1Oo68Hr4/IeB3i0PU58n1azsoKTnmj98+ g497VbQmHBmlKOw4gMzsbsKpsGE8S7LpMifL4DdxJGEJ8GTjB3I+/O1pJniQanjWi9meS +wYeqfJHoFkovkzIbiW2vdp5JiR1pN5mGsE= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1635354553942100001 Content-Type: text/plain; charset="utf-8" From: "Qi Zhou" Subject: [PATCH] unwritten extent suuport the real lenght of uninitialized/unwritten extent should be (ee_len - (1UL = << 15)), and all related block should been read as zeros. see: https://github.com/torvalds/linux/blob/d25f27432f80a800a3592db128254c8140bd= 71bf/fs/ext4/ext4_extents.h#L156 Signed-off-by: Qi Zhou --- Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h | 5 +++++ Features/Ext4Pkg/Ext4Dxe/Extents.c | 4 ++-- Features/Ext4Pkg/Ext4Dxe/Inode.c | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h b/Features/Ext4Pkg/Ext4Dxe= /Ext4Disk.h index 070eb5a..7ca8eee 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h @@ -402,6 +402,11 @@ typedef struct { =20 #define EXT4_MIN_DIR_ENTRY_LEN 8 =20 +#define EXTENT_INIT_MAX_LEN (1UL << 15) + +#define EXTENT_REAL_LEN(x) ((UINT16)(x <=3D EXTENT_INIT_MAX_LEN ? x : (x -= EXTENT_INIT_MAX_LEN))) +#define EXTENT_IS_UNWRITTEN(x) (x > EXTENT_INIT_MAX_LEN) + // This on-disk structure is present at the bottom of the extent tree typedef struct { // First logical block diff --git a/Features/Ext4Pkg/Ext4Dxe/Extents.c b/Features/Ext4Pkg/Ext4Dxe/= Extents.c index 5fa2fe0..21af573 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Extents.c +++ b/Features/Ext4Pkg/Ext4Dxe/Extents.c @@ -332,7 +332,7 @@ Ext4GetExtent ( return EFI_NO_MAPPING; } =20 - if (!(LogicalBlock >=3D Ext->ee_block && Ext->ee_block + Ext->ee_len > L= ogicalBlock)) { + if (!(LogicalBlock >=3D Ext->ee_block && Ext->ee_block + EXTENT_REAL_LEN= (Ext->ee_len) > LogicalBlock)) { // This extent does not cover the block if (Buffer !=3D NULL) { FreePool (Buffer); @@ -413,7 +413,7 @@ Ext4ExtentsMapKeyCompare ( Extent =3D UserStruct; Block =3D (UINT32)(UINTN)StandaloneKey; =20 - if (Block >=3D Extent->ee_block && Block < Extent->ee_block + Extent->ee= _len) { + if (Block >=3D Extent->ee_block && Block < Extent->ee_block + EXTENT_REA= L_LEN(Extent->ee_len)) { return 0; } =20 diff --git a/Features/Ext4Pkg/Ext4Dxe/Inode.c b/Features/Ext4Pkg/Ext4Dxe/In= ode.c index 63cecec..d691ec7 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Inode.c +++ b/Features/Ext4Pkg/Ext4Dxe/Inode.c @@ -151,6 +151,11 @@ Ext4Read ( // Potential improvement: In the future, we could get the hole's tota // size and memset all that SetMem (Buffer, WasRead, 0); + } else if(EXTENT_IS_UNWRITTEN(Extent.ee_len)) { + HoleOff =3D CurrentSeek - (UINT64)Extent.ee_block * Partition->Block= Size; + HoleLen =3D EXTENT_REAL_LEN(Extent.ee_len) * Partition->BlockSize - = HoleOff; + WasRead =3D HoleLen > RemainingRead ? RemainingRead : HoleLen; + SetMem (Buffer, WasRead, 0); } else { ExtentStartBytes =3D MultU64x32 ( LShiftU64 (Extent.ee_start_hi, 32) | --=20 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#82757): https://edk2.groups.io/g/devel/message/82757 Mute This Topic: https://groups.io/mt/86629612/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-