From c553c74d10279645c25b0f4886df77f4fb84d06e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 6 Jan 2022 14:31:53 +0000 Subject: [PATCH] Rebase to upstream 1.45.96. resolves: rhbz#2011713 Add virtio-transitional for older guests when converting to q35 resolves: rhbz#1942325 --- ...Use-Option.may-for-some-Nbdkit-calls.patch | 72 ------ ...b-types-reformat-string_of_guestcaps.patch | 44 ++++ ...t_curl.ml-Fix-typo-in-commented-code.patch | 26 --- ...lib-types-update-string_of_guestcaps.patch | 55 +++++ ...uce-the-gcaps_virtio_1_0-guest-capab.patch | 95 ++++++++ ...tus-collection-to-the-old-RHV-output.patch | 166 -------------- ...bvirt_xml-pick-virtio-transitional-m.patch | 118 ++++++++++ ...ver-the-output-and-conversion-stages.patch | 66 ------ ...-Remove-nbdcopy-request-size-4M-flag.patch | 61 ------ ...-create_json-expose-gcaps_virtio_1_0.patch | 33 +++ ...sinfo-wrap-osinfo_os_get_all_devices.patch | 165 ++++++++++++++ ...o_utils-introduce-string_of_osinfo_d.patch | 77 +++++++ ...o_utils-introduce-os_support_of_osin.patch | 77 +++++++ ...e-machine-type-and-virtio-1.0-from-o.patch | 207 ++++++++++++++++++ ...correct-qemu-binary-for-o-qemu-mode-.patch | 4 +- ...-the-qemu-boot-oo-qemu-boot-option-R.patch | 4 +- ...-supported-sound-cards-to-match-RHEL.patch | 4 +- ...RHEL-Fixes-for-libguestfs-winsupport.patch | 4 +- ...sk-force-VNC-as-display-RHBZ-1372671.patch | 4 +- ...-mention-SUSE-Xen-hosts-RHBZ-1430203.patch | 4 +- ...-for-supported-v2v-hypervisors-guest.patch | 4 +- ....patch => 0017-RHEL-Disable-o-glance.patch | 4 +- ...0018-RHEL-Remove-the-in-place-option.patch | 4 +- sources | 4 +- virt-v2v.spec | 42 ++-- 25 files changed, 917 insertions(+), 427 deletions(-) delete mode 100644 0001-input-output-Use-Option.may-for-some-Nbdkit-calls.patch create mode 100644 0001-lib-types-reformat-string_of_guestcaps.patch delete mode 100644 0002-input-nbdkit_curl.ml-Fix-typo-in-commented-code.patch create mode 100644 0002-lib-types-update-string_of_guestcaps.patch create mode 100644 0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch delete mode 100644 0003-output_rhv-restrict-block-status-collection-to-the-old-RHV-output.patch create mode 100644 0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch delete mode 100644 0004-v2v-Swap-over-the-output-and-conversion-stages.patch delete mode 100644 0005-XXX-v2v-Remove-nbdcopy-request-size-4M-flag.patch create mode 100644 0005-output-create_json-expose-gcaps_virtio_1_0.patch create mode 100644 0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch create mode 100644 0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch create mode 100644 0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch create mode 100644 0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch rename 0006-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-RHBZ-1147313.patch => 0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch (92%) rename 0007-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-RHBZ-1147313.patch => 0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch (97%) rename 0008-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL-qemu-RHBZ-1176493.patch => 0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch (89%) rename 0009-RHEL-Fixes-for-libguestfs-winsupport.patch => 0013-RHEL-Fixes-for-libguestfs-winsupport.patch (97%) rename 0010-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch => 0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch (91%) rename 0011-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch => 0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch (89%) rename 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guests.patch => 0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch (96%) rename 0013-RHEL-Disable-o-glance.patch => 0017-RHEL-Disable-o-glance.patch (98%) rename 0014-RHEL-Remove-the-in-place-option.patch => 0018-RHEL-Remove-the-in-place-option.patch (98%) diff --git a/0001-input-output-Use-Option.may-for-some-Nbdkit-calls.patch b/0001-input-output-Use-Option.may-for-some-Nbdkit-calls.patch deleted file mode 100644 index 126e1fa..0000000 --- a/0001-input-output-Use-Option.may-for-some-Nbdkit-calls.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 24fdb088b1856abec0974a428c424fe598597079 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sat, 18 Dec 2021 12:01:19 +0000 -Subject: [PATCH] input, output: Use Option.may for some Nbdkit calls - - Option.may (Nbdkit.add_arg cmd "port") port; - -is completely equivalent to: - - (match port with - | Some s -> Nbdkit.add_arg cmd "port" s - | None -> ()); - -Updates: commit d50966c2a480bda033f6e63bb797f86c13d576bd ---- - input/nbdkit_curl.ml | 4 +--- - input/nbdkit_ssh.ml | 8 ++------ - output/output_rhv_upload.ml | 4 +--- - 3 files changed, 4 insertions(+), 12 deletions(-) - -diff --git a/input/nbdkit_curl.ml b/input/nbdkit_curl.ml -index d6793b22..081c598e 100644 ---- a/input/nbdkit_curl.ml -+++ b/input/nbdkit_curl.ml -@@ -57,9 +57,7 @@ let create_curl ?bandwidth ?cookie_script ?cookie_script_renew ?cor - - (* https://bugzilla.redhat.com/show_bug.cgi?id=1146007#c10 *) - Nbdkit.add_arg cmd "timeout" "2000"; -- (match cookie_script with -- | Some s -> Nbdkit.add_arg cmd "cookie-script" s -- | None -> ()); -+ Option.may (Nbdkit.add_arg cmd "cookie-script") cookie_script; - (match cookie_script_renew with - | Some i -> Nbdkit.add_arg cmd "cookie-script-renew" (string_of_int i) - | None -> ()); -diff --git a/input/nbdkit_ssh.ml b/input/nbdkit_ssh.ml -index ce972d7d..0a6d8425 100644 ---- a/input/nbdkit_ssh.ml -+++ b/input/nbdkit_ssh.ml -@@ -61,12 +61,8 @@ let create_ssh ?bandwidth ?cor ~password ?port ~server ?user path = - let cmd = Nbdkit.create "ssh" in - Nbdkit.add_arg cmd "host" server; - Nbdkit.add_arg cmd "path" path; -- (match port with -- | Some s -> Nbdkit.add_arg cmd "port" s -- | None -> ()); -- (match user with -- | Some s -> Nbdkit.add_arg cmd "user" s -- | None -> ()); -+ Option.may (Nbdkit.add_arg cmd "port") port; -+ Option.may (Nbdkit.add_arg cmd "user") user; - - (* Retry filter (if it exists) can be used to get around brief - * interruptions in service. It must be closest to the plugin. -diff --git a/output/output_rhv_upload.ml b/output/output_rhv_upload.ml -index 7cedfff9..91e7be45 100644 ---- a/output/output_rhv_upload.ml -+++ b/output/output_rhv_upload.ml -@@ -345,9 +345,7 @@ e command line has to match the number of guest disk images (for this guest: %d) - (* Create the nbdkit instance. *) - Nbdkit.add_arg cmd "size" (Int64.to_string size); - Nbdkit.add_arg cmd "url" destination_url; -- (match rhv_cafile with -- | None -> () -- | Some cafile -> Nbdkit.add_arg cmd "cafile" cafile); -+ Option.may (Nbdkit.add_arg cmd "cafile") rhv_cafile; - if not rhv_verifypeer then - Nbdkit.add_arg cmd "insecure" "true"; - if is_ovirt_host then --- -2.19.1.3.g30247aa5d201 - diff --git a/0001-lib-types-reformat-string_of_guestcaps.patch b/0001-lib-types-reformat-string_of_guestcaps.patch new file mode 100644 index 0000000..c5a00f9 --- /dev/null +++ b/0001-lib-types-reformat-string_of_guestcaps.patch @@ -0,0 +1,44 @@ +From dc69bb6033bd41b79e6203080059d4f3b0eb8027 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:02 +0100 +Subject: [PATCH] lib/types: reformat "string_of_guestcaps" + +The printf format string in "string_of_guestcaps" is hard to read, because +it is not indented properly wrt. the rest of the source code. Indent it +properly without changing its behavior. + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-2-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + lib/types.ml | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/lib/types.ml b/lib/types.ml +index 894391ba..dc3308dc 100644 +--- a/lib/types.ml ++++ b/lib/types.ml +@@ -423,12 +423,13 @@ let string_of_machine = function + + let string_of_guestcaps gcaps = + sprintf "\ +-gcaps_block_bus = %s +-gcaps_net_bus = %s +-gcaps_machine = %s +-gcaps_arch = %s +-gcaps_acpi = %b +-" (string_of_block_type gcaps.gcaps_block_bus) ++ gcaps_block_bus = %s\n\ ++ gcaps_net_bus = %s\n\ ++ gcaps_machine = %s\n\ ++ gcaps_arch = %s\n\ ++ gcaps_acpi = %b\n\ ++ " ++ (string_of_block_type gcaps.gcaps_block_bus) + (string_of_net_type gcaps.gcaps_net_bus) + (string_of_machine gcaps.gcaps_machine) + gcaps.gcaps_arch +-- +2.31.1 + diff --git a/0002-input-nbdkit_curl.ml-Fix-typo-in-commented-code.patch b/0002-input-nbdkit_curl.ml-Fix-typo-in-commented-code.patch deleted file mode 100644 index 616996b..0000000 --- a/0002-input-nbdkit_curl.ml-Fix-typo-in-commented-code.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 702a511b7f3379102ec5d267a7a43bdd47f3e594 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sat, 18 Dec 2021 13:22:48 +0000 -Subject: [PATCH] input/nbdkit_curl.ml: Fix typo in commented code - -Fixes: commit 255722cbf39afc0b012e2ac00d16fa6ba2f8c21f ---- - input/nbdkit_curl.ml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/input/nbdkit_curl.ml b/input/nbdkit_curl.ml -index 081c598e..aacedb78 100644 ---- a/input/nbdkit_curl.ml -+++ b/input/nbdkit_curl.ml -@@ -65,7 +65,7 @@ let create_curl ?bandwidth ?cookie_script ?cookie_script_renew ?cor - - (* For lots of extra debugging, uncomment one or both lines. *) - (* Nbdkit.add_arg cmd "--debug" "curl.verbose=1"; *) -- (* Nbdkit.add_arg cnd "--debug" "curl.scripts=1"; *) -+ (* Nbdkit.add_arg cmd "--debug" "curl.scripts=1"; *) - - (* Retry filter (if it exists) can be used to get around brief - * interruptions in service. It must be closest to the plugin. --- -2.19.1.3.g30247aa5d201 - diff --git a/0002-lib-types-update-string_of_guestcaps.patch b/0002-lib-types-update-string_of_guestcaps.patch new file mode 100644 index 0000000..d5cc9bf --- /dev/null +++ b/0002-lib-types-update-string_of_guestcaps.patch @@ -0,0 +1,55 @@ +From 08786886302cceb7ee73cfa6c01325f690a3c094 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:03 +0100 +Subject: [PATCH] lib/types: update "string_of_guestcaps" + +The "string_of_guestcaps" function is out of date; the following commits +did not update it, when they introduced new fields to the "guestcaps" +record type: + +- d295d6e510a4 ("v2v: Extend guestcaps to record drivers for virtio-rng, + balloon and pvpanic.", 2017-04-06) + +- 05f780c16f01 ("v2v: support configuration of viosock driver", + 2021-02-26) + +Print those fields now. + +Fixes: d295d6e510a4fb251d545c52c0a9d6dccabe6f78 +Fixes: 05f780c16f0135c657615520c2245b42de1efc3e +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-3-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + lib/types.ml | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/lib/types.ml b/lib/types.ml +index dc3308dc..52db1f9e 100644 +--- a/lib/types.ml ++++ b/lib/types.ml +@@ -425,12 +425,20 @@ let string_of_guestcaps gcaps = + sprintf "\ + gcaps_block_bus = %s\n\ + gcaps_net_bus = %s\n\ ++ gcaps_virtio_rng = %b\n\ ++ gcaps_virtio_balloon = %b\n\ ++ gcaps_isa_pvpanic = %b\n\ ++ gcaps_virtio_socket = %b\n\ + gcaps_machine = %s\n\ + gcaps_arch = %s\n\ + gcaps_acpi = %b\n\ + " + (string_of_block_type gcaps.gcaps_block_bus) + (string_of_net_type gcaps.gcaps_net_bus) ++ gcaps.gcaps_virtio_rng ++ gcaps.gcaps_virtio_balloon ++ gcaps.gcaps_isa_pvpanic ++ gcaps.gcaps_virtio_socket + (string_of_machine gcaps.gcaps_machine) + gcaps.gcaps_arch + gcaps.gcaps_acpi +-- +2.31.1 + diff --git a/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch b/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch new file mode 100644 index 0000000..bb0180f --- /dev/null +++ b/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch @@ -0,0 +1,95 @@ +From 789017805ad0ddfacfb16d39313ef8b2f8f478ac Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:04 +0100 +Subject: [PATCH] lib/types: introduce the "gcaps_virtio_1_0" guest capability + +Add a new field to the "guestcaps" record to track whether the guest +supports the virtio devices that it does at the virtio-1.0 protocol level. + +Virt-v2v's current assumption is that virtio-1.0 is supported by any +guest, namely for those virtio devices specifically that the guest +supports -- which in fact may be the empty set. Make this assumption +explicit by setting the new field to "true" in "convert/convert_linux.ml" +and "convert/convert_windows.ml". + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-4-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + convert/convert_linux.ml | 1 + + convert/convert_windows.ml | 1 + + lib/types.ml | 3 +++ + lib/types.mli | 4 ++++ + 4 files changed, 9 insertions(+) + +diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml +index d49ecec0..3f1114ad 100644 +--- a/convert/convert_linux.ml ++++ b/convert/convert_linux.ml +@@ -155,6 +155,7 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = + gcaps_machine = machine; + gcaps_arch = Utils.kvm_arch inspect.i_arch; + gcaps_acpi = acpi; ++ gcaps_virtio_1_0 = true; + } in + + guestcaps +diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml +index 0ebffb15..30e494ea 100644 +--- a/convert/convert_windows.ml ++++ b/convert/convert_windows.ml +@@ -259,6 +259,7 @@ let convert (g : G.guestfs) _ inspect _ static_ips = + gcaps_machine = machine; + gcaps_arch = Utils.kvm_arch inspect.i_arch; + gcaps_acpi = true; ++ gcaps_virtio_1_0 = true; + } in + + guestcaps +diff --git a/lib/types.ml b/lib/types.ml +index 52db1f9e..50c41918 100644 +--- a/lib/types.ml ++++ b/lib/types.ml +@@ -404,6 +404,7 @@ type guestcaps = { + gcaps_machine : guestcaps_machine; + gcaps_arch : string; + gcaps_acpi : bool; ++ gcaps_virtio_1_0 : bool; + } + and guestcaps_block_type = Virtio_blk | IDE + and guestcaps_net_type = Virtio_net | E1000 | RTL8139 +@@ -432,6 +433,7 @@ let string_of_guestcaps gcaps = + gcaps_machine = %s\n\ + gcaps_arch = %s\n\ + gcaps_acpi = %b\n\ ++ gcaps_virtio_1_0 = %b\n\ + " + (string_of_block_type gcaps.gcaps_block_bus) + (string_of_net_type gcaps.gcaps_net_bus) +@@ -442,6 +444,7 @@ let string_of_guestcaps gcaps = + (string_of_machine gcaps.gcaps_machine) + gcaps.gcaps_arch + gcaps.gcaps_acpi ++ gcaps.gcaps_virtio_1_0 + + type target_buses = { + target_virtio_blk_bus : target_bus_slot array; +diff --git a/lib/types.mli b/lib/types.mli +index 02913c0c..0b9b6e25 100644 +--- a/lib/types.mli ++++ b/lib/types.mli +@@ -270,6 +270,10 @@ type guestcaps = { + gcaps_machine : guestcaps_machine; (** Machine model. *) + gcaps_arch : string; (** Architecture that KVM must emulate. *) + gcaps_acpi : bool; (** True if guest supports acpi. *) ++ ++ gcaps_virtio_1_0 : bool; ++ (** The guest supports the virtio devices that it does at the virtio-1.0 ++ protocol level. *) + } + (** Guest capabilities after conversion. eg. Was virtio found or installed? *) + +-- +2.31.1 + diff --git a/0003-output_rhv-restrict-block-status-collection-to-the-old-RHV-output.patch b/0003-output_rhv-restrict-block-status-collection-to-the-old-RHV-output.patch deleted file mode 100644 index e109e3b..0000000 --- a/0003-output_rhv-restrict-block-status-collection-to-the-old-RHV-output.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 07b12fe99fb9cf0b75fe45d3eaa07b4bbc1bbe89 Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Mon, 20 Dec 2021 14:56:40 +0100 -Subject: [PATCH] output_rhv: restrict block status collection to the old RHV - output - -Nir reports that, despite the comment we removed in commit a2a4f7a09996, -we generally cannot access the output NBD servers in the finalization -stage. In particular, in the "rhv_upload_finalize" function -[output/output_rhv_upload.ml], the output disks are disconnected before -"create_ovf" is called. - -Consequently, the "get_disk_allocated" call in the "create_ovf" -> -"add_disks" -> "get_disk_allocated" chain fails. - -Rich suggests that we explicitly restrict the "get_disk_allocated" call -with a new optional boolean parameter to the one output plugin that really -needs it, namely the old RHV one. - -Accordingly, revert the VDSM test case to its state at (a2a4f7a09996^). - -Cc: Nir Soffer -Fixes: a2a4f7a09996a5e66d027d0d9692e083eb0a8128 -Reported-by: Nir Soffer -Suggested-by: Richard W.M. Jones -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2034240 -Signed-off-by: Laszlo Ersek -Message-Id: <20211220135640.12436-1-lersek@redhat.com> -Tested-by: Nir Soffer -[lersek@redhat.com: drop parens around condition in "if"; thanks: Rich] -Reviewed-by: Richard W.M. Jones ---- - lib/create_ovf.ml | 35 +++++++++++++--------- - lib/create_ovf.mli | 3 +- - output/output_rhv.ml | 4 +-- - tests/test-v2v-o-vdsm-options.ovf.expected | 4 +-- - 4 files changed, 27 insertions(+), 19 deletions(-) - -diff --git a/lib/create_ovf.ml b/lib/create_ovf.ml -index dbac3405..9d06bd23 100644 ---- a/lib/create_ovf.ml -+++ b/lib/create_ovf.ml -@@ -531,7 +531,8 @@ let rec create_ovf source inspect - { output_name; guestcaps; target_firmware; target_nics } - sizes - output_alloc output_format -- sd_uuid image_uuids vol_uuids dir vm_uuid ovf_flavour = -+ sd_uuid image_uuids vol_uuids ?(need_actual_sizes = false) dir -+ vm_uuid ovf_flavour = - assert (List.length sizes = List.length vol_uuids); - - let memsize_mb = source.s_memory /^ 1024L /^ 1024L in -@@ -745,7 +746,7 @@ let rec create_ovf source inspect - - (* Add disks to the OVF XML. *) - add_disks sizes guestcaps output_alloc output_format -- sd_uuid image_uuids vol_uuids dir ovf_flavour ovf; -+ sd_uuid image_uuids vol_uuids need_actual_sizes dir ovf_flavour ovf; - - (* Old virt-v2v ignored removable media. XXX *) - -@@ -791,7 +792,7 @@ and get_flavoured_section ovf ovirt_path rhv_path rhv_path_attr = function - - (* This modifies the OVF DOM, adding a section for each disk. *) - and add_disks sizes guestcaps output_alloc output_format -- sd_uuid image_uuids vol_uuids dir ovf_flavour ovf = -+ sd_uuid image_uuids vol_uuids need_actual_sizes dir ovf_flavour ovf = - let references = - let nodes = path_to_nodes ovf ["ovf:Envelope"; "References"] in - match nodes with -@@ -839,7 +840,12 @@ and add_disks sizes guestcaps output_alloc output_format - b /^ 1073741824L - in - let size_gb = bytes_to_gb size in -- let actual_size = get_disk_allocated ~dir ~disknr:i in -+ let actual_size = -+ if need_actual_sizes then -+ get_disk_allocated ~dir ~disknr:i -+ else -+ None -+ in - - let format_for_rhv = - match output_format with -@@ -891,16 +897,17 @@ and add_disks sizes guestcaps output_alloc output_format - "ovf:disk-type", "System"; (* RHBZ#744538 *) - "ovf:boot", if is_bootable_drive then "True" else "False"; - ] in -- (* Ovirt-engine considers the "ovf:actual_size" attribute mandatory. If -- * we don't know the actual size, we must create the attribute with -- * empty contents. -- *) -- List.push_back attrs -- ("ovf:actual_size", -- match actual_size with -- | None -> "" -- | Some actual_size -> Int64.to_string (bytes_to_gb actual_size) -- ); -+ if need_actual_sizes then -+ (* Ovirt-engine considers the "ovf:actual_size" attribute mandatory. -+ * If we don't know the actual size, we must create the attribute -+ * with empty contents. -+ *) -+ List.push_back attrs -+ ("ovf:actual_size", -+ match actual_size with -+ | None -> "" -+ | Some actual_size -> Int64.to_string (bytes_to_gb actual_size) -+ ); - e "Disk" !attrs [] in - append_child disk disk_section; - -diff --git a/lib/create_ovf.mli b/lib/create_ovf.mli -index 0d1cc5a9..d6d4e62e 100644 ---- a/lib/create_ovf.mli -+++ b/lib/create_ovf.mli -@@ -46,7 +46,8 @@ val ovf_flavour_to_string : ovf_flavour -> string - val create_ovf : Types.source -> Types.inspect -> - Types.target_meta -> int64 list -> - Types.output_allocation -> string -> string -> string list -> -- string list -> string -> string -> ovf_flavour -> DOM.doc -+ string list -> ?need_actual_sizes:bool -> string -> string -> -+ ovf_flavour -> DOM.doc - (** Create the OVF file. - - Actually a {!DOM} document is created, not a file. It can be written -diff --git a/output/output_rhv.ml b/output/output_rhv.ml -index b902a7ee..6a67b7aa 100644 ---- a/output/output_rhv.ml -+++ b/output/output_rhv.ml -@@ -183,8 +183,8 @@ and rhv_finalize dir source inspect target_meta - (* Create the metadata. *) - let ovf = - Create_ovf.create_ovf source inspect target_meta sizes -- output_alloc output_format esd_uuid image_uuids vol_uuids dir vm_uuid -- Create_ovf.RHVExportStorageDomain in -+ output_alloc output_format esd_uuid image_uuids vol_uuids -+ ~need_actual_sizes:true dir vm_uuid Create_ovf.RHVExportStorageDomain in - - (* Write it to the metadata file. *) - let dir = esd_mp // esd_uuid // "master" // "vms" // vm_uuid in -diff --git a/tests/test-v2v-o-vdsm-options.ovf.expected b/tests/test-v2v-o-vdsm-options.ovf.expected -index bd5b5e7d..23ca180f 100644 ---- a/tests/test-v2v-o-vdsm-options.ovf.expected -+++ b/tests/test-v2v-o-vdsm-options.ovf.expected -@@ -2,7 +2,7 @@ - - - -- -+ - - - List of networks -@@ -10,7 +10,7 @@ - - - List of Virtual Disks -- -+ - - - windows --- -2.19.1.3.g30247aa5d201 - diff --git a/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch b/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch new file mode 100644 index 0000000..f1c7554 --- /dev/null +++ b/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch @@ -0,0 +1,118 @@ +From e4cf85bd3ad44aed28cf3e8d3bfd67fec38ebdab Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:05 +0100 +Subject: [PATCH] output/create_libvirt_xml: pick "virtio-transitional" models + when needed + +In the domain XML we generate, we do not assign PCI B/D/F addresses to +devices; that job is left to libvirtd. When using the Q35 machine type, +libvirtd places the virtio devices into PCI Express Root Ports. As a +consequence, QEMU disables virtio-0.9.5 support on these devices, and so +guest OSes without virtio-1.0 drivers cannot drive them. + +Prevent QEMU from turning off the virtio-0.9.5 ("legacy") protocol by +specifying the "virtio-transitional" (not "virtio") model for our virtio +devices: + +- For non-disk devices, simply change the value of the existent "model" + attribute. + +- For disk devices, add the "model" attribute as a new one. + +(In fact, libvirtd doesn't (only) add the "disable_legacy=off" QEMU device +property for the "virtio-transitional" devices -- libvirtd even moves +these devices from PCI Express Root Ports to a dedicated +"pcie-to-pci-bridge". This has the same effect on QEMU.) + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-5-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + output/create_libvirt_xml.ml | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml +index 9413cc0b..87bfab17 100644 +--- a/output/create_libvirt_xml.ml ++++ b/output/create_libvirt_xml.ml +@@ -312,18 +312,26 @@ let create_libvirt_xml ?pool source inspect + (* The devices. *) + let devices = ref [] in + ++ (* This will affect all of the virtio devices (if any). *) ++ let virtio_transitional = ++ guestcaps.gcaps_machine = Q35 && not guestcaps.gcaps_virtio_1_0 in ++ let virtio_model = ++ if virtio_transitional then "virtio-transitional" else "virtio" in ++ + (* Fixed and removable disks. *) + let () = +- let make_disk bus_name drive_prefix i = function ++ let make_disk bus_name ?(viotrans = false) drive_prefix i = function + | BusSlotEmpty -> Comment (sprintf "%s slot %d is empty" bus_name i) + + | BusSlotDisk d -> + let outdisk = outdisk_name d.s_disk_id in + +- e "disk" [ +- "type", if pool = None then "file" else "volume"; +- "device", "disk" +- ] [ ++ e "disk" ( ++ [ ++ "type", if pool = None then "file" else "volume"; ++ "device", "disk" ++ ] @ if (viotrans) then [ "model", "virtio-transitional" ] else [] ++ ) [ + e "driver" [ + "name", "qemu"; + "type", output_format; +@@ -364,7 +372,7 @@ let create_libvirt_xml ?pool source inspect + in + + List.push_back_list devices +- (List.mapi (make_disk "virtio" "vd") ++ (List.mapi (make_disk "virtio" ~viotrans:virtio_transitional "vd") + (Array.to_list target_buses.target_virtio_blk_bus)); + let ide_disks = + match guestcaps.gcaps_machine with +@@ -392,7 +400,7 @@ let create_libvirt_xml ?pool source inspect + let nics = + let net_model = + match guestcaps.gcaps_net_bus with +- | Virtio_net -> "virtio" | E1000 -> "e1000" | RTL8139 -> "rtl8139" in ++ | Virtio_net -> virtio_model | E1000 -> "e1000" | RTL8139 -> "rtl8139" in + List.map ( + fun { s_mac = mac; s_vnet_type = vnet_type; s_vnet = vnet } -> + let vnet_type_str = +@@ -483,7 +491,7 @@ let create_libvirt_xml ?pool source inspect + (* Miscellaneous KVM devices. *) + if guestcaps.gcaps_virtio_rng then + List.push_back devices ( +- e "rng" ["model", "virtio"] [ ++ e "rng" ["model", virtio_model] [ + (* XXX Using /dev/urandom requires libvirt >= 1.3.4. Libvirt + * was broken before that. + *) +@@ -496,7 +504,7 @@ let create_libvirt_xml ?pool source inspect + List.push_back devices ( + e "memballoon" + ["model", +- if guestcaps.gcaps_virtio_balloon then "virtio" else "none"] ++ if guestcaps.gcaps_virtio_balloon then virtio_model else "none"] + [] + ); + if guestcaps.gcaps_isa_pvpanic then +@@ -508,7 +516,7 @@ let create_libvirt_xml ?pool source inspect + List.push_back devices ( + e "viosock" + ["model", +- if guestcaps.gcaps_virtio_socket then "virtio" else "none"] ++ if guestcaps.gcaps_virtio_socket then virtio_model else "none"] + [] + ); + +-- +2.31.1 + diff --git a/0004-v2v-Swap-over-the-output-and-conversion-stages.patch b/0004-v2v-Swap-over-the-output-and-conversion-stages.patch deleted file mode 100644 index 7973de3..0000000 --- a/0004-v2v-Swap-over-the-output-and-conversion-stages.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 9b77e7e51f462cbac978adfcdbed18df112438c8 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sat, 18 Dec 2021 13:42:56 +0000 -Subject: [PATCH] v2v: Swap over the output and conversion stages - -In old virt-v2v, we did (approximately, since the steps were not as -clear): - - Input -> Convert -> Output -> Copy -> Finalize - -After modularizing virt-v2v we changed this to: - - Input -> Output -> Convert -> Copy -> Finalize - -However this has a (sort of) problem. For -o rhv-upload when we start -the nbdkit rhv-upload-plugin machinery, it obtains a time-limited -ticket from imageio. This ticket could expire if the conversion step -takes longer than a certain time (60 seconds by default, may be -increased in a future version of oVirt). - -I believe this is really a problem in imageio or that the -rhv-upload-plugin should really renew this ticket automatically, but -it does not, instead failing. (The ticket *is* renewed automatically -whenever a request is sent to imageio, but in this case no requests -are being sent). - -Anyway the easiest thing is to switch the ordering back to how it was -in old virt-v2v (at top). It doesn't make a difference for any other -output modes. - -Reported-by: Nir Soffer ---- - v2v/v2v.ml | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/v2v/v2v.ml b/v2v/v2v.ml -index a2414598..1db0c233 100644 ---- a/v2v/v2v.ml -+++ b/v2v/v2v.ml -@@ -542,6 +542,11 @@ read the man page virt-v2v(1). - exit 0 - ); - -+ (* Do the conversion. *) -+ with_open_out (tmpdir // "convert") (fun _ -> ()); -+ let inspect, target_meta = Convert.convert tmpdir conv_options source in -+ unlink (tmpdir // "convert"); -+ - (* Start the output module (runs an NBD server in the background). *) - let output_t = Output_module.setup tmpdir output_options source in - -@@ -551,11 +556,6 @@ read the man page virt-v2v(1). - ignore (Sys.command cmd) - ); - -- (* Do the conversion. *) -- with_open_out (tmpdir // "convert") (fun _ -> ()); -- let inspect, target_meta = Convert.convert tmpdir conv_options source in -- unlink (tmpdir // "convert"); -- - (* Do the copy. *) - with_open_out (tmpdir // "copy") (fun _ -> ()); - --- -2.19.1.3.g30247aa5d201 - diff --git a/0005-XXX-v2v-Remove-nbdcopy-request-size-4M-flag.patch b/0005-XXX-v2v-Remove-nbdcopy-request-size-4M-flag.patch deleted file mode 100644 index 25f84c6..0000000 --- a/0005-XXX-v2v-Remove-nbdcopy-request-size-4M-flag.patch +++ /dev/null @@ -1,61 +0,0 @@ -From a96669133e5aa5eb1269cf284f8bd7530a4e836a Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sat, 18 Dec 2021 13:40:08 +0000 -Subject: [PATCH] XXX v2v: Remove nbdcopy --request-size=4M flag - -XXX NEEDS BENCHMARKING XXX - -This was added when we were setting the cow-block-size to 1M. However -since commit 351d61f768 ("input: -it vddk: Reduce cow-block-size to 4K") -we stopped doing that so this is no longer needed. - -Reverts: commit 08e764959ec9dadd71a95d22d3d88d647a18d165 ---- - v2v/v2v.ml | 18 ++---------------- - 1 file changed, 2 insertions(+), 16 deletions(-) - -diff --git a/v2v/v2v.ml b/v2v/v2v.ml -index 1db0c233..47e6e937 100644 ---- a/v2v/v2v.ml -+++ b/v2v/v2v.ml -@@ -587,17 +587,7 @@ read the man page virt-v2v(1). - nbdinfo ~content:false output_uri - ); - -- (* At the moment, unconditionally set nbdcopy --request-size -- * to 4M (up from the default of 256K). With nbdkit + vddk + -- * cow + cow-block-size=1M this is necessary because requests -- * must be larger than the cow filter block size to avoid -- * breaking up reads. It probably doesn't affect other -- * modes, but in future consider setting this only for -- * specific input modes that adjust cow-block-size. -- *) -- let request_size = Some (4*1024*1024) in -- -- nbdcopy ?request_size output_alloc input_uri output_uri -+ nbdcopy output_alloc input_uri output_uri - ) disks; - - (* End of copying phase. *) -@@ -616,17 +606,13 @@ read the man page virt-v2v(1). - *) - with_open_out (tmpdir // "done") (fun _ -> ()) - --and nbdcopy ?request_size output_alloc input_uri output_uri = -+and nbdcopy output_alloc input_uri output_uri = - (* XXX It's possible that some output modes know whether - * --target-is-zero which would be a useful optimization. - *) - let cmd = ref [] in - List.push_back_list cmd [ "nbdcopy"; input_uri; output_uri ]; - List.push_back cmd "--flush"; -- (match request_size with -- | None -> () -- | Some size -> List.push_back cmd (sprintf "--request-size=%d" size) -- ); - (*List.push_back cmd "--verbose";*) - if not (quiet ()) then List.push_back cmd "--progress"; - if output_alloc = Types.Preallocated then List.push_back cmd "--allocated"; --- -2.19.1.3.g30247aa5d201 - diff --git a/0005-output-create_json-expose-gcaps_virtio_1_0.patch b/0005-output-create_json-expose-gcaps_virtio_1_0.patch new file mode 100644 index 0000000..ca3bb20 --- /dev/null +++ b/0005-output-create_json-expose-gcaps_virtio_1_0.patch @@ -0,0 +1,33 @@ +From 511910e1f7e956fb8a032c1c04fd0a983b2108df Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:06 +0100 +Subject: [PATCH] output/create_json: expose "gcaps_virtio_1_0" + +Let CNV / KubeVirt know about the "gcaps_virtio_1_0" field as well, so +that it can make the same determination from "machine" and +"gcaps_virtio_1_0" as virt-v2v does in the libvirt output (from an earlier +patch in this series). + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-6-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + output/create_json.ml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/output/create_json.ml b/output/create_json.ml +index b48902b7..985e10a9 100644 +--- a/output/create_json.ml ++++ b/output/create_json.ml +@@ -219,6 +219,7 @@ let create_json_metadata source inspect + "isa-pvpanic", JSON.Bool guestcaps.gcaps_isa_pvpanic; + "virtio-socket", JSON.Bool guestcaps.gcaps_virtio_socket; + "acpi", JSON.Bool guestcaps.gcaps_acpi; ++ "virtio-1-0", JSON.Bool guestcaps.gcaps_virtio_1_0; + ] in + List.push_back doc ("guestcaps", JSON.Dict guestcaps_dict); + +-- +2.31.1 + diff --git a/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch b/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch new file mode 100644 index 0000000..2288454 --- /dev/null +++ b/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch @@ -0,0 +1,165 @@ +From 46f5885dba1b669588d98eb840af454564d07cae Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:07 +0100 +Subject: [PATCH] convert/libosinfo: wrap osinfo_os_get_all_devices() + +Introduce the "osinfo_os.get_devices" OCaml method, for wrapping the +libosinfo API osinfo_os_get_all_devices(). + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-7-lersek@redhat.com> +[lersek@redhat.com: call OCaml values "v" (Rich)] +Acked-by: Richard W.M. Jones +--- + convert/libosinfo-c.c | 66 +++++++++++++++++++++++++++++++++++++++++++ + convert/libosinfo.ml | 14 +++++++++ + convert/libosinfo.mli | 14 +++++++++ + 3 files changed, 94 insertions(+) + +diff --git a/convert/libosinfo-c.c b/convert/libosinfo-c.c +index 09cf588d..b8e78bec 100644 +--- a/convert/libosinfo-c.c ++++ b/convert/libosinfo-c.c +@@ -50,6 +50,7 @@ + G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoFilter, g_object_unref) + G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoLoader, g_object_unref) + G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoOsList, g_object_unref) ++G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoDeviceList, g_object_unref) + #endif + + typedef OsinfoDb *OsinfoDb_t; +@@ -255,3 +256,68 @@ v2v_osinfo_os_get_device_drivers (value osv) + + CAMLreturn (rv); + } ++ ++/* Collect OsinfoDevice properties from two levels: ++ * ++ * - The OSINFO_ENTITY_PROP_ID property, originating from the OsinfoEntity base ++ * class. This is a unique URI, identifying the device. ++ * ++ * - All currently known OSINFO_DEVICE_PROP_* properties, originating from the ++ * OsinfoDevice class. ++ * ++ * All of the above properties have string values. Thus, for uniformity, access ++ * all these properties by their names at the OsinfoEntity level (i.e., forego ++ * the class- and property-specific, dedicated property getter functions). ++ */ ++static const char * const device_prop[] = { ++ OSINFO_ENTITY_PROP_ID, ++ OSINFO_DEVICE_PROP_VENDOR, ++ OSINFO_DEVICE_PROP_VENDOR_ID, ++ OSINFO_DEVICE_PROP_PRODUCT, ++ OSINFO_DEVICE_PROP_PRODUCT_ID, ++ OSINFO_DEVICE_PROP_NAME, ++ OSINFO_DEVICE_PROP_CLASS, ++ OSINFO_DEVICE_PROP_BUS_TYPE, ++ OSINFO_DEVICE_PROP_SUBSYSTEM, ++}; ++#define NUM_DEVICE_PROPS (sizeof device_prop / sizeof device_prop[0]) ++ ++value ++v2v_osinfo_os_get_all_devices (value osv) ++{ ++ CAMLparam1 (osv); ++ CAMLlocal3 (retvalv, linkv, propsv); ++ g_autoptr (OsinfoDeviceList) dev_list = NULL; ++ OsinfoList *ent_list; ++ gint ent_nr; ++ ++ retvalv = Val_emptylist; ++ dev_list = osinfo_os_get_all_devices (OsinfoOs_t_val (osv), NULL); ++ ent_list = OSINFO_LIST (dev_list); ++ ent_nr = osinfo_list_get_length (ent_list); ++ ++ while (ent_nr > 0) { ++ OsinfoEntity *ent; ++ size_t prop_nr; ++ ++ --ent_nr; ++ ent = osinfo_list_get_nth (ent_list, ent_nr); ++ ++ propsv = caml_alloc (NUM_DEVICE_PROPS, 0); ++ for (prop_nr = 0; prop_nr < NUM_DEVICE_PROPS; ++prop_nr) { ++ const gchar *prop_val; ++ ++ prop_val = osinfo_entity_get_param_value (ent, device_prop[prop_nr]); ++ if (prop_val == NULL) ++ prop_val = ""; ++ Store_field (propsv, prop_nr, caml_copy_string (prop_val)); ++ } ++ ++ linkv = caml_alloc (2, 0); ++ Store_field (linkv, 0, propsv); ++ Store_field (linkv, 1, retvalv); ++ retvalv = linkv; ++ } ++ ++ CAMLreturn (retvalv); ++} +diff --git a/convert/libosinfo.ml b/convert/libosinfo.ml +index bd9ca126..78271be2 100644 +--- a/convert/libosinfo.ml ++++ b/convert/libosinfo.ml +@@ -32,13 +32,27 @@ type osinfo_device_driver = { + files : string list; + } + ++type osinfo_device = { ++ id : string; ++ vendor : string; ++ vendor_id : string; ++ product : string; ++ product_id : string; ++ name : string; ++ class_ : string; ++ bus_type : string; ++ subsystem : string; ++} ++ + external osinfo_os_get_id : osinfo_os_t -> string = "v2v_osinfo_os_get_id" + external osinfo_os_get_device_drivers : osinfo_os_t -> osinfo_device_driver list = "v2v_osinfo_os_get_device_drivers" ++external osinfo_os_get_devices : osinfo_os_t -> osinfo_device list = "v2v_osinfo_os_get_all_devices" + + class osinfo_os h = + object (self) + method get_id () = osinfo_os_get_id h + method get_device_drivers () = osinfo_os_get_device_drivers h ++ method get_devices () = osinfo_os_get_devices h + end + + external osinfo_db_load : unit -> osinfo_db_t = "v2v_osinfo_db_load" +diff --git a/convert/libosinfo.mli b/convert/libosinfo.mli +index 0428ef91..1ece7b41 100644 +--- a/convert/libosinfo.mli ++++ b/convert/libosinfo.mli +@@ -29,11 +29,25 @@ type osinfo_device_driver = { + files : string list; + } + ++type osinfo_device = { ++ id : string; ++ vendor : string; ++ vendor_id : string; ++ product : string; ++ product_id : string; ++ name : string; ++ class_ : string; ++ bus_type : string; ++ subsystem : string; ++} ++ + class osinfo_os : osinfo_os_t -> object + method get_id : unit -> string + (** Return the ID. *) + method get_device_drivers : unit -> osinfo_device_driver list + (** Return the list of device drivers. *) ++ method get_devices : unit -> osinfo_device list ++ (** Return the list of devices. *) + end + (** Minimal OsinfoOs wrapper. *) + +-- +2.31.1 + diff --git a/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch b/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch new file mode 100644 index 0000000..d1c172a --- /dev/null +++ b/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch @@ -0,0 +1,77 @@ +From 00473c6ac09d85a6b6e1ce0cbe132e31407a2d00 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:08 +0100 +Subject: [PATCH] convert/libosinfo_utils: introduce + "string_of_osinfo_device_list" + +For debugging purposes, we'll want to print the list of devices returned +by the previously introduced "osinfo_os#get_devices" method. + +Format the device list as a nice table. + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-8-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + convert/libosinfo_utils.ml | 35 +++++++++++++++++++++++++++++++++++ + convert/libosinfo_utils.mli | 3 +++ + 2 files changed, 38 insertions(+) + +diff --git a/convert/libosinfo_utils.ml b/convert/libosinfo_utils.ml +index 1fc138cc..d5eb082b 100644 +--- a/convert/libosinfo_utils.ml ++++ b/convert/libosinfo_utils.ml +@@ -42,3 +42,38 @@ let string_of_osinfo_device_driver { Libosinfo.architecture; location; + (if signed then "signed" else "unsigned") + priority + (String.concat " " files) ++ ++let string_of_osinfo_device_list dev_list = ++ ++ (* Turn the fields of an "osinfo_device" record into a list. *) ++ let listify { Libosinfo.id; vendor; vendor_id; product; product_id; name; ++ class_; bus_type; subsystem } = ++ [ id; vendor; vendor_id; product; product_id; name; ++ class_; bus_type; subsystem ] ++ ++ (* Given a list of strings, and a list of previously known maximum widths, ++ * "increase" each width, if necessary, to the length of the corresponding ++ * string. ++ *) ++ and grow_widths = List.map2 (fun s -> max (String.length s)) ++ in ++ ++ (* Compute the maximum width for each field in "dev_list". *) ++ let max_widths = ++ List.fold_right grow_widths (List.map listify dev_list) ++ [ 0; 0; 0; 0; 0; 0; 0; 0; 0 ] ++ ++ (* Given a list of strings and a list of field widths, format "string1 | ++ * string2 | ... | stringN" such that each field is right-padded to the ++ * corresponding width. ++ *) ++ and columnate strings widths = ++ String.concat " | " (List.map2 (Printf.sprintf "%-*s") widths strings) ++ in ++ ++ (* Format "dev_list" as a table by (a) printing one "osinfo_device" record ++ * per line, and (b) right-padding each field of each "osinfo_device" record ++ * to the maximum width of that field. ++ *) ++ String.concat "\n" ++ (List.map (fun dev -> columnate (listify dev) max_widths) dev_list) +diff --git a/convert/libosinfo_utils.mli b/convert/libosinfo_utils.mli +index b3714d22..5a703334 100644 +--- a/convert/libosinfo_utils.mli ++++ b/convert/libosinfo_utils.mli +@@ -27,3 +27,6 @@ val get_os_by_short_id : string -> Libosinfo.osinfo_os + + val string_of_osinfo_device_driver : Libosinfo.osinfo_device_driver -> string + (** Convert a [osinfo_device_driver] to a printable string for debugging. *) ++ ++val string_of_osinfo_device_list : Libosinfo.osinfo_device list -> string ++(** Convert an [osinfo_device] list to a printable string for debugging. *) +-- +2.31.1 + diff --git a/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch b/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch new file mode 100644 index 0000000..a028887 --- /dev/null +++ b/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch @@ -0,0 +1,77 @@ +From 2a2d7e9e1376084670dbf8587549948713341153 Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:09 +0100 +Subject: [PATCH] convert/libosinfo_utils: introduce + "os_support_of_osinfo_device_list" + +Add a helper function for calculating q35 support and virtio-1.0 support +from the list of devices returned by the previously introduced +"osinfo_os#get_devices" method. + +(Rather than folding the list into a record of bools, implement the +function explicitly, recursively. Folding wouldn't stop (without abusing +exceptions) once all fields in the record turned "true", but a recursive +function can just return the accumulator at that point.) + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-9-lersek@redhat.com> +[lersek@redhat.com: don't break "in" to a new line after a "let" that + defines a non-function (Rich)] +Acked-by: Richard W.M. Jones +--- + convert/libosinfo_utils.ml | 18 ++++++++++++++++++ + convert/libosinfo_utils.mli | 14 ++++++++++++++ + 2 files changed, 32 insertions(+) + +diff --git a/convert/libosinfo_utils.ml b/convert/libosinfo_utils.ml +index d5eb082b..77f22272 100644 +--- a/convert/libosinfo_utils.ml ++++ b/convert/libosinfo_utils.ml +@@ -77,3 +77,21 @@ let string_of_osinfo_device_list dev_list = + *) + String.concat "\n" + (List.map (fun dev -> columnate (listify dev) max_widths) dev_list) ++ ++type os_support = { ++ q35 : bool; ++ vio10 : bool; ++} ++ ++let os_support_of_osinfo_device_list = ++ let rec next accu left = ++ match accu, left with ++ | { q35 = true; vio10 = true }, _ ++ | _ , [] -> ++ accu ++ | { q35; vio10 }, { Libosinfo.id } :: tail -> ++ let q35 = q35 || id = "http://qemu.org/chipset/x86/q35" ++ and vio10 = vio10 || id = "http://pcisig.com/pci/1af4/1041" in ++ next { q35; vio10 } tail ++ in ++ next { q35 = false; vio10 = false } +diff --git a/convert/libosinfo_utils.mli b/convert/libosinfo_utils.mli +index 5a703334..ab77ec97 100644 +--- a/convert/libosinfo_utils.mli ++++ b/convert/libosinfo_utils.mli +@@ -30,3 +30,17 @@ val string_of_osinfo_device_driver : Libosinfo.osinfo_device_driver -> string + + val string_of_osinfo_device_list : Libosinfo.osinfo_device list -> string + (** Convert an [osinfo_device] list to a printable string for debugging. *) ++ ++type os_support = { ++ q35 : bool; ++ vio10 : bool; ++} ++(** Tell whether the operating system supports the Q35 board type and/or ++ non-transitional (virtio-1.0-only) virtio devices. (Internally, the ++ virtio-1.0-net device is used as a proxy for the general statement about ++ virtio-1.0.) ++ *) ++ ++val os_support_of_osinfo_device_list : Libosinfo.osinfo_device list -> ++ os_support ++(** Get [os_support] from an [osinfo_device] list. *) +-- +2.31.1 + diff --git a/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch b/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch new file mode 100644 index 0000000..5ff3308 --- /dev/null +++ b/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch @@ -0,0 +1,207 @@ +From f0cea012d0183edf6f7b769c28d5038593f3fe6a Mon Sep 17 00:00:00 2001 +From: Laszlo Ersek +Date: Thu, 6 Jan 2022 15:09:10 +0100 +Subject: [PATCH] convert: determine machine type and virtio-1.0 from osinfo + for x86 guests + +Determine the machine type and virtio-1.0 support from osinfo, for x86 +guests. This connects the previous two parts of this series. + +Keep the original logic from commit ac39fa292c31 ("v2v: Set machine type +explicitly for outputs which support it (RHBZ#1581428).", 2020-12-04) for +non-x86 guests, and for the case when libosinfo does not recognize the +guest OS. + +Update the "cdrom", "floppy", and "i-ova" test cases, which all use a +(phony) Windows 7 image -- Windows 7 does not support virtio-1.0-only +devices, according to libosinfo. + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 +Signed-off-by: Laszlo Ersek +Message-Id: <20220106140910.13695-10-lersek@redhat.com> +Acked-by: Richard W.M. Jones +--- + convert/convert_linux.ml | 51 +++++++++++++++++++++------------- + convert/convert_windows.ml | 32 ++++++++++++++------- + tests/test-v2v-cdrom.expected | 2 +- + tests/test-v2v-floppy.expected | 2 +- + tests/test-v2v-i-ova.xml | 8 +++--- + 5 files changed, 60 insertions(+), 35 deletions(-) + +diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml +index 3f1114ad..45ce069a 100644 +--- a/convert/convert_linux.ml ++++ b/convert/convert_linux.ml +@@ -123,26 +123,39 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = + + SELinux_relabel.relabel g; + +- (* Pivot on the year 2007. Any Linux distro from earlier than +- * 2007 should use i440fx, anything 2007 or newer should use q35. +- * XXX Look up this information in libosinfo in future. +- *) +- let machine = +- match inspect.i_arch, inspect.i_distro, inspect.i_major_version with +- | ("i386"|"x86_64"), "fedora", _ -> Q35 +- | ("i386"|"x86_64"), ("rhel"|"centos"|"scientificlinux"| +- "redhat-based"|"oraclelinux"), major -> +- if major <= 4 then I440FX else Q35 +- | ("i386"|"x86_64"), ("sles"|"suse-based"|"opensuse"), major -> +- if major < 10 then I440FX else Q35 +- | ("i386"|"x86_64"), ("debian"|"ubuntu"|"linuxmint"| +- "kalilinux"), major -> +- if major < 4 then I440FX else Q35 ++ let machine, virtio_1_0 = ++ match inspect.i_arch with ++ | ("i386"|"x86_64") -> ++ (try ++ let os = Libosinfo_utils.get_os_by_short_id inspect.i_osinfo in ++ let devices = os#get_devices () in ++ debug "libosinfo devices for OS \"%s\":\n%s" inspect.i_osinfo ++ (Libosinfo_utils.string_of_osinfo_device_list devices); ++ let { Libosinfo_utils.q35; vio10 } = ++ Libosinfo_utils.os_support_of_osinfo_device_list devices in ++ (if q35 then Q35 else I440FX), vio10 ++ with ++ | Not_found -> ++ (* Pivot on the year 2007. Any Linux distro from earlier than 2007 ++ * should use i440fx, anything 2007 or newer should use q35. ++ *) ++ (match inspect.i_distro, inspect.i_major_version with ++ | "fedora", _ -> Q35 ++ | ("rhel"|"centos"|"scientificlinux"|"redhat-based"|"oraclelinux"), ++ major -> ++ if major <= 4 then I440FX else Q35 ++ | ("sles"|"suse-based"|"opensuse"), major -> ++ if major < 10 then I440FX else Q35 ++ | ("debian"|"ubuntu"|"linuxmint"|"kalilinux"), major -> ++ if major < 4 then I440FX else Q35 + +- (* reasonable default for all modern Linux kernels *) +- | ("i386"|"x86_64"), _, _ -> Q35 ++ (* reasonable default for all modern Linux kernels *) ++ | _, _ -> Q35 ++ ), true ++ ) + +- | _ -> Virt in ++ | _ -> Virt, true ++ in + + (* Return guest capabilities from the convert () function. *) + let guestcaps = { +@@ -155,7 +168,7 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = + gcaps_machine = machine; + gcaps_arch = Utils.kvm_arch inspect.i_arch; + gcaps_acpi = acpi; +- gcaps_virtio_1_0 = true; ++ gcaps_virtio_1_0 = virtio_1_0; + } in + + guestcaps +diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml +index 30e494ea..1c2d17f2 100644 +--- a/convert/convert_windows.ml ++++ b/convert/convert_windows.ml +@@ -238,15 +238,27 @@ let convert (g : G.guestfs) _ inspect _ static_ips = + warning (f_"this guest has Anti-Virus (AV) software and a new virtio block device driver was installed. In some circumstances, AV may prevent new drivers from working (resulting in a 7B boot error). If this happens, try disabling AV before doing the conversion."); + ); + +- (* Pivot on the year 2007. Any Windows version from earlier than +- * 2007 should use i440fx, anything 2007 or newer should use q35. +- * Luckily this coincides almost exactly with the release of NT 6. +- * XXX Look up this information in libosinfo in future. +- *) +- let machine = +- match inspect.i_arch, inspect.i_major_version with +- | ("i386"|"x86_64"), major -> if major < 6 then I440FX else Q35 +- | _ -> Virt in ++ let machine, virtio_1_0 = ++ match inspect.i_arch with ++ | ("i386"|"x86_64") -> ++ (try ++ let os = Libosinfo_utils.get_os_by_short_id inspect.i_osinfo in ++ let devices = os#get_devices () in ++ debug "libosinfo devices for OS \"%s\":\n%s" inspect.i_osinfo ++ (Libosinfo_utils.string_of_osinfo_device_list devices); ++ let { Libosinfo_utils.q35; vio10 } = ++ Libosinfo_utils.os_support_of_osinfo_device_list devices in ++ (if q35 then Q35 else I440FX), vio10 ++ with ++ | Not_found -> ++ (* Pivot on the year 2007. Any Windows version from earlier than ++ * 2007 should use i440fx, anything 2007 or newer should use q35. ++ * Luckily this coincides almost exactly with the release of NT 6. ++ *) ++ (if inspect.i_major_version < 6 then I440FX else Q35), true ++ ) ++ | _ -> Virt, true ++ in + + (* Return guest capabilities from the convert () function. *) + let guestcaps = { +@@ -259,7 +271,7 @@ let convert (g : G.guestfs) _ inspect _ static_ips = + gcaps_machine = machine; + gcaps_arch = Utils.kvm_arch inspect.i_arch; + gcaps_acpi = true; +- gcaps_virtio_1_0 = true; ++ gcaps_virtio_1_0 = virtio_1_0; + } in + + guestcaps +diff --git a/tests/test-v2v-cdrom.expected b/tests/test-v2v-cdrom.expected +index 17bd152d..b9504929 100644 +--- a/tests/test-v2v-cdrom.expected ++++ b/tests/test-v2v-cdrom.expected +@@ -1,4 +1,4 @@ +- ++ + + + +diff --git a/tests/test-v2v-floppy.expected b/tests/test-v2v-floppy.expected +index a718c21f..f4b67954 100644 +--- a/tests/test-v2v-floppy.expected ++++ b/tests/test-v2v-floppy.expected +@@ -1,4 +1,4 @@ +- ++ + + + +diff --git a/tests/test-v2v-i-ova.xml b/tests/test-v2v-i-ova.xml +index 9f3c1974..2b6a8de0 100644 +--- a/tests/test-v2v-i-ova.xml ++++ b/tests/test-v2v-i-ova.xml +@@ -21,7 +21,7 @@ + restart + restart + +- ++ + + + +@@ -36,16 +36,16 @@ + + + +- ++ + + + +- ++ + /dev/urandom + +- ++ + + + +-- +2.31.1 + diff --git a/0006-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-RHBZ-1147313.patch b/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch similarity index 92% rename from 0006-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-RHBZ-1147313.patch rename to 0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch index 1c689f2..75782c2 100644 --- a/0006-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-RHBZ-1147313.patch +++ b/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch @@ -1,4 +1,4 @@ -From 5c115d2e7214f1b8bc0c0f19f099bb6e381c6265 Mon Sep 17 00:00:00 2001 +From 44314b8d8d201e6043b7148240446c98c726bc95 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 28 Sep 2014 19:14:43 +0100 Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode @@ -29,5 +29,5 @@ index 0aac1eba..c4265703 100644 let flag = Qemuopts.flag cmd and arg = Qemuopts.arg cmd -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0007-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-RHBZ-1147313.patch b/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch similarity index 97% rename from 0007-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-RHBZ-1147313.patch rename to 0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch index 9da0135..6807c80 100644 --- a/0007-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-RHBZ-1147313.patch +++ b/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -1,4 +1,4 @@ -From 79d50860b2b16c8668c7bbd3a26972841ec0517d Mon Sep 17 00:00:00 2001 +From 1c1eb51b4f7e9d5f1e2aef7d695181a14fbd0a7d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 30 Sep 2014 10:50:27 +0100 Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option @@ -108,5 +108,5 @@ index 47e6e937..503dfb55 100644 s_"How to choose root filesystem"; [ L"vddk-config" ], Getopt.String ("filename", set_input_option_compat "vddk-config"), -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0008-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL-qemu-RHBZ-1176493.patch b/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch similarity index 89% rename from 0008-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL-qemu-RHBZ-1176493.patch rename to 0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch index 7ab8048..dc4ce8c 100644 --- a/0008-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL-qemu-RHBZ-1176493.patch +++ b/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -1,4 +1,4 @@ -From 3d3810f4e8fbde3fa21728c718a0d0ec14efe275 Mon Sep 17 00:00:00 2001 +From 281273484f675b3ddba584ddc9751fc74653e67f Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 24 Apr 2015 09:45:41 -0400 Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu @@ -30,5 +30,5 @@ index d6861d08..a2fccf29 100644 (* Find the UEFI firmware. *) let find_uefi_firmware guest_arch = -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0009-RHEL-Fixes-for-libguestfs-winsupport.patch b/0013-RHEL-Fixes-for-libguestfs-winsupport.patch similarity index 97% rename from 0009-RHEL-Fixes-for-libguestfs-winsupport.patch rename to 0013-RHEL-Fixes-for-libguestfs-winsupport.patch index 8381ecf..2d487e2 100644 --- a/0009-RHEL-Fixes-for-libguestfs-winsupport.patch +++ b/0013-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -1,4 +1,4 @@ -From 68d728c2642f15005811d2878f76f4c31266ff7a Mon Sep 17 00:00:00 2001 +From aa4e5271d3fe02f252ace148b89e9894436a79fb Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 30 Aug 2015 03:21:57 -0400 Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport. @@ -100,5 +100,5 @@ index a4cf191d..1ff41f6a 100755 # We also update the Registry several times, for firstboot, and (ONLY -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0010-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch similarity index 91% rename from 0010-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch rename to 0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch index c3aff7a..f40d1f3 100644 --- a/0010-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ b/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -1,4 +1,4 @@ -From 9439bad9c940556c33a241c59e38ff35f0ac0284 Mon Sep 17 00:00:00 2001 +From a6b21f626a74c436563c14751f19f60a6433e153 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Mar 2017 14:21:37 +0100 Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) @@ -22,5 +22,5 @@ index 0d92f256..753938f6 100644 s_sound = None; s_disks = s_disks; -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0011-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch b/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch similarity index 89% rename from 0011-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch rename to 0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch index a8e98b8..1180918 100644 --- a/0011-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch +++ b/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch @@ -1,4 +1,4 @@ -From 151c1c3c78020c73156d7be66886ca4c92b295ff Mon Sep 17 00:00:00 2001 +From 621a424738cb94f387171992af5352305121da6b Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Wed, 8 Mar 2017 11:03:40 +0100 Subject: [PATCH] RHEL: v2v: do not mention SUSE Xen hosts (RHBZ#1430203) @@ -22,5 +22,5 @@ index cd3210bf..e9f336a9 100644 =head1 INPUT FROM XEN -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guests.patch b/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch similarity index 96% rename from 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guests.patch rename to 0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch index 2d02cd3..cf87964 100644 --- a/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guests.patch +++ b/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -1,4 +1,4 @@ -From 77696ce54071f741a44061a7112fb724e3ab25f4 Mon Sep 17 00:00:00 2001 +From af0265e36747be9e6e4d7f91af2529f20e91e7ab Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Tue, 26 Mar 2019 09:42:25 +0100 Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests @@ -123,5 +123,5 @@ index 9815f51f..1ffc0f9d 100644 =head2 Guest firmware -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0013-RHEL-Disable-o-glance.patch b/0017-RHEL-Disable-o-glance.patch similarity index 98% rename from 0013-RHEL-Disable-o-glance.patch rename to 0017-RHEL-Disable-o-glance.patch index c95683f..e5446dd 100644 --- a/0013-RHEL-Disable-o-glance.patch +++ b/0017-RHEL-Disable-o-glance.patch @@ -1,4 +1,4 @@ -From 6b1c1c4a3001a5c8a1adaa020968a390dd593c95 Mon Sep 17 00:00:00 2001 +From afec4c531c71de4f98115258d3eee17a25afae5e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 30 Jun 2021 11:15:52 +0100 Subject: [PATCH] RHEL: Disable -o glance @@ -215,5 +215,5 @@ index 503dfb55..39fef0fa 100644 | `RHV_Upload -> (module Output_rhv_upload.RHVUpload) | `RHV -> (module Output_rhv.RHV) -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/0014-RHEL-Remove-the-in-place-option.patch b/0018-RHEL-Remove-the-in-place-option.patch similarity index 98% rename from 0014-RHEL-Remove-the-in-place-option.patch rename to 0018-RHEL-Remove-the-in-place-option.patch index 9ee8447..7ce8c7b 100644 --- a/0014-RHEL-Remove-the-in-place-option.patch +++ b/0018-RHEL-Remove-the-in-place-option.patch @@ -1,4 +1,4 @@ -From 31a6a8283c5d7ccfe96f67fabb81a21a02631e93 Mon Sep 17 00:00:00 2001 +From 39f31f9c86ed94699382b2c4d683fc1fd0d59195 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Dec 2021 11:56:05 +0000 Subject: [PATCH] RHEL: Remove the --in-place option @@ -148,5 +148,5 @@ index 39fef0fa..a1143b68 100644 pr "mac-option\n"; pr "bandwidth-option\n"; -- -2.19.1.3.g30247aa5d201 +2.31.1 diff --git a/sources b/sources index f3c4a1b..d40f0e3 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (virt-v2v-1.45.95.tar.gz) = 2d408d98d8a67f0aed264cb15fb69d9e5ab4f9b31577ae58a0da7d180f705efb81997308fade3018d16b816a3e3e789927c1a1f03ddc9c02883c37ca0f70e3db -SHA512 (virt-v2v-1.45.95.tar.gz.sig) = cfa919ae26f9497f113c85fa320797eca6977cabc91048cbeacc97e596439fdc93fa9feba2fb3ed1164c7e221dc993344faa4ce07214ee2a697dbd0dc06daf77 +SHA512 (virt-v2v-1.45.96.tar.gz) = f4349ce19761db32905395a1ce4bb893eb68823808386edce656bcd452aac1c82d39a6af6e17f226c04e027199cb71b27c42a52bfc4b9153cb31e4c5c1988b49 +SHA512 (virt-v2v-1.45.96.tar.gz.sig) = b0bd15eef79267ca93c0af96e5af041fd006dc9e50e25a3afb6a08257bc5ac997690dd5daf993c9fa14428fff2a4e5cca5934adeafc537a47d17c833d004ab1b diff --git a/virt-v2v.spec b/virt-v2v.spec index 3f894bc..13f3c2c 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -14,8 +14,8 @@ Name: virt-v2v Epoch: 1 -Version: 1.45.95 -Release: 3%{?dist} +Version: 1.45.96 +Release: 1%{?dist} Summary: Convert a virtual machine to run on KVM License: GPLv2+ @@ -51,20 +51,24 @@ ExclusiveArch: x86_64 # Downstream (RHEL-only) patches. %if 0%{?rhel} # Patches. -Patch0001: 0001-input-output-Use-Option.may-for-some-Nbdkit-calls.patch -Patch0002: 0002-input-nbdkit_curl.ml-Fix-typo-in-commented-code.patch -Patch0003: 0003-output_rhv-restrict-block-status-collection-to-the-old-RHV-output.patch -Patch0004: 0004-v2v-Swap-over-the-output-and-conversion-stages.patch -Patch0005: 0005-XXX-v2v-Remove-nbdcopy-request-size-4M-flag.patch -Patch0006: 0006-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-RHBZ-1147313.patch -Patch0007: 0007-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-RHBZ-1147313.patch -Patch0008: 0008-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL-qemu-RHBZ-1176493.patch -Patch0009: 0009-RHEL-Fixes-for-libguestfs-winsupport.patch -Patch0010: 0010-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch -Patch0011: 0011-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch -Patch0012: 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guests.patch -Patch0013: 0013-RHEL-Disable-o-glance.patch -Patch0014: 0014-RHEL-Remove-the-in-place-option.patch +Patch0001: 0001-lib-types-reformat-string_of_guestcaps.patch +Patch0002: 0002-lib-types-update-string_of_guestcaps.patch +Patch0003: 0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch +Patch0004: 0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch +Patch0005: 0005-output-create_json-expose-gcaps_virtio_1_0.patch +Patch0006: 0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch +Patch0007: 0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch +Patch0008: 0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch +Patch0009: 0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch +Patch0010: 0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +Patch0011: 0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +Patch0012: 0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +Patch0013: 0013-RHEL-Fixes-for-libguestfs-winsupport.patch +Patch0014: 0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +Patch0015: 0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch +Patch0016: 0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +Patch0017: 0017-RHEL-Disable-o-glance.patch +Patch0018: 0018-RHEL-Remove-the-in-place-option.patch %endif %if 0%{patches_touch_autotools} @@ -305,6 +309,12 @@ popd %changelog +* Thu Jan 06 2022 Richard W.M. Jones - 1:1.45.96-1 +- Rebase to upstream 1.45.96. + resolves: rhbz#2011713 +- Add virtio-transitional for older guests when converting to q35 + resolves: rhbz#1942325 + * Thu Dec 23 2021 Laszlo Ersek - 1:1.45.95-3 - output_rhv: restrict block status collection to the old RHV output - Rebase from upstream commit 702a511b7f33 to direct child commit 07b12fe99fb9