Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > e699bad909605227151857506de7365b > files > 4

parted-2.3-8.fc15.src.rpm

From 763d9aca0fd5c79c46243774c17b562013a93418 Mon Sep 17 00:00:00 2001
From: Brian C. Lane <bcl@redhat.com>
Date: Fri, 17 Sep 2010 09:21:24 -0700
Subject: [PATCH] Handle syncing partition changes when using blkext majors (#634980)

Also remove unused _device_get_partition_range function
---
 libparted/arch/linux.c |   37 ++++---------------------------------
 1 files changed, 4 insertions(+), 33 deletions(-)

diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 38f4e31..225d06b 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2391,35 +2391,6 @@ _blkpg_remove_partition (PedDisk* disk, int n)
 }
 
 /*
- * The number of partitions that a device can have depends on the kernel.
- * If we don't find this value in /sys/block/DEV/range, we will use our own
- * value.
- */
-static unsigned int
-_device_get_partition_range(PedDevice* dev)
-{
-        int         range, r;
-        char        path[128];
-        FILE*       fp;
-        bool        ok;
-
-        r = snprintf(path, sizeof(path), "/sys/block/%s/range",
-                     last_component(dev->path));
-        if (r < 0 || r >= sizeof(path))
-                return MAX_NUM_PARTS;
-
-        fp = fopen(path, "r");
-        if (!fp)
-                return MAX_NUM_PARTS;
-
-        ok = fscanf(fp, "%d", &range) == 1;
-        fclose(fp);
-
-        /* (range <= 0) is none sense.*/
-        return ok && range > 0 ? range : MAX_NUM_PARTS;
-}
-
-/*
  * Sync the partition table in two step process:
  * 1. Remove all of the partitions from the kernel's tables, but do not attempt
  *    removal of any partition for which the corresponding ioctl call fails.
@@ -2441,10 +2412,10 @@ _disk_sync_part_table (PedDisk* disk)
         int lpn;
 
         /* lpn = largest partition number. */
-        if (ped_disk_get_max_supported_partition_count(disk, &lpn))
-                lpn = PED_MIN(lpn, _device_get_partition_range(disk->dev));
-        else
-                lpn = _device_get_partition_range(disk->dev);
+        if (!ped_disk_get_max_supported_partition_count(disk, &lpn))
+                lpn = 256; /* HDG: not pretty but there is no other way
+                              as we must make sure any removed partitions
+                              actually get removed from the kernels view */
 
         /* Its not possible to support largest_partnum < 0.
          * largest_partnum == 0 would mean does not support partitions.
-- 
1.7.2.2