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

