[Libguestfs] [PATCHv2 3/3] resize: preserve GPT disk GUID.

Maxim Perevedentsev mperevedentsev at virtuozzo.com
Tue Jan 19 12:03:01 UTC 2016


Changed disk GUID makes some OSes fail to boot.
To enable virt-resize to support such OSes we
have to preserve disk GUID.
---
 resize/resize.ml | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/resize/resize.ml b/resize/resize.ml
index d6dd9a5..8ff4793 100644
--- a/resize/resize.ml
+++ b/resize/resize.ml
@@ -407,6 +407,13 @@ read the man page virt-resize(1).
       error (f_"%s: unknown partition table type\nvirt-resize only supports MBR (DOS) and GPT partition tables.")
         (fst infile) in

+  let disk_guid =
+    match parttype with
+    | MBR -> None
+    | GPT ->
+      try Some (g#part_get_disk_guid "/dev/sda")
+      with G.Error _ -> None in
+
   (* Build a data structure describing the source disk's partition layout. *)
   let get_partition_content =
     let pvs_full = Array.to_list (g#pvs_full ()) in
@@ -977,7 +984,10 @@ read the man page virt-resize(1).
     let last_error = ref "" in
     let rec initialize_partition_table g attempts =
       let ok =
-        try g#part_init "/dev/sdb" parttype_string; true
+        try
+          g#part_init "/dev/sdb" parttype_string;
+          may (g#part_set_disk_guid "/dev/sdb") disk_guid;
+          true
         with G.Error error -> last_error := error; false in
       if ok then g, true
       else if attempts > 0 then (
--
1.8.3.1




More information about the Libguestfs mailing list