Compare commits

..

No commits in common. "master" and "openEuler-23.09" have entirely different histories.

5 changed files with 20 additions and 117 deletions

View File

@ -1,4 +1,4 @@
From 7c5b213ab881dbf4a49673908092359f78bc13ce Mon Sep 17 00:00:00 2001 From 22be792bfd8e4a4da7495ec60084c23dd8a43677 Mon Sep 17 00:00:00 2001
From: huangkaibin <huangkaibin@huawei.com> From: huangkaibin <huangkaibin@huawei.com>
Date: Fri, 25 Jan 2019 19:46:52 +0000 Date: Fri, 25 Jan 2019 19:46:52 +0000
Subject: [PATCH] add-support-of-gpt_sync_mbr Subject: [PATCH] add-support-of-gpt_sync_mbr
@ -13,14 +13,14 @@ This code has been refactored.'boot' is removed.
So we should call ped_partition_get_flag to instead. So we should call ped_partition_get_flag to instead.
Signed-off-by: Hongtao Zhang <zhanghongtao22@huawei.com> Signed-off-by: Hongtao Zhang <zhanghongtao22@huawei.com>
--- ---
libparted/labels/gpt.c | 246 ++++++++++++++++++++++++++++++++++++++++- libparted/labels/gpt.c | 246 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 242 insertions(+), 4 deletions(-) 1 file changed, 242 insertions(+), 4 deletions(-)
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index 780fb70..f63d414 100644 index 4f922b2..b2dad71 100644
--- a/libparted/labels/gpt.c --- a/libparted/labels/gpt.c
+++ b/libparted/labels/gpt.c +++ b/libparted/labels/gpt.c
@@ -364,6 +364,7 @@ typedef struct _GPTPartitionData @@ -306,6 +306,7 @@ typedef struct _GPTPartitionData
} GPTPartitionData; } GPTPartitionData;
static PedDiskType gpt_disk_type; static PedDiskType gpt_disk_type;
@ -28,7 +28,7 @@ index 780fb70..f63d414 100644
static inline uint32_t static inline uint32_t
pth_get_size (const PedDevice *dev) pth_get_size (const PedDevice *dev)
@@ -530,8 +531,54 @@ _pmbr_is_valid (const LegacyMBR_t *mbr) @@ -474,8 +475,54 @@ _pmbr_is_valid (const LegacyMBR_t *mbr)
return 0; return 0;
} }
@ -84,7 +84,7 @@ index 780fb70..f63d414 100644
{ {
int gpt_sig_found = 0; int gpt_sig_found = 0;
@@ -565,6 +612,19 @@ gpt_probe (const PedDevice *dev) @@ -509,6 +556,19 @@ gpt_probe (const PedDevice *dev)
return gpt_sig_found; return gpt_sig_found;
} }
@ -104,11 +104,10 @@ index 780fb70..f63d414 100644
static PedDisk * static PedDisk *
gpt_alloc (const PedDevice *dev) gpt_alloc (const PedDevice *dev)
{ {
@@ -609,6 +669,36 @@ error: @@ -554,6 +614,36 @@ error:
return NULL;
} }
+static PedDisk * static PedDisk *
+gpt_sync_mbr_alloc (const PedDevice *dev) +gpt_sync_mbr_alloc (const PedDevice *dev)
+{ +{
+ PedDisk *disk; + PedDisk *disk;
@ -138,10 +137,11 @@ index 780fb70..f63d414 100644
+ return NULL; + return NULL;
+} +}
+ +
static PedDisk * +static PedDisk *
gpt_duplicate (const PedDisk *disk) gpt_duplicate (const PedDisk *disk)
{ {
@@ -983,7 +1073,7 @@ gpt_read (PedDisk *disk) PedDisk *new_disk;
@@ -967,7 +1057,7 @@ gpt_read (PedDisk *disk)
/* motivation: let the user decide about the pmbr... during /* motivation: let the user decide about the pmbr... during
ped_disk_probe(), they probably didn't get a choice... */ ped_disk_probe(), they probably didn't get a choice... */
@ -150,7 +150,7 @@ index 780fb70..f63d414 100644
goto error; goto error;
GuidPartitionTableHeader_t *gpt = NULL; GuidPartitionTableHeader_t *gpt = NULL;
@@ -1140,11 +1230,61 @@ error: @@ -1124,11 +1214,61 @@ error:
return 0; return 0;
} }
@ -213,7 +213,7 @@ index 780fb70..f63d414 100644
/* The UEFI spec is not clear about what to do with the following /* The UEFI spec is not clear about what to do with the following
elements of the Protective MBR (pmbr): BootCode (0-440B), elements of the Protective MBR (pmbr): BootCode (0-440B),
UniqueMBRSignature (440B-444B) and Unknown (444B-446B). UniqueMBRSignature (440B-444B) and Unknown (444B-446B).
@@ -1158,6 +1298,8 @@ _write_pmbr (PedDevice *dev, bool pmbr_boot) @@ -1142,6 +1282,8 @@ _write_pmbr (PedDevice *dev, bool pmbr_boot)
memset (pmbr->PartitionRecord, 0, sizeof pmbr->PartitionRecord); memset (pmbr->PartitionRecord, 0, sizeof pmbr->PartitionRecord);
pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE); pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE);
@ -222,7 +222,7 @@ index 780fb70..f63d414 100644
pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI; pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI;
pmbr->PartitionRecord[0].StartSector = 2; pmbr->PartitionRecord[0].StartSector = 2;
pmbr->PartitionRecord[0].EndHead = 0xFF; pmbr->PartitionRecord[0].EndHead = 0xFF;
@@ -1170,6 +1312,60 @@ _write_pmbr (PedDevice *dev, bool pmbr_boot) @@ -1154,6 +1296,60 @@ _write_pmbr (PedDevice *dev, bool pmbr_boot)
pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (dev->length - 1UL); pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (dev->length - 1UL);
if (pmbr_boot) if (pmbr_boot)
pmbr->PartitionRecord[0].BootIndicator = 0x80; pmbr->PartitionRecord[0].BootIndicator = 0x80;
@ -283,7 +283,7 @@ index 780fb70..f63d414 100644
int write_ok = ped_device_write (dev, pmbr, GPT_PMBR_LBA, int write_ok = ped_device_write (dev, pmbr, GPT_PMBR_LBA,
GPT_PMBR_SECTORS); GPT_PMBR_SECTORS);
@@ -1284,7 +1480,7 @@ gpt_write (const PedDisk *disk) @@ -1273,7 +1469,7 @@ gpt_write (const PedDisk *disk)
ptes_crc = efi_crc32 (ptes, ptes_bytes); ptes_crc = efi_crc32 (ptes, ptes_bytes);
/* Write protective MBR */ /* Write protective MBR */
@ -292,7 +292,7 @@ index 780fb70..f63d414 100644
goto error_free_ptes; goto error_free_ptes;
/* Write PTH and PTEs */ /* Write PTH and PTEs */
@@ -1916,6 +2112,38 @@ static PedDiskOps gpt_disk_ops = @@ -2070,6 +2266,38 @@ static PedDiskOps gpt_disk_ops =
PT_op_function_initializers (gpt) PT_op_function_initializers (gpt)
}; };
@ -331,8 +331,8 @@ index 780fb70..f63d414 100644
static PedDiskType gpt_disk_type = static PedDiskType gpt_disk_type =
{ {
next: NULL, next: NULL,
@@ -1925,16 +2153,26 @@ static PedDiskType gpt_disk_type = @@ -2078,16 +2306,26 @@ static PedDiskType gpt_disk_type =
PED_DISK_TYPE_DISK_UUID | PED_DISK_TYPE_PARTITION_UUID features: PED_DISK_TYPE_PARTITION_NAME
}; };
+static PedDiskType gpt_sync_mbr_disk_type = +static PedDiskType gpt_sync_mbr_disk_type =
@ -359,5 +359,5 @@ index 780fb70..f63d414 100644
verify (sizeof (GuidPartitionEntryAttributes_t) == 8); verify (sizeof (GuidPartitionEntryAttributes_t) == 8);
-- --
2.33.0 1.8.3.1

View File

@ -1,88 +0,0 @@
From bfce75fd13dd72c6300f0ac3d739e40df90f7dce Mon Sep 17 00:00:00 2001
From: lixiaokeng <lixiaokeng@huawei.com>
Date: Sun, 7 Jun 2020 15:18:00 +0000
Subject: [PATCH] parted: remove patch which modified cyl size
The cyl size was changed which leaded to "parted /dev/sdb -s mkpart primary 0cyl 128cyl"
could not perform as expected. Remove the patch "Use BLKSSZGET to get device sector size
in _device_probe_geometry()".
Signed-off-by:lixiaokeng<lixiaokeng@huawei.com>
---
linux.c | 52 ++++++++++++++++++----------------------------------
1 file changed, 18 insertions(+), 34 deletions(-)
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 37cf555..0d8149d 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -868,7 +868,6 @@ _device_probe_geometry (PedDevice* dev)
struct stat dev_stat;
struct hd_geometry geometry;
int geometry_is_valid = 0;
- int sector_size = 0;
if (!_device_stat (dev, &dev_stat))
return 0;
@@ -880,41 +879,26 @@ _device_probe_geometry (PedDevice* dev)
if (!dev->length)
return 0;
- /* initialize the bios_geom values to something */
- dev->bios_geom.sectors = 0;
- dev->bios_geom.heads = 0;
- dev->bios_geom.cylinders = 0;
-
- geometry_is_valid = !ioctl (arch_specific->fd, HDIO_GETGEO, &geometry)
- && geometry.sectors && geometry.heads;
-
-#if defined __s390__ || defined __s390x__
- if (geometry_is_valid) {
-#else
- if (!ioctl (arch_specific->fd, BLKSSZGET, &sector_size)) {
- /* get the sector count first */
- dev->bios_geom.sectors = 1 + (sector_size / PED_SECTOR_SIZE_DEFAULT);
- dev->bios_geom.heads = 255;
- } else if (geometry_is_valid) {
- /* if BLKSSZGET failed, use deprecated HDIO_GETGEO result */
-#endif
- dev->bios_geom.sectors = geometry.sectors;
- dev->bios_geom.heads = geometry.heads;
+ /* The GETGEO ioctl is no longer useful (as of linux 2.6.x). We could
+ * still use it in 2.4.x, but this is contentious. Perhaps we should
+ * move to EDD. */
+ dev->bios_geom.sectors = 63;
+ dev->bios_geom.heads = 255;
+ dev->bios_geom.cylinders
+ = dev->length / (63 * 255);
+
+ /* FIXME: what should we put here? (TODO: discuss on linux-kernel) */
+ if (!ioctl (arch_specific->fd, HDIO_GETGEO, &geometry)
+ && geometry.sectors && geometry.heads) {
+ dev->hw_geom.sectors = geometry.sectors;
+ dev->hw_geom.heads = geometry.heads;
+ dev->hw_geom.cylinders
+ = dev->length / (dev->hw_geom.heads
+ * dev->hw_geom.sectors);
} else {
- ped_exception_throw (
- PED_EXCEPTION_WARNING,
- PED_EXCEPTION_OK,
- _("Could not determine sector size for %s: %s.\n"
- "Using the default sector size (%lld)."),
- dev->path, strerror (errno), PED_SECTOR_SIZE_DEFAULT);
- dev->bios_geom.sectors = 2;
- dev->bios_geom.heads = 255;
+ dev->hw_geom = dev->bios_geom;
}
- dev->bios_geom.cylinders
- = dev->length / (dev->bios_geom.heads
- * dev->bios_geom.sectors);
- dev->hw_geom = dev->bios_geom;
return 1;
}
--
1.8.3.1

BIN
parted-3.5.tar.xz Normal file

Binary file not shown.

Binary file not shown.

View File

@ -15,7 +15,7 @@
Summary: The GNU disk partition manipulation program Summary: The GNU disk partition manipulation program
Name: parted Name: parted
Version: 3.6 Version: 3.5
Release: 1 Release: 1
URL: https://www.gnu.org/software/parted/ URL: https://www.gnu.org/software/parted/
Source0: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz Source0: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
@ -36,8 +36,6 @@ Patch7: 0007-fat_op_context_new-free-ctx-remap-and-goto-correct-l.patch
Patch8: 0008-hfsplus_cache_from_extent-fix-memleak.patch Patch8: 0008-hfsplus_cache_from_extent-fix-memleak.patch
Patch9: 0009-fat_clobber-set-boot_sector-NULL-and-free-boot_secto.patch Patch9: 0009-fat_clobber-set-boot_sector-NULL-and-free-boot_secto.patch
Patch9000: 9000-parted-remove-patch-which-modifid-cyl-size.patch
%description %description
The GNU Parted program allows you to create, destroy, resize, move, The GNU Parted program allows you to create, destroy, resize, move,
and copy hard disk partitions. Parted can be used for creating space and copy hard disk partitions. Parted can be used for creating space
@ -121,13 +119,6 @@ fi
%{_libdir}/pkgconfig/libparted*.pc %{_libdir}/pkgconfig/libparted*.pc
%changelog %changelog
* Mon Feb 26 2024 wangzhiqiang <wangzhiqiang95@huawei.com> - 3.6-1
- update to 3.6
- update version dependency
* Thu Dec 14 2023 lingsheng <lingsheng@xfusion.com> - 3.5-2
- remove patch which modifid cyl-size
* Wed Oct 26 2022 Hongtao Zhang <zhanghongtao22@huawei.com> - 3.5-1 * Wed Oct 26 2022 Hongtao Zhang <zhanghongtao22@huawei.com> - 3.5-1
- update to 3.5 - update to 3.5