diff options
author | Petr Uzel <petr.uzel@suse.cz> | 2012-10-15 10:31:52 +0200 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2012-10-16 10:13:47 +0200 |
commit | 05917368a7867a17d6b2e0df16bf54239aa52107 (patch) | |
tree | 50773ef27da119c44aabda3ba75390c7be27c59e /partprobe | |
parent | aec4b5228d1536452b1816731c41d9b37de2a25c (diff) | |
download | parted-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.c | 21 |
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; |