summaryrefslogtreecommitdiff
path: root/partprobe
diff options
context:
space:
mode:
authorPetr Uzel <petr.uzel@suse.cz>2012-10-15 10:31:52 +0200
committerJim Meyering <jim@meyering.net>2012-10-16 10:13:47 +0200
commit05917368a7867a17d6b2e0df16bf54239aa52107 (patch)
tree50773ef27da119c44aabda3ba75390c7be27c59e /partprobe
parentaec4b5228d1536452b1816731c41d9b37de2a25c (diff)
downloadparted-05917368a7867a17d6b2e0df16bf54239aa52107.tar.gz
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
Diffstat (limited to 'partprobe')
-rw-r--r--partprobe/partprobe.c21
1 files changed, 16 insertions, 5 deletions
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;