!50 [sync] PR-44: 修复parted命令使用柱面进行分区,22.0.3版本和20.0.3版本行为不一致

From: @openeuler-sync-bot 
Reviewed-by: @swf504 
Signed-off-by: @swf504
This commit is contained in:
openeuler-ci-bot 2023-12-18 03:37:43 +00:00 committed by Gitee
commit ca76a7beaf
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 94 additions and 1 deletions

View File

@ -0,0 +1,88 @@
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

View File

@ -16,7 +16,7 @@
Summary: The GNU disk partition manipulation program Summary: The GNU disk partition manipulation program
Name: parted Name: parted
Version: 3.5 Version: 3.5
Release: 1 Release: 2
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
License: GPLv3+ License: GPLv3+
@ -36,6 +36,8 @@ 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
@ -119,6 +121,9 @@ fi
%{_libdir}/pkgconfig/libparted*.pc %{_libdir}/pkgconfig/libparted*.pc
%changelog %changelog
* 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