[Libguestfs] [PATCH] resize: handle empty UUIDs for swap partitions (RHBZ#1482737)

Pino Toscano
2017-08-18T08:56:12Z

Avoid passing an empty UUID string to mkswap, which mkswap does not
accept (correctly) as new UUID.

In addition, print a warning when the UUID of a swap partition changed,
since it may require manual fixups in the guest.
---
 resize/resize.ml | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/resize/resize.ml b/resize/resize.ml
index fbb2d021b..48c75161d 100644
--- a/resize/resize.ml
+++ b/resize/resize.ml
@@ -1347,9 +1347,20 @@ read the man page virt-resize(1).
         (* Rebuild the swap using the UUID and label of the existing
          * swap partition.
          *)
-        let uuid = g#vfs_uuid target in
+        let orig_uuid = g#vfs_uuid target in
+        let uuid +          match orig_uuid with
+          | "" -> None
+          | uuid -> Some uuid in
         let label = g#vfs_label target in
-        g#mkswap ~uuid ~label target
+        g#mkswap ?uuid ~label target;
+        (* Check whether the UUID could be set, and warn in case it
+         * changed.
+         *)
+        let new_uuid = g#vfs_uuid target in
+        if new_uuid <> orig_uuid then
+          warning (f_"UUID in swap partition %s changed from ‘%s’ to
‘%s’")
+            target orig_uuid new_uuid;
     in

     (* Expand partition content as required. *)
--
2.13.5