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 <[email protected]>
---
 partprobe/partprobe.c |   21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/partprobe/partprobe.c b/partprobe/partprobe.c
index 8bccc4f..c959104 100644
--- a/partprobe/partprobe.c
+++ b/partprobe/partprobe.c
@@ -109,12 +109,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.7.10.4


Reply via email to