From: Phillip Susi <[email protected]>
Description: All partitions on dmraid disks and partition numbers
 >= 16 on regular scsi disks were not being detected as in use.
 This was because assumptions were being made about the dev node
 major/minor numbers and how they relate to the partition number.
 These assumptions break entirely on dmraid devices, and on normal
 disks with >= 16 partitions.  Removed _partition_get_part_dev()
 and rewrote _partition_is_mounted() to use
 _partition_is_mounted_by_path() instead of _by_dev.
Forwarded: yes
Last-Update: 2011-05-04

Index: b/libparted/arch/linux.c
===================================================================
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2229,19 +2229,6 @@
         return _device_get_part_path (part->disk->dev, part->num);
 }
 
-static dev_t
-_partition_get_part_dev (const PedPartition* part)
-{
-        struct stat dev_stat;
-        int dev_major, dev_minor;
-
-        if (stat (part->disk->dev->path, &dev_stat))
-                return (dev_t)0;
-        dev_major = major (dev_stat.st_rdev);
-        dev_minor = minor (dev_stat.st_rdev);
-        return (dev_t)makedev (dev_major, dev_minor + part->num);
-}
-
 static int
 _mount_table_search (const char* file_name, dev_t dev)
 {
@@ -2288,13 +2275,18 @@
 static int
 _partition_is_mounted (const PedPartition *part)
 {
-        dev_t dev;
+	char *part_name;
+	int status;
         if (!ped_partition_is_active (part))
                 return 0;
-        dev = _partition_get_part_dev (part);
-        if (!dev)
-                return 0;
-        return _partition_is_mounted_by_dev (dev);
+	part_name = _device_get_part_path (part->disk->dev, part->num);
+	if (!part_name)
+		return 1;
+        status = _partition_is_mounted_by_path (part_name);
+	free (part_name);
+	if (status)
+		return 1;
+	return 0;
 }
 
 static int

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to