From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) by mx.groups.io with SMTP id smtpd.web08.39781.1658232638355434988 for ; Tue, 19 Jul 2022 05:10:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Qw8IzVfG; spf=pass (domain: gmail.com, ip: 209.85.167.43, mailfrom: savvamtr@gmail.com) Received: by mail-lf1-f43.google.com with SMTP id a9so24398214lfk.11 for ; Tue, 19 Jul 2022 05:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KfqBlzYLSbTQgmU2dCHXTpxgcOcg2dxXIkxWBiGm+Ko=; b=Qw8IzVfG1jm0H+heUdJeW+KpTOiU5RWF9v98fex4T1oWSwMbxXYGCvOlNMvKXqN6Ve DSkNxmeCSIS+NnAVhutEzIytd79EWqH4n9IS6z/qsaOJg30yL6qFkCkgfYHmIFmvPAPn VTQu1wkFANTPLjY2/svpNLSFCQ34FsT+ufK6kcSzlh98xVtIW9LIccGBdcYQMV60nGdm JDXe2erjk6fDT1/ZRpwk3MSyrkgAutDCUXtwRV7y0Na7IkQ5xYhk8uc5ebci1H94rwlL dvhZI/uesmBILv8VIU+LlimCuCcIOlhyWbTtmm/RRuASnFBOKgxg/5whsQN7lP2/3V1t Y11g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KfqBlzYLSbTQgmU2dCHXTpxgcOcg2dxXIkxWBiGm+Ko=; b=4NTGUsYiepTuYcdXLfZ6X87UuqqAXYvnL9sB39vRjSXzvDhTLudhHYysuKDLFpHc74 6cCQVfke64H+q2AbIHbYTPLEYSfTl49hB2HyDMsX5aIgNcgCVUHAy6RMClXraBqArmnF sBmdX1eHNG7r/GiJosJ6ilsWYTgvaRnkfYn8raWYH4Pb9Z3BuH4LCTytPNDkX8RZ8qrc A2p05osxSz0JORIXADOfXLQRgrbwrfayXtCGlWpNIQF/dZaFCgX6TSiSQdg+pu9kpZYQ VWsyvZ5atNdPebSPJcKF7jbTvJN0mDDd6cMEwNJoRq2WJyS94C3KsKZgncLdeOkAvI28 SBOA== X-Gm-Message-State: AJIora/b+L5luQ6dr73pF9h3tEA44NgWosRO1L/1i4LUoRmkGMvjqTi2 ZJJLIXqqf1IZXBvXHbCgNaD3eUbw2btgeAe6H8s= X-Google-Smtp-Source: AGRyM1ujED6NxZDnNXk2Yt3BKor9jx9x1HTdDAJ6riyOuqy6qBE0jwWEjdNxA93jWXHqMOOFvVaLoA== X-Received: by 2002:a05:6512:32c8:b0:48a:10da:b204 with SMTP id f8-20020a05651232c800b0048a10dab204mr15122631lfg.183.1658232636416; Tue, 19 Jul 2022 05:10:36 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([207.180.219.167]) by smtp.gmail.com with ESMTPSA id z20-20020a2eb534000000b0025d6ecbc897sm2668245ljm.46.2022.07.19.05.10.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Jul 2022 05:10:36 -0700 (PDT) From: "Savva Mitrofanov" To: devel@edk2.groups.io Cc: =?UTF-8?q?Marvin=20H=C3=A4user?= , Pedro Falcato , Vitaly Cheptsov Subject: [edk2-platforms][PATCH 03/10] Ext4Pkg: Use 32-bit block number in BlockMap Date: Tue, 19 Jul 2022 18:10:09 +0600 Message-Id: <20220719121016.29380-4-savvamtr@gmail.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220719121016.29380-1-savvamtr@gmail.com> References: <20220719121016.29380-1-savvamtr@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Replace EXT4_BLOCK_NR with 32-bit EXT2_BLOCK_NR in BlockMap, because we consider BlockMap is 32-bit fs ext2/3 feature Cc: Marvin H=C3=A4user Cc: Pedro Falcato Cc: Vitaly Cheptsov Signed-off-by: Savva Mitrofanov --- Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h | 1 + Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h | 2 +- Features/Ext4Pkg/Ext4Dxe/BlockMap.c | 14 ++++++++++---- Features/Ext4Pkg/Ext4Dxe/Extents.c | 3 ++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h b/Features/Ext4Pkg/Ext4Dxe= /Ext4Disk.h index a55cd2fa68ad..3aef6f0e5bb4 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Disk.h @@ -463,6 +463,7 @@ typedef struct { #define EXT4_EXTENT_MAX_INITIALIZED (1 << 15)=0D =0D typedef UINT64 EXT4_BLOCK_NR;=0D +typedef UINT32 EXT2_BLOCK_NR;=0D typedef UINT32 EXT4_INO_NR;=0D =0D // 2 is always the root inode number in ext4=0D diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h b/Features/Ext4Pkg/Ext4Dxe/= Ext4Dxe.h index b1508482b0a7..b446488b2112 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h @@ -1165,7 +1165,7 @@ EFI_STATUS Ext4GetBlocks (=0D IN EXT4_PARTITION *Partition,=0D IN EXT4_FILE *File,=0D - IN EXT4_BLOCK_NR LogicalBlock,=0D + IN EXT2_BLOCK_NR LogicalBlock,=0D OUT EXT4_EXTENT *Extent=0D );=0D =0D diff --git a/Features/Ext4Pkg/Ext4Dxe/BlockMap.c b/Features/Ext4Pkg/Ext4Dxe= /BlockMap.c index 1a06ac9fbf86..3d9e16035bee 100644 --- a/Features/Ext4Pkg/Ext4Dxe/BlockMap.c +++ b/Features/Ext4Pkg/Ext4Dxe/BlockMap.c @@ -70,7 +70,7 @@ UINTN Ext4GetBlockPath (=0D IN CONST EXT4_PARTITION *Partition,=0D IN UINT32 LogicalBlock,=0D - OUT EXT4_BLOCK_NR BlockPath[EXT4_MAX_BLOCK_PATH]=0D + OUT EXT2_BLOCK_NR BlockPath[EXT4_MAX_BLOCK_PATH]=0D )=0D {=0D // The logic behind the block map is very much like a page table=0D @@ -213,12 +213,12 @@ EFI_STATUS Ext4GetBlocks (=0D IN EXT4_PARTITION *Partition,=0D IN EXT4_FILE *File,=0D - IN EXT4_BLOCK_NR LogicalBlock,=0D + IN EXT2_BLOCK_NR LogicalBlock,=0D OUT EXT4_EXTENT *Extent=0D )=0D {=0D EXT4_INODE *Inode;=0D - EXT4_BLOCK_NR BlockPath[EXT4_MAX_BLOCK_PATH];=0D + EXT2_BLOCK_NR BlockPath[EXT4_MAX_BLOCK_PATH];=0D UINTN BlockPathLength;=0D UINTN Index;=0D UINT32 *Buffer;=0D @@ -272,7 +272,13 @@ Ext4GetBlocks ( }=0D }=0D =0D - Ext4GetExtentInBlockMap (Buffer, Partition->BlockSize / sizeof (UINT32),= BlockPath[BlockPathLength - 1], Extent);=0D + Ext4GetExtentInBlockMap (=0D + Buffer,=0D + Partition->BlockSize / sizeof (UINT32),=0D + BlockPath[BlockPathLength - 1],=0D + Extent=0D + );=0D +=0D FreePool (Buffer);=0D =0D return EFI_SUCCESS;=0D diff --git a/Features/Ext4Pkg/Ext4Dxe/Extents.c b/Features/Ext4Pkg/Ext4Dxe/= Extents.c index c3874df71751..c5951f78aa62 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Extents.c +++ b/Features/Ext4Pkg/Ext4Dxe/Extents.c @@ -259,7 +259,8 @@ Ext4GetExtent ( =0D if (!(Inode->i_flags & EXT4_EXTENTS_FL)) {=0D // If this is an older ext2/ext3 filesystem, emulate Ext4GetExtent usi= ng the block map=0D - Status =3D Ext4GetBlocks (Partition, File, LogicalBlock, Extent);=0D + // We cast LogicalBlock to UINT32, considering ext2/3 are 32-bit=0D + Status =3D Ext4GetBlocks (Partition, File, (UINT32) LogicalBlock, Exte= nt);=0D =0D if (!EFI_ERROR (Status)) {=0D Ext4CacheExtents (File, Extent, 1);=0D --=20 2.37.0