[parted-devel] [PATCH 3/6] partprobe: remove partitions when there is no PT

Jim Meyering jim at meyering.net
Tue Oct 16 08:14:25 UTC 2012


Jim Meyering wrote:

> Jim Meyering wrote:
>
>> Petr Uzel wrote:
>>> When partprobe does not detect any partition table on the device,
>>> it should tell kernel to drop partitions on that device, but it
>>> does not. Fix it.
>>>
>>> * parted/partprobe.c (process_dev): Drop partitions even if no
>>> partition table has been detected on the disk.
>>>
>>> Addresses: https://bugzilla.novell.com/783419
>>>
>>> Signed-off-by: Petr Uzel <petr.uzel at suse.cz>
>>
>> Thanks for the patch.
>> I appreciate the BZ reference.
>> Normally I would require a test case addition, but
>> since this is partprobe (which these days is rarely needed)
>> it's probably not worth the trouble.
>>
>> I like the separate summary and ChangeLog entry, but found the
>> ChangeLog entry to be a near duplicate of the summary, so converted
>> it to be a little more implementation-related.
>>
>> Subject: [PATCH] partprobe: remove partitions when there is no PT
>>
>> When partprobe detects no partition table on a device, it should
>> tell the kernel to drop partitions on that device, but it did not.
>> * parted/partprobe.c (process_dev): When ped_disk_probe fails,
>> create a dummy (empty) partition table and use that.
>> Addresses: https://bugzilla.novell.com/783419
>
> Oh!  I nearly forgot: your commit fixes a bug, so it must have a NEWS entry.
> I've just added one for you and adjusted the log.  I also changed
> the one-line subject s/PT/partition table/.
>
> Subject: [PATCH] partprobe: remove partitions when there is no partition
>  table

Better still, I'll include the actual NEWS change.
Here's what I'm about to push:

>From 05917368a7867a17d6b2e0df16bf54239aa52107 Mon Sep 17 00:00:00 2001
From: Petr Uzel <petr.uzel at suse.cz>
Date: Mon, 15 Oct 2012 10:31:52 +0200
Subject: [PATCH] partprobe: remove partitions when there is no partition
 table

When partprobe detects no partition table on a device, it should
tell the kernel to drop partitions on that device, but it did not.
* parted/partprobe.c (process_dev): When ped_disk_probe fails,
create a dummy (empty) partition table and use that.
* NEWS (Bug fixes): Mention it.
Addresses: https://bugzilla.novell.com/783419
---
 NEWS                  |  3 +++
 partprobe/partprobe.c | 21 ++++++++++++++++-----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index 4c4716d..293f5e4 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,9 @@ GNU parted NEWS                                    -*- outline -*-
   libparted: treat a disk with no pMBR as an msdos-labeled disk
   even when it has valid GPT headers.

+  partprobe now tells the kernel to forget about any partitions
+  on a device that has no recognizable partition table.
+
 ** Changes in behavior

   Added new Linux-specific partition GUID type code
diff --git a/partprobe/partprobe.c b/partprobe/partprobe.c
index b8dca5e..0919d3f 100644
--- a/partprobe/partprobe.c
+++ b/partprobe/partprobe.c
@@ -106,12 +106,23 @@ process_dev (PedDevice* dev)
 	PedDisk*	disk;

 	disk_type = ped_disk_probe (dev);
-	if (!disk_type || !strcmp (disk_type->name, "loop"))
+	if (disk_type && !strcmp (disk_type->name, "loop"))
 		return 1;
-
-	disk = ped_disk_new (dev);
-	if (!disk)
-		goto error;
+	else if (!disk_type) {
+		/* Partition table not found, so create dummy,
+		   empty one */
+		disk_type = ped_disk_type_get("msdos");
+		if (!disk_type)
+			goto error;
+
+		disk = ped_disk_new_fresh (dev, disk_type);
+		if (!disk)
+			goto error_destroy_disk;
+	} else {
+		disk = ped_disk_new (dev);
+		if (!disk)
+			goto error;
+	}
 	if (!opt_no_inform) {
 		if (!ped_disk_commit_to_os (disk))
 			goto error_destroy_disk;
--
1.8.0.rc2



More information about the parted-devel mailing list