diff --git a/.gitignore b/.gitignore
index fd61af7..03f099e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 SOURCES/libguestfs.keyring
-SOURCES/virt-v2v-1.45.96.tar.gz
+SOURCES/virt-v2v-1.45.99.tar.gz
diff --git a/.virt-v2v.metadata b/.virt-v2v.metadata
index e7f2c5f..b23fd2f 100644
--- a/.virt-v2v.metadata
+++ b/.virt-v2v.metadata
@@ -1,2 +1,2 @@
 1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring
-cbb9faca2b2ddbda18b67724740b797bc40af25e SOURCES/virt-v2v-1.45.96.tar.gz
+23d3b578404a991563d2af88d3118cdbce27a110 SOURCES/virt-v2v-1.45.99.tar.gz
diff --git a/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
new file mode 100644
index 0000000..6ebb95a
--- /dev/null
+++ b/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
@@ -0,0 +1,33 @@
+From 5b3653332be7b739755f53cca19ce10768585a61 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Sun, 28 Sep 2014 19:14:43 +0100
+Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode
+ (RHBZ#1147313).
+
+RHEL does not have qemu-system-x86_64 (etc), and in addition the
+qemu binary is located in /usr/libexec.  Encode the path to this
+binary directly in the script.
+
+Note that we don't support people running qemu directly like this.
+It's just for quick testing of converted VMs, and to help us with
+support cases.
+---
+ output/output_qemu.ml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/output/output_qemu.ml b/output/output_qemu.ml
+index f8d2e171..700de058 100644
+--- a/output/output_qemu.ml
++++ b/output/output_qemu.ml
+@@ -137,7 +137,7 @@ module QEMU = struct
+      * module deals with shell and qemu comma quoting.
+      *)
+     let cmd = Qemuopts.create () in
+-    Qemuopts.set_binary_by_arch cmd (Some guestcaps.gcaps_arch);
++    Qemuopts.set_binary cmd "/usr/libexec/qemu-kvm";
+ 
+     let flag = Qemuopts.flag cmd
+     and arg = Qemuopts.arg cmd
+-- 
+2.31.1
+
diff --git a/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch b/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch
deleted file mode 100644
index c5a00f9..0000000
--- a/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From dc69bb6033bd41b79e6203080059d4f3b0eb8027 Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-2-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
new file mode 100644
index 0000000..3e92059
--- /dev/null
+++ b/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
@@ -0,0 +1,112 @@
+From b896dab3d8d4226b246e2e90d07235a38b6c8a79 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Tue, 30 Sep 2014 10:50:27 +0100
+Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option
+ (RHBZ#1147313).
+
+This cannot work because there is no Gtk or SDL output mode
+in RHEL's qemu-kvm.
+
+In addition you will have to edit the -display option in the
+qemu script.
+---
+ docs/virt-v2v-output-local.pod |  6 ++----
+ docs/virt-v2v.pod              | 12 ------------
+ output/output_qemu.ml          |  3 +++
+ v2v/v2v.ml                     |  2 --
+ 4 files changed, 5 insertions(+), 18 deletions(-)
+
+diff --git a/docs/virt-v2v-output-local.pod b/docs/virt-v2v-output-local.pod
+index a5f155cb..3a2e6238 100644
+--- a/docs/virt-v2v-output-local.pod
++++ b/docs/virt-v2v-output-local.pod
+@@ -9,7 +9,7 @@ or libvirt
+ 
+  virt-v2v [-i* options] -o local -os DIRECTORY
+ 
+- virt-v2v [-i* options] -o qemu -os DIRECTORY [--qemu-boot]
++ virt-v2v [-i* options] -o qemu -os DIRECTORY
+ 
+  virt-v2v [-i* options] -o json -os DIRECTORY
+                         [-oo json-disks-pattern=PATTERN]
+@@ -50,12 +50,10 @@ where C<NAME> is the guest name.
+ 
+ =item B<-o qemu -os> C<DIRECTORY>
+ 
+-=item B<-o qemu -os> C<DIRECTORY> B<--qemu-boot>
+-
+ This converts the guest to files in C<DIRECTORY>.  Unlike I<-o local>
+ above, a shell script is created which contains the raw qemu command
+ you would need to boot the guest.  However the shell script is not
+-run, I<unless> you also add the I<--qemu-boot> option.
++run.
+ 
+ =item B<-o json -os> C<DIRECTORY>
+ 
+diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
+index f50d27a0..9b1e44a1 100644
+--- a/docs/virt-v2v.pod
++++ b/docs/virt-v2v.pod
+@@ -140,11 +140,6 @@ Since F<guest-domain.xml> contains the path(s) to the guest disk
+ image(s) you do not need to specify the name of the disk image on the
+ command line.
+ 
+-To convert a local disk image and immediately boot it in local
+-qemu, do:
+-
+- virt-v2v -i disk disk.img -o qemu -os /var/tmp -oo qemu-boot
+-
+ =head1 OPTIONS
+ 
+ =over 4
+@@ -509,9 +504,6 @@ This is similar to I<-o local>, except that a shell script is written
+ which you can use to boot the guest in qemu.  The converted disks and
+ shell script are written to the directory specified by I<-os>.
+ 
+-When using this output mode, you can also specify the I<-oo qemu-boot>
+-option which boots the guest under qemu immediately.
+-
+ =item B<-o> B<rhev>
+ 
+ This is the same as I<-o rhv>.
+@@ -765,10 +757,6 @@ Print information about the source guest and stop.  This option is
+ useful when you are setting up network and bridge maps.
+ See L</Networks and bridges>.
+ 
+-=item B<--qemu-boot>
+-
+-This is the same as I<-oo qemu-boot>.
+-
+ =item B<-q>
+ 
+ =item B<--quiet>
+diff --git a/output/output_qemu.ml b/output/output_qemu.ml
+index 700de058..3ad98a58 100644
+--- a/output/output_qemu.ml
++++ b/output/output_qemu.ml
+@@ -63,6 +63,9 @@ module QEMU = struct
+       ) options.output_options;
+     let qemu_boot = !qemu_boot in
+ 
++    if qemu_boot then
++      error (f_"-o qemu: the -oo qemu-boot option cannot be used in RHEL");
++
+     (* -os must be set to a directory. *)
+     let output_storage =
+       match options.output_storage with
+diff --git a/v2v/v2v.ml b/v2v/v2v.ml
+index 7bd47c1e..a66fa285 100644
+--- a/v2v/v2v.ml
++++ b/v2v/v2v.ml
+@@ -277,8 +277,6 @@ let rec main () =
+       s_"Same as ‘-ip filename’";
+     [ L"print-source" ], Getopt.Set print_source,
+       s_"Print source and stop";
+-    [ L"qemu-boot" ], Getopt.Unit (fun () -> set_output_option_compat "qemu-boot" ""),
+-      s_"Boot in qemu (-o qemu only)";
+     [ L"root" ],     Getopt.String ("ask|... ", set_root_choice),
+       s_"How to choose root filesystem";
+     [ L"vddk-config" ], Getopt.String ("filename", set_input_option_compat "vddk-config"),
+-- 
+2.31.1
+
diff --git a/SOURCES/0002-lib-types-update-string_of_guestcaps.patch b/SOURCES/0002-lib-types-update-string_of_guestcaps.patch
deleted file mode 100644
index d5cc9bf..0000000
--- a/SOURCES/0002-lib-types-update-string_of_guestcaps.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 08786886302cceb7ee73cfa6c01325f690a3c094 Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-3-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
new file mode 100644
index 0000000..03d0f3b
--- /dev/null
+++ b/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
@@ -0,0 +1,34 @@
+From 3745743d97bc432854750afd6d04d6391f19bf2f Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Fri, 24 Apr 2015 09:45:41 -0400
+Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
+ (RHBZ#1176493).
+
+---
+ lib/utils.ml | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/lib/utils.ml b/lib/utils.ml
+index 4c8998c2..7b16dd8b 100644
+--- a/lib/utils.ml
++++ b/lib/utils.ml
+@@ -59,13 +59,14 @@ let kvm_arch = function
+ (* Does qemu support the given sound card? *)
+ let qemu_supports_sound_card = function
+   | Types.AC97
+-  | Types.ES1370
+   | Types.ICH6
+   | Types.ICH9
+   | Types.PCSpeaker
++    -> true
++  | Types.ES1370
+   | Types.SB16
+   | Types.USBAudio
+-    -> true
++    -> false
+ 
+ (* Find the UEFI firmware. *)
+ let find_uefi_firmware guest_arch =
+-- 
+2.31.1
+
diff --git a/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch b/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch
deleted file mode 100644
index bb0180f..0000000
--- a/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 789017805ad0ddfacfb16d39313ef8b2f8f478ac Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-4-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch b/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch
new file mode 100644
index 0000000..0294186
--- /dev/null
+++ b/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch
@@ -0,0 +1,104 @@
+From f7ed42f475271291d126084cb92157974ea274c6 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Sun, 30 Aug 2015 03:21:57 -0400
+Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport.
+
+In tests we cannot use guestfish for arbitrary Windows edits.
+In virt-v2v helpers we must set the program name to virt-v2v.
+---
+ convert/convert.ml                         | 1 +
+ convert/windows_virtio.ml                  | 1 +
+ test-data/phony-guests/make-windows-img.sh | 1 +
+ tests/test-v2v-virtio-win-iso.sh           | 8 +++++++-
+ tests/test-v2v-windows-conversion.sh       | 8 +++++++-
+ 5 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/convert/convert.ml b/convert/convert.ml
+index 87fca725..5e0e6c2b 100644
+--- a/convert/convert.ml
++++ b/convert/convert.ml
+@@ -51,6 +51,7 @@ let rec convert dir options source =
+ 
+   message (f_"Opening the source");
+   let g = open_guestfs ~identifier:"v2v" () in
++  g#set_program "virt-v2v";
+   g#set_memsize (g#get_memsize () * 2);
+   (* Setting the number of vCPUs allows parallel mkinitrd, but make
+    * sure this is not too large because each vCPU consumes guest RAM.
+diff --git a/convert/windows_virtio.ml b/convert/windows_virtio.ml
+index 5254322c..301f7544 100644
+--- a/convert/windows_virtio.ml
++++ b/convert/windows_virtio.ml
+@@ -283,6 +283,7 @@ and copy_from_virtio_win g inspect srcdir destdir filter missing =
+     let g2 =
+       try
+         let g2 = open_guestfs ~identifier:"virtio_win" () in
++        g#set_program "virt-v2v";
+         g2#add_drive_opts virtio_win ~readonly:true;
+         g2#launch ();
+         g2
+diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
+index 30908a91..73cf5144 100755
+--- a/test-data/phony-guests/make-windows-img.sh
++++ b/test-data/phony-guests/make-windows-img.sh
+@@ -37,6 +37,7 @@ fi
+ 
+ # Create a disk image.
+ guestfish <<EOF
++set-program virt-testing
+ sparse windows.img-t 512M
+ run
+ 
+diff --git a/tests/test-v2v-virtio-win-iso.sh b/tests/test-v2v-virtio-win-iso.sh
+index 69f6f414..b9b806fb 100755
+--- a/tests/test-v2v-virtio-win-iso.sh
++++ b/tests/test-v2v-virtio-win-iso.sh
+@@ -82,6 +82,12 @@ mktest ()
+ :> "$script"
+ :> "$expected"
+ 
++cat >> "$script" <<EOF
++  set-program virt-testing
++  run
++  mount /dev/sda2 /
++EOF
++
+ firstboot_dir="/Program Files/Guestfs/Firstboot"
+ mktest "is-dir \"$firstboot_dir\"" true
+ mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
+@@ -94,5 +100,5 @@ for drv in netkvm vioscsi viostor; do
+     done
+ done
+ 
+-guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
++guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
+ diff -u "$expected" "$response"
+diff --git a/tests/test-v2v-windows-conversion.sh b/tests/test-v2v-windows-conversion.sh
+index a4cf191d..1ff41f6a 100755
+--- a/tests/test-v2v-windows-conversion.sh
++++ b/tests/test-v2v-windows-conversion.sh
+@@ -76,6 +76,12 @@ mktest ()
+ :> "$script"
+ :> "$expected"
+ 
++cat >> "$script" <<EOF
++  set-program virt-testing
++  run
++  mount /dev/sda2 /
++EOF
++
+ firstboot_dir="/Program Files/Guestfs/Firstboot"
+ mktest "is-dir \"$firstboot_dir\"" true
+ mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
+@@ -88,7 +94,7 @@ for drv in netkvm vioscsi viostor; do
+     done
+ done
+ 
+-guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
++guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
+ diff -u "$expected" "$response"
+ 
+ # We also update the Registry several times, for firstboot, and (ONLY
+-- 
+2.31.1
+
diff --git a/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch b/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch
deleted file mode 100644
index f1c7554..0000000
--- a/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From e4cf85bd3ad44aed28cf3e8d3bfd67fec38ebdab Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-5-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
new file mode 100644
index 0000000..1d6a671
--- /dev/null
+++ b/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
@@ -0,0 +1,26 @@
+From 46c843f5d5f19aad7bbfe155d20d5d9f26f8a030 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Thu, 2 Mar 2017 14:21:37 +0100
+Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)
+
+The SDL output mode is not supported in RHEL's qemu-kvm.
+---
+ input/input_disk.ml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/input/input_disk.ml b/input/input_disk.ml
+index 9fd08639..dc3bed6f 100644
+--- a/input/input_disk.ml
++++ b/input/input_disk.ml
+@@ -76,7 +76,7 @@ module Disk = struct
+       s_features = [ "acpi"; "apic"; "pae" ];
+       s_firmware = UnknownFirmware; (* causes virt-v2v to autodetect *)
+       s_display =
+-        Some { s_display_type = Window; s_keymap = None; s_password = None;
++        Some { s_display_type = VNC; s_keymap = None; s_password = None;
+                s_listen = LNoListen; s_port = None };
+       s_sound = None;
+       s_disks = s_disks;
+-- 
+2.31.1
+
diff --git a/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch b/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch
deleted file mode 100644
index ca3bb20..0000000
--- a/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 511910e1f7e956fb8a032c1c04fd0a983b2108df Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-6-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch b/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch
new file mode 100644
index 0000000..09ed254
--- /dev/null
+++ b/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch
@@ -0,0 +1,26 @@
+From 70b8b26867ca0c4a142f3fb436e4dbb66a01f187 Mon Sep 17 00:00:00 2001
+From: Pino Toscano <ptoscano@redhat.com>
+Date: Wed, 8 Mar 2017 11:03:40 +0100
+Subject: [PATCH] RHEL: v2v: do not mention SUSE Xen hosts (RHBZ#1430203)
+
+They are not supported in RHEL.
+---
+ docs/virt-v2v-input-xen.pod | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/virt-v2v-input-xen.pod b/docs/virt-v2v-input-xen.pod
+index c4948e5e..97727b8f 100644
+--- a/docs/virt-v2v-input-xen.pod
++++ b/docs/virt-v2v-input-xen.pod
+@@ -11,7 +11,7 @@ virt-v2v-input-xen - Using virt-v2v to convert guests from Xen
+ =head1 DESCRIPTION
+ 
+ This page documents how to use L<virt-v2v(1)> to convert guests from
+-RHEL 5 Xen, or SLES and OpenSUSE Xen hosts.
++RHEL 5 Xen hosts.
+ 
+ =head1 INPUT FROM XEN
+ 
+-- 
+2.31.1
+
diff --git a/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch b/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch
deleted file mode 100644
index 2288454..0000000
--- a/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From 46f5885dba1b669588d98eb840af454564d07cae Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-7-lersek@redhat.com>
-[lersek@redhat.com: call OCaml values "<something>v" (Rich)]
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
new file mode 100644
index 0000000..c03b69d
--- /dev/null
+++ b/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
@@ -0,0 +1,127 @@
+From fa8028afa670c3575f31b838f1d15ed7ee16f26a Mon Sep 17 00:00:00 2001
+From: Pino Toscano <ptoscano@redhat.com>
+Date: Tue, 26 Mar 2019 09:42:25 +0100
+Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests
+
+---
+ docs/virt-v2v-support.pod | 104 ++------------------------------------
+ 1 file changed, 4 insertions(+), 100 deletions(-)
+
+diff --git a/docs/virt-v2v-support.pod b/docs/virt-v2v-support.pod
+index 9815f51f..1ffc0f9d 100644
+--- a/docs/virt-v2v-support.pod
++++ b/docs/virt-v2v-support.pod
+@@ -8,106 +8,10 @@ systems and guests in virt-v2v
+ This page documents which foreign hypervisors, virtualization
+ management systems and guest types that L<virt-v2v(1)> can support.
+ 
+-Note this page applies to upstream virt-v2v from
+-L<http://libguestfs.org> and in downstream distributions of virt-v2v
+-sometimes features are intentionally removed, or are present but not
+-supported.
+-
+-=head2 Hypervisors (Input)
+-
+-=over 4
+-
+-=item VMware ESXi
+-
+-Must be managed by VMware vCenter E<ge> 5.0 unless VDDK is available.
+-
+-=item OVA exported from VMware
+-
+-OVAs from other hypervisors will not work.
+-
+-=item VMX from VMware
+-
+-VMX files generated by other hypervisors will not work.
+-
+-=item RHEL 5 Xen
+-
+-=item SUSE Xen
+-
+-=item Citrix Xen
+-
+-Citrix Xen has not been recently tested.
+-
+-=item Hyper-V
+-
+-Not recently tested.  Requires that you export the disk or use
+-L<virt-p2v(1)> on Hyper-V.
+-
+-=item Direct from disk images
+-
+-Only disk images exported from supported hypervisors, and using
+-container formats supported by qemu.
+-
+-=item Physical machines
+-
+-Using the L<virt-p2v(1)> tool.
+-
+-=back
+-
+-=head2 Hypervisors (Output)
+-
+-QEMU and KVM only.
+-
+-=head2 Virtualization management systems (Output)
+-
+-=over 4
+-
+-=item OpenStack
+-
+-=item Red Hat Virtualization (RHV) 4.1 and up
+-
+-=item Local libvirt
+-
+-And hence L<virsh(1)>, L<virt-manager(1)>, and similar tools.
+-
+-=item Local disk
+-
+-=back
+-
+-=head2 Guests
+-
+-=over 4
+-
+-=item Red Hat Enterprise Linux 3, 4, 5, 6, 7
+-
+-=item CentOS 3, 4, 5, 6, 7
+-
+-=item Scientific Linux 3, 4, 5, 6, 7
+-
+-=item Oracle Linux
+-
+-=item Fedora
+-
+-=item SLES 10 and up
+-
+-=item OpenSUSE 10 and up
+-
+-=item ALT Linux 9 and up
+-
+-=item Debian 6 and up
+-
+-=item Ubuntu 10.04, 12.04, 14.04, 16.04, and up
+-
+-=item Windows XP to Windows 10 / Windows Server 2016
+-
+-We use Windows internal version numbers, see
+-L<https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions>
+-
+-Currently NT 5.2 to NT 6.3 are supported.
+-
+-See L</WINDOWS> below for additional notes on converting Windows
+-guests.
+-
+-=back
++For more information on supported hypervisors, and guest types in
++RHEL, please consult the following Knowledgebase article on these
++Red Hat Customer Portal:
++L<https://access.redhat.com/articles/1351473>.
+ 
+ =head2 Guest firmware
+ 
+-- 
+2.31.1
+
diff --git a/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch b/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch
deleted file mode 100644
index d1c172a..0000000
--- a/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 00473c6ac09d85a6b6e1ce0cbe132e31407a2d00 Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-8-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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/SOURCES/0008-RHEL-Disable-o-glance.patch b/SOURCES/0008-RHEL-Disable-o-glance.patch
new file mode 100644
index 0000000..bb4d515
--- /dev/null
+++ b/SOURCES/0008-RHEL-Disable-o-glance.patch
@@ -0,0 +1,219 @@
+From 95640bac1c00014f94bec5539907fd92d7379ad2 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Wed, 30 Jun 2021 11:15:52 +0100
+Subject: [PATCH] RHEL: Disable -o glance
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1977539
+---
+ docs/virt-v2v-output-openstack.pod | 56 ++----------------------------
+ docs/virt-v2v.pod                  | 20 -----------
+ output/output_glance.mli           |  2 +-
+ tests/test-v2v-o-glance.sh         |  3 ++
+ v2v/v2v.ml                         |  7 +---
+ 5 files changed, 7 insertions(+), 81 deletions(-)
+
+diff --git a/docs/virt-v2v-output-openstack.pod b/docs/virt-v2v-output-openstack.pod
+index f5a3abad..1ab356e8 100644
+--- a/docs/virt-v2v-output-openstack.pod
++++ b/docs/virt-v2v-output-openstack.pod
+@@ -10,13 +10,10 @@ virt-v2v-output-openstack - Using virt-v2v to convert guests to OpenStack
+                         [-oo verify-server-certificate=false]
+                         [-oo os-username=admin] [-oo os-*=*]
+ 
+- virt-v2v [-i* options] -o glance
+-
+ =head1 DESCRIPTION
+ 
+ This page documents how to use L<virt-v2v(1)> to convert guests to run
+-on OpenStack.  There are two output modes you can select, but only
+-I<-o openstack> should be used normally.
++on OpenStack.
+ 
+ =over 4
+ 
+@@ -27,15 +24,6 @@ Full description: L</OUTPUT TO OPENSTACK>
+ This is the modern method for uploading to OpenStack via the REST API.
+ Guests can be directly converted into Cinder volumes.
+ 
+-=item B<-o glance>
+-
+-Full description: L</OUTPUT TO GLANCE>
+-
+-This is the old method for uploading to Glance.  Unfortunately Glance
+-is not well suited to storing converted guests (since virt-v2v deals
+-with "pets" not templated "cattle"), so this method is not recommended
+-unless you really know what you are doing.
+-
+ =back
+ 
+ =head1 OUTPUT TO OPENSTACK
+@@ -170,50 +158,10 @@ no Cinder volume type is used.
+ The following options are B<not> supported with OpenStack: I<-oa>,
+ I<-of>.
+ 
+-=head1 OUTPUT TO GLANCE
+-
+-Note this is a legacy option.  In most cases you should use
+-L</OUTPUT TO OPENSTACK> instead.
+-
+-To output to OpenStack Glance, use the I<-o glance> option.
+-
+-This runs the L<glance(1)> CLI program which must be installed on the
+-virt-v2v conversion host.  For authentication to work, you will need
+-to set C<OS_*> environment variables.
+-
+-Normally there is a file called C<overcloudrc> or C<keystonerc_admin>
+-which you can simply C<source> to set everything up.
+-
+-Virt-v2v adds metadata for the guest to Glance, describing such things
+-as the guest operating system and what drivers it requires.  The
+-command C<glance image-show> will display the metadata as "Property"
+-fields such as C<os_type> and C<hw_disk_bus>.
+-
+-=head2 Glance and sparseness
+-
+-Glance image upload doesn't appear to correctly handle sparseness.
+-For this reason, using qcow2 will be faster and use less space on the
+-Glance server.  Use the virt-v2v S<I<-of qcow2>> option.
+-
+-=head2 Glance and multiple disks
+-
+-If the guest has a single disk, then the name of the disk in Glance
+-will be the name of the guest.  You can control this using the I<-on>
+-option.
+-
+-Glance doesn't have a concept of associating multiple disks with a
+-single guest, and Nova doesn't allow you to boot a guest from multiple
+-Glance disks either.  If the guest has multiple disks, then the first
+-(assumed to be the system disk) will have the name of the guest, and
+-the second and subsequent data disks will be called
+-C<I<guestname>-disk2>, C<I<guestname>-disk3> etc.  It may be best to
+-leave the system disk in Glance, and import the data disks to Cinder.
+-
+ =head1 SEE ALSO
+ 
+ L<virt-v2v(1)>,
+-L<https://docs.openstack.org/python-openstackclient/latest/cli/man/openstack.html>,
+-L<glance(1)>.
++L<https://docs.openstack.org/python-openstackclient/latest/cli/man/openstack.html>.
+ 
+ =head1 AUTHOR
+ 
+diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
+index 9b1e44a1..a1e00db8 100644
+--- a/docs/virt-v2v.pod
++++ b/docs/virt-v2v.pod
+@@ -431,14 +431,6 @@ See L</Networks and bridges> below.
+ 
+ This is the same as I<-o local>.
+ 
+-=item B<-o> B<glance>
+-
+-This is a legacy option.  You should probably use I<-o openstack>
+-instead.
+-
+-Set the output method to OpenStack Glance.  In this mode the converted
+-guest is uploaded to Glance.  See L<virt-v2v-output-openstack(1)>.
+-
+ =item B<-o> B<json>
+ 
+ Set the output method to I<json>.
+@@ -1170,11 +1162,6 @@ and output methods may use disk space, as outlined in the table below.
+ This temporarily places a full copy of the uncompressed source disks
+ in C<$VIRT_V2V_TMPDIR> (or F</var/tmp>).
+ 
+-=item I<-o glance>
+-
+-This temporarily places a full copy of the output disks in
+-C<$VIRT_V2V_TMPDIR> (or F</var/tmp>).
+-
+ =item I<-o local>
+ 
+ =item I<-o qemu>
+@@ -1358,13 +1345,6 @@ instance.
+ Because of how Cinder volumes are presented as F</dev> block devices,
+ using I<-o openstack> normally requires that virt-v2v is run as root.
+ 
+-=item Writing to Glance
+-
+-This does I<not> need root (in fact it probably won’t work), but may
+-require either a special user and/or for you to source a script that
+-sets authentication environment variables.  Consult the Glance
+-documentation.
+-
+ =item Writing to block devices
+ 
+ This normally requires root.  See the next section.
+diff --git a/output/output_glance.mli b/output/output_glance.mli
+index 972320a2..9befc461 100644
+--- a/output/output_glance.mli
++++ b/output/output_glance.mli
+@@ -18,4 +18,4 @@
+ 
+ (** [-o glance] output mode. *)
+ 
+-module Glance : Output.OUTPUT
++(*module Glance : Output.OUTPUT*)
+diff --git a/tests/test-v2v-o-glance.sh b/tests/test-v2v-o-glance.sh
+index c0db9115..074b5e16 100755
+--- a/tests/test-v2v-o-glance.sh
++++ b/tests/test-v2v-o-glance.sh
+@@ -20,6 +20,9 @@
+ 
+ set -e
+ 
++# Feature is disabled in RHEL 9.
++exit 77
++
+ source ./functions.sh
+ set -e
+ set -x
+diff --git a/v2v/v2v.ml b/v2v/v2v.ml
+index a66fa285..c9ddce36 100644
+--- a/v2v/v2v.ml
++++ b/v2v/v2v.ml
+@@ -205,7 +205,6 @@ let rec main () =
+     if !output_mode <> `Not_set then
+       error (f_"%s option used more than once on the command line") "-o";
+     match mode with
+-    | "glance" -> output_mode := `Glance
+     | "libvirt" -> output_mode := `Libvirt
+     | "disk" | "local" -> output_mode := `Disk
+     | "json" -> output_mode := `JSON
+@@ -257,7 +256,7 @@ let rec main () =
+       s_"Map network ‘in’ to ‘out’";
+     [ L"no-trim" ],  Getopt.String ("-", no_trim_warning),
+       s_"Ignored for backwards compatibility";
+-    [ S 'o' ],       Getopt.String ("glance|json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
++    [ S 'o' ],       Getopt.String ("json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
+       s_"Set output mode (default: libvirt)";
+     [ M"oa" ],       Getopt.String ("sparse|preallocated", set_output_alloc),
+                                     s_"Set output allocation mode";
+@@ -325,8 +324,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
+ 
+ virt-v2v -i disk disk.img -o local -os /var/tmp
+ 
+-virt-v2v -i disk disk.img -o glance
+-
+ There is a companion front-end called \"virt-p2v\" which comes as an
+ ISO or CD image that can be booted on physical machines.
+ 
+@@ -396,7 +393,6 @@ read the man page virt-v2v(1).
+       pr "input:libvirtxml\n";
+       pr "input:ova\n";
+       pr "input:vmx\n";
+-      pr "output:glance\n";
+       pr "output:json\n";
+       pr "output:libvirt\n";
+       pr "output:local\n";
+@@ -486,7 +482,6 @@ read the man page virt-v2v(1).
+     | `Disk -> (module Output_disk.Disk)
+     | `Null -> (module Output_null.Null)
+     | `QEmu -> (module Output_qemu.QEMU)
+-    | `Glance -> (module Output_glance.Glance)
+     | `Openstack -> (module Output_openstack.Openstack)
+     | `RHV_Upload -> (module Output_rhv_upload.RHVUpload)
+     | `RHV -> (module Output_rhv.RHV)
+-- 
+2.31.1
+
diff --git a/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch b/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch
deleted file mode 100644
index a028887..0000000
--- a/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 2a2d7e9e1376084670dbf8587549948713341153 Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-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 <rjones@redhat.com>
----
- 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/SOURCES/0009-RHEL-Remove-the-in-place-option.patch b/SOURCES/0009-RHEL-Remove-the-in-place-option.patch
new file mode 100644
index 0000000..9ac39b7
--- /dev/null
+++ b/SOURCES/0009-RHEL-Remove-the-in-place-option.patch
@@ -0,0 +1,143 @@
+From c7c14141d1c985dbba8749f9209b78d96200c2b3 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Thu, 2 Dec 2021 11:56:05 +0000
+Subject: [PATCH] RHEL: Remove the --in-place option
+
+This disables the virt-v2v --in-place option which we do not
+wish to support in RHEL.
+---
+ docs/virt-v2v.pod | 49 -----------------------------------------------
+ v2v/v2v.ml        |  8 --------
+ 2 files changed, 57 deletions(-)
+
+diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
+index a1e00db8..a3fc3dc8 100644
+--- a/docs/virt-v2v.pod
++++ b/docs/virt-v2v.pod
+@@ -8,10 +8,6 @@ virt-v2v - Convert a guest to use KVM
+           [-o mode] [other -o* options]
+           [guest|filename]
+ 
+- virt-v2v --in-place
+-          [-i mode] [other -i* options]
+-          [guest|filename]
+-
+ =head1 DESCRIPTION
+ 
+ Virt-v2v converts a single guest from a foreign hypervisor to run on
+@@ -37,12 +33,6 @@ The input and output sides of virt-v2v are separate and unrelated.
+ Virt-v2v can read from any input and write to any output.  Therefore
+ these sides of virt-v2v are documented separately in this manual.
+ 
+-Virt-v2v normally copies from the input to the output, called "copying
+-mode".  In this case the source guest is always left unchanged.
+-In-place conversion (I<--in-place>) only uses the I<-i*> options and
+-modifies the source guest in-place.  (See L</In-place conversion>
+-below.)
+-
+ =head2 Other virt-v2v topics
+ 
+ L<virt-v2v-support(1)> — Supported hypervisors, virtualization
+@@ -289,20 +279,6 @@ For I<-i disk> only, this specifies the format of the input disk
+ image.  For other input methods you should specify the input
+ format in the metadata.
+ 
+-=item B<--in-place>
+-
+-Do not create an output virtual machine in the target hypervisor.
+-Instead, adjust the guest OS in the source VM to run in the input
+-hypervisor.
+-
+-This mode is meant for integration with other toolsets, which take the
+-responsibility of converting the VM configuration, providing for
+-rollback in case of errors, transforming the storage, etc.
+-
+-See L</In-place conversion> below.
+-
+-Conflicts with all I<-o *> options.
+-
+ =item B<-io> OPTION=VALUE
+ 
+ Set input option(s) related to the current input mode or transport.
+@@ -1417,31 +1393,6 @@ that instead.
+    </devices>
+  </domain>
+ 
+-=head2 In-place conversion
+-
+-It is also possible to use virt-v2v in scenarios where a foreign VM
+-has already been imported into a KVM-based hypervisor, but still needs
+-adjustments in the guest to make it run in the new virtual hardware.
+-
+-In that case it is assumed that a third-party tool has created the
+-target VM in the supported KVM-based hypervisor based on the source VM
+-configuration and contents, but using virtual devices more appropriate
+-for KVM (e.g. virtio storage and network, etc.).
+-
+-Then, to make the guest OS boot and run in the changed environment,
+-one can use:
+-
+- virt-v2v -ic qemu:///system converted_vm --in-place
+-
+-Virt-v2v will analyze the configuration of C<converted_vm> in the
+-C<qemu:///system> libvirt instance, and apply various fixups to the
+-guest OS configuration to make it match the VM configuration.  This
+-may include installing virtio drivers, configuring the bootloader, the
+-mountpoints, the network interfaces, and so on.
+-
+-Should an error occur during the operation, virt-v2v exits with an
+-error code leaving the VM in an undefined state.
+-
+ =head2 Machine readable output
+ 
+ The I<--machine-readable> option can be used to make the output more
+diff --git a/v2v/v2v.ml b/v2v/v2v.ml
+index c9ddce36..6859a02c 100644
+--- a/v2v/v2v.ml
++++ b/v2v/v2v.ml
+@@ -183,7 +183,6 @@ let rec main () =
+   let output_storage = ref None in
+ 
+   (* Other options that we handle here. *)
+-  let in_place = ref false in
+   let print_source = ref false in
+ 
+   let input_mode = ref `Not_set in
+@@ -248,8 +247,6 @@ let rec main () =
+                                     s_"Use password from file to connect to input hypervisor";
+     [ M"it" ],       Getopt.String ("transport", set_string_option_once "-it" input_transport),
+                                     s_"Input transport";
+-    [ L"in-place" ], Getopt.Set in_place,
+-      s_"Only tune the guest in the input VM";
+     [ L"mac" ],      Getopt.String ("mac:network|bridge|ip:out", add_mac),
+       s_"Map NIC to network or bridge or assign static IP";
+     [ S 'n'; L"network" ], Getopt.String ("in:out", add_network),
+@@ -347,7 +344,6 @@ read the man page virt-v2v(1).
+ 
+   (* Dereference the arguments. *)
+   let args = List.rev !args in
+-  let in_place = !in_place in
+   let input_conn = !input_conn in
+   let input_mode = !input_mode in
+   let input_transport =
+@@ -367,9 +363,6 @@ read the man page virt-v2v(1).
+   let root_choice = !root_choice in
+   let static_ips = !static_ips in
+ 
+-  (* --in-place isn't implemented yet - TODO *)
+-  if in_place then error "XXX --in-place option is not implemented yet";
+-
+   (* No arguments and machine-readable mode?  Print out some facts
+    * about what this binary supports.
+    *)
+@@ -383,7 +376,6 @@ read the man page virt-v2v(1).
+       pr "vddk\n";
+       pr "colours-option\n";
+       pr "vdsm-compat-option\n";
+-      pr "in-place\n";
+       pr "io/oo\n";
+       pr "mac-option\n";
+       pr "bandwidth-option\n";
+-- 
+2.31.1
+
diff --git a/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch b/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch
deleted file mode 100644
index 5ff3308..0000000
--- a/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From f0cea012d0183edf6f7b769c28d5038593f3fe6a Mon Sep 17 00:00:00 2001
-From: Laszlo Ersek <lersek@redhat.com>
-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 <lersek@redhat.com>
-Message-Id: <20220106140910.13695-10-lersek@redhat.com>
-Acked-by: Richard W.M. Jones <rjones@redhat.com>
----
- 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 @@
--    <disk type='file' device='disk'>
-+    <disk type='file' device='disk' model='virtio-transitional'>
-       <driver name='qemu' type='raw'/>
-       <target dev='vda' bus='virtio'/>
-     </disk>
-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 @@
--    <disk type='file' device='disk'>
-+    <disk type='file' device='disk' model='virtio-transitional'>
-       <driver name='qemu' type='raw'/>
-       <target dev='vda' bus='virtio'/>
-     </disk>
-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 @@
-   <on_reboot>restart</on_reboot>
-   <on_crash>restart</on_crash>
-   <devices>
--    <disk type='file' device='disk'>
-+    <disk type='file' device='disk' model='virtio-transitional'>
-       <driver name='qemu' type='raw'/>
-       <source file='TestOva-sda'/>
-       <target dev='vda' bus='virtio'/>
-@@ -36,16 +36,16 @@
-     </disk>
-     <interface type='bridge'>
-       <source bridge='VM Network'/>
--      <model type='virtio'/>
-+      <model type='virtio-transitional'/>
-     </interface>
-     <video>
-       <model type='vga' vram='16384' heads='1'/>
-     </video>
-     <graphics type='vnc' autoport='yes' port='-1'/>
--    <rng model='virtio'>
-+    <rng model='virtio-transitional'>
-       <backend model='random'>/dev/urandom</backend>
-     </rng>
--    <memballoon model='virtio'/>
-+    <memballoon model='virtio-transitional'/>
-     <viosock model='none'/>
-     <input type='tablet' bus='usb'/>
-     <input type='mouse' bus='ps2'/>
--- 
-2.31.1
-
diff --git a/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
deleted file mode 100644
index 75782c2..0000000
--- a/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 44314b8d8d201e6043b7148240446c98c726bc95 Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Sun, 28 Sep 2014 19:14:43 +0100
-Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode
- (RHBZ#1147313).
-
-RHEL does not have qemu-system-x86_64 (etc), and in addition the
-qemu binary is located in /usr/libexec.  Encode the path to this
-binary directly in the script.
-
-Note that we don't support people running qemu directly like this.
-It's just for quick testing of converted VMs, and to help us with
-support cases.
----
- output/output_qemu.ml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/output/output_qemu.ml b/output/output_qemu.ml
-index 0aac1eba..c4265703 100644
---- a/output/output_qemu.ml
-+++ b/output/output_qemu.ml
-@@ -119,7 +119,7 @@ and qemu_finalize dir source inspect target_meta
-    * module deals with shell and qemu comma quoting.
-    *)
-   let cmd = Qemuopts.create () in
--  Qemuopts.set_binary_by_arch cmd (Some guestcaps.gcaps_arch);
-+  Qemuopts.set_binary cmd "/usr/libexec/qemu-kvm";
- 
-   let flag = Qemuopts.flag cmd
-   and arg = Qemuopts.arg cmd
--- 
-2.31.1
-
diff --git a/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
deleted file mode 100644
index 6807c80..0000000
--- a/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 1c1eb51b4f7e9d5f1e2aef7d695181a14fbd0a7d Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Tue, 30 Sep 2014 10:50:27 +0100
-Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option
- (RHBZ#1147313).
-
-This cannot work because there is no Gtk or SDL output mode
-in RHEL's qemu-kvm.
-
-In addition you will have to edit the -display option in the
-qemu script.
----
- docs/virt-v2v-output-local.pod |  6 ++----
- docs/virt-v2v.pod              | 12 ------------
- output/output_qemu.ml          |  3 +++
- v2v/v2v.ml                     |  2 --
- 4 files changed, 5 insertions(+), 18 deletions(-)
-
-diff --git a/docs/virt-v2v-output-local.pod b/docs/virt-v2v-output-local.pod
-index a5f155cb..3a2e6238 100644
---- a/docs/virt-v2v-output-local.pod
-+++ b/docs/virt-v2v-output-local.pod
-@@ -9,7 +9,7 @@ or libvirt
- 
-  virt-v2v [-i* options] -o local -os DIRECTORY
- 
-- virt-v2v [-i* options] -o qemu -os DIRECTORY [--qemu-boot]
-+ virt-v2v [-i* options] -o qemu -os DIRECTORY
- 
-  virt-v2v [-i* options] -o json -os DIRECTORY
-                         [-oo json-disks-pattern=PATTERN]
-@@ -50,12 +50,10 @@ where C<NAME> is the guest name.
- 
- =item B<-o qemu -os> C<DIRECTORY>
- 
--=item B<-o qemu -os> C<DIRECTORY> B<--qemu-boot>
--
- This converts the guest to files in C<DIRECTORY>.  Unlike I<-o local>
- above, a shell script is created which contains the raw qemu command
- you would need to boot the guest.  However the shell script is not
--run, I<unless> you also add the I<--qemu-boot> option.
-+run.
- 
- =item B<-o json -os> C<DIRECTORY>
- 
-diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
-index 3d0e00a3..04f3efd2 100644
---- a/docs/virt-v2v.pod
-+++ b/docs/virt-v2v.pod
-@@ -141,11 +141,6 @@ Since F<guest-domain.xml> contains the path(s) to the guest disk
- image(s) you do not need to specify the name of the disk image on the
- command line.
- 
--To convert a local disk image and immediately boot it in local
--qemu, do:
--
-- virt-v2v -i disk disk.img -o qemu -os /var/tmp -oo qemu-boot
--
- =head1 OPTIONS
- 
- =over 4
-@@ -510,9 +505,6 @@ This is similar to I<-o local>, except that a shell script is written
- which you can use to boot the guest in qemu.  The converted disks and
- shell script are written to the directory specified by I<-os>.
- 
--When using this output mode, you can also specify the I<-oo qemu-boot>
--option which boots the guest under qemu immediately.
--
- =item B<-o> B<rhev>
- 
- This is the same as I<-o rhv>.
-@@ -768,10 +760,6 @@ Print information about the source guest and stop.  This option is
- useful when you are setting up network and bridge maps.
- See L</Networks and bridges>.
- 
--=item B<--qemu-boot>
--
--This is the same as I<-oo qemu-boot>.
--
- =item B<-q>
- 
- =item B<--quiet>
-diff --git a/output/output_qemu.ml b/output/output_qemu.ml
-index c4265703..822e4c72 100644
---- a/output/output_qemu.ml
-+++ b/output/output_qemu.ml
-@@ -52,6 +52,9 @@ and qemu_parse_options options =
-     ) options.output_options;
-   let qemu_boot = !qemu_boot in
- 
-+  if qemu_boot then
-+    error (f_"-o qemu: the -oo qemu-boot option cannot be used in RHEL");
-+
-   (* -os must be set to a directory. *)
-   let output_storage =
-     match options.output_storage with
-diff --git a/v2v/v2v.ml b/v2v/v2v.ml
-index 47e6e937..503dfb55 100644
---- a/v2v/v2v.ml
-+++ b/v2v/v2v.ml
-@@ -277,8 +277,6 @@ let rec main () =
-       s_"Same as ‘-ip filename’";
-     [ L"print-source" ], Getopt.Set print_source,
-       s_"Print source and stop";
--    [ L"qemu-boot" ], Getopt.Unit (fun () -> set_output_option_compat "qemu-boot" ""),
--      s_"Boot in qemu (-o qemu only)";
-     [ L"root" ],     Getopt.String ("ask|... ", set_root_choice),
-       s_"How to choose root filesystem";
-     [ L"vddk-config" ], Getopt.String ("filename", set_input_option_compat "vddk-config"),
--- 
-2.31.1
-
diff --git a/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
deleted file mode 100644
index dc4ce8c..0000000
--- a/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 281273484f675b3ddba584ddc9751fc74653e67f Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Fri, 24 Apr 2015 09:45:41 -0400
-Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
- (RHBZ#1176493).
-
----
- lib/utils.ml | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/lib/utils.ml b/lib/utils.ml
-index d6861d08..a2fccf29 100644
---- a/lib/utils.ml
-+++ b/lib/utils.ml
-@@ -59,13 +59,14 @@ let kvm_arch = function
- (* Does qemu support the given sound card? *)
- let qemu_supports_sound_card = function
-   | Types.AC97
--  | Types.ES1370
-   | Types.ICH6
-   | Types.ICH9
-   | Types.PCSpeaker
-+    -> true
-+  | Types.ES1370
-   | Types.SB16
-   | Types.USBAudio
--    -> true
-+    -> false
- 
- (* Find the UEFI firmware. *)
- let find_uefi_firmware guest_arch =
--- 
-2.31.1
-
diff --git a/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch b/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch
deleted file mode 100644
index 2d487e2..0000000
--- a/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From aa4e5271d3fe02f252ace148b89e9894436a79fb Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Sun, 30 Aug 2015 03:21:57 -0400
-Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport.
-
-In tests we cannot use guestfish for arbitrary Windows edits.
-In virt-v2v helpers we must set the program name to virt-v2v.
----
- convert/convert.ml                         | 1 +
- convert/windows_virtio.ml                  | 1 +
- test-data/phony-guests/make-windows-img.sh | 1 +
- tests/test-v2v-virtio-win-iso.sh           | 8 +++++++-
- tests/test-v2v-windows-conversion.sh       | 8 +++++++-
- 5 files changed, 17 insertions(+), 2 deletions(-)
-
-diff --git a/convert/convert.ml b/convert/convert.ml
-index f78e87ef..d61d7fb4 100644
---- a/convert/convert.ml
-+++ b/convert/convert.ml
-@@ -53,6 +53,7 @@ let rec convert dir options source =
- 
-   message (f_"Opening the source");
-   let g = open_guestfs ~identifier:"v2v" () in
-+  g#set_program "virt-v2v";
-   g#set_memsize (g#get_memsize () * 2);
-   (* Setting the number of vCPUs allows parallel mkinitrd, but make
-    * sure this is not too large because each vCPU consumes guest RAM.
-diff --git a/convert/windows_virtio.ml b/convert/windows_virtio.ml
-index 1c5c148e..b3a35a0a 100644
---- a/convert/windows_virtio.ml
-+++ b/convert/windows_virtio.ml
-@@ -283,6 +283,7 @@ and copy_from_virtio_win g inspect srcdir destdir filter missing =
-     let g2 =
-       try
-         let g2 = open_guestfs ~identifier:"virtio_win" () in
-+        g#set_program "virt-v2v";
-         g2#add_drive_opts virtio_win ~readonly:true;
-         g2#launch ();
-         g2
-diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
-index 30908a91..73cf5144 100755
---- a/test-data/phony-guests/make-windows-img.sh
-+++ b/test-data/phony-guests/make-windows-img.sh
-@@ -37,6 +37,7 @@ fi
- 
- # Create a disk image.
- guestfish <<EOF
-+set-program virt-testing
- sparse windows.img-t 512M
- run
- 
-diff --git a/tests/test-v2v-virtio-win-iso.sh b/tests/test-v2v-virtio-win-iso.sh
-index 69f6f414..b9b806fb 100755
---- a/tests/test-v2v-virtio-win-iso.sh
-+++ b/tests/test-v2v-virtio-win-iso.sh
-@@ -82,6 +82,12 @@ mktest ()
- :> "$script"
- :> "$expected"
- 
-+cat >> "$script" <<EOF
-+  set-program virt-testing
-+  run
-+  mount /dev/sda2 /
-+EOF
-+
- firstboot_dir="/Program Files/Guestfs/Firstboot"
- mktest "is-dir \"$firstboot_dir\"" true
- mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
-@@ -94,5 +100,5 @@ for drv in netkvm vioscsi viostor; do
-     done
- done
- 
--guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
-+guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
- diff -u "$expected" "$response"
-diff --git a/tests/test-v2v-windows-conversion.sh b/tests/test-v2v-windows-conversion.sh
-index a4cf191d..1ff41f6a 100755
---- a/tests/test-v2v-windows-conversion.sh
-+++ b/tests/test-v2v-windows-conversion.sh
-@@ -76,6 +76,12 @@ mktest ()
- :> "$script"
- :> "$expected"
- 
-+cat >> "$script" <<EOF
-+  set-program virt-testing
-+  run
-+  mount /dev/sda2 /
-+EOF
-+
- firstboot_dir="/Program Files/Guestfs/Firstboot"
- mktest "is-dir \"$firstboot_dir\"" true
- mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
-@@ -88,7 +94,7 @@ for drv in netkvm vioscsi viostor; do
-     done
- done
- 
--guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
-+guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
- diff -u "$expected" "$response"
- 
- # We also update the Registry several times, for firstboot, and (ONLY
--- 
-2.31.1
-
diff --git a/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
deleted file mode 100644
index f40d1f3..0000000
--- a/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a6b21f626a74c436563c14751f19f60a6433e153 Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Thu, 2 Mar 2017 14:21:37 +0100
-Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)
-
-The SDL output mode is not supported in RHEL's qemu-kvm.
----
- input/input_disk.ml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/input/input_disk.ml b/input/input_disk.ml
-index 0d92f256..753938f6 100644
---- a/input/input_disk.ml
-+++ b/input/input_disk.ml
-@@ -70,7 +70,7 @@ let rec disk_source dir options args =
-     s_features = [ "acpi"; "apic"; "pae" ];
-     s_firmware = UnknownFirmware; (* causes virt-v2v to autodetect *)
-     s_display =
--      Some { s_display_type = Window; s_keymap = None; s_password = None;
-+      Some { s_display_type = VNC; s_keymap = None; s_password = None;
-              s_listen = LNoListen; s_port = None };
-     s_sound = None;
-     s_disks = s_disks;
--- 
-2.31.1
-
diff --git a/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch b/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch
deleted file mode 100644
index 1180918..0000000
--- a/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 621a424738cb94f387171992af5352305121da6b Mon Sep 17 00:00:00 2001
-From: Pino Toscano <ptoscano@redhat.com>
-Date: Wed, 8 Mar 2017 11:03:40 +0100
-Subject: [PATCH] RHEL: v2v: do not mention SUSE Xen hosts (RHBZ#1430203)
-
-They are not supported in RHEL.
----
- docs/virt-v2v-input-xen.pod | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/virt-v2v-input-xen.pod b/docs/virt-v2v-input-xen.pod
-index cd3210bf..e9f336a9 100644
---- a/docs/virt-v2v-input-xen.pod
-+++ b/docs/virt-v2v-input-xen.pod
-@@ -12,7 +12,7 @@ virt-v2v-input-xen - Using virt-v2v to convert guests from Xen
- =head1 DESCRIPTION
- 
- This page documents how to use L<virt-v2v(1)> to convert guests from
--RHEL 5 Xen, or SLES and OpenSUSE Xen hosts.
-+RHEL 5 Xen hosts.
- 
- =head1 INPUT FROM XEN
- 
--- 
-2.31.1
-
diff --git a/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
deleted file mode 100644
index cf87964..0000000
--- a/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From af0265e36747be9e6e4d7f91af2529f20e91e7ab Mon Sep 17 00:00:00 2001
-From: Pino Toscano <ptoscano@redhat.com>
-Date: Tue, 26 Mar 2019 09:42:25 +0100
-Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests
-
----
- docs/virt-v2v-support.pod | 104 ++------------------------------------
- 1 file changed, 4 insertions(+), 100 deletions(-)
-
-diff --git a/docs/virt-v2v-support.pod b/docs/virt-v2v-support.pod
-index 9815f51f..1ffc0f9d 100644
---- a/docs/virt-v2v-support.pod
-+++ b/docs/virt-v2v-support.pod
-@@ -8,106 +8,10 @@ systems and guests in virt-v2v
- This page documents which foreign hypervisors, virtualization
- management systems and guest types that L<virt-v2v(1)> can support.
- 
--Note this page applies to upstream virt-v2v from
--L<http://libguestfs.org> and in downstream distributions of virt-v2v
--sometimes features are intentionally removed, or are present but not
--supported.
--
--=head2 Hypervisors (Input)
--
--=over 4
--
--=item VMware ESXi
--
--Must be managed by VMware vCenter E<ge> 5.0 unless VDDK is available.
--
--=item OVA exported from VMware
--
--OVAs from other hypervisors will not work.
--
--=item VMX from VMware
--
--VMX files generated by other hypervisors will not work.
--
--=item RHEL 5 Xen
--
--=item SUSE Xen
--
--=item Citrix Xen
--
--Citrix Xen has not been recently tested.
--
--=item Hyper-V
--
--Not recently tested.  Requires that you export the disk or use
--L<virt-p2v(1)> on Hyper-V.
--
--=item Direct from disk images
--
--Only disk images exported from supported hypervisors, and using
--container formats supported by qemu.
--
--=item Physical machines
--
--Using the L<virt-p2v(1)> tool.
--
--=back
--
--=head2 Hypervisors (Output)
--
--QEMU and KVM only.
--
--=head2 Virtualization management systems (Output)
--
--=over 4
--
--=item OpenStack
--
--=item Red Hat Virtualization (RHV) 4.1 and up
--
--=item Local libvirt
--
--And hence L<virsh(1)>, L<virt-manager(1)>, and similar tools.
--
--=item Local disk
--
--=back
--
--=head2 Guests
--
--=over 4
--
--=item Red Hat Enterprise Linux 3, 4, 5, 6, 7
--
--=item CentOS 3, 4, 5, 6, 7
--
--=item Scientific Linux 3, 4, 5, 6, 7
--
--=item Oracle Linux
--
--=item Fedora
--
--=item SLES 10 and up
--
--=item OpenSUSE 10 and up
--
--=item ALT Linux 9 and up
--
--=item Debian 6 and up
--
--=item Ubuntu 10.04, 12.04, 14.04, 16.04, and up
--
--=item Windows XP to Windows 10 / Windows Server 2016
--
--We use Windows internal version numbers, see
--L<https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions>
--
--Currently NT 5.2 to NT 6.3 are supported.
--
--See L</WINDOWS> below for additional notes on converting Windows
--guests.
--
--=back
-+For more information on supported hypervisors, and guest types in
-+RHEL, please consult the following Knowledgebase article on these
-+Red Hat Customer Portal:
-+L<https://access.redhat.com/articles/1351473>.
- 
- =head2 Guest firmware
- 
--- 
-2.31.1
-
diff --git a/SOURCES/0017-RHEL-Disable-o-glance.patch b/SOURCES/0017-RHEL-Disable-o-glance.patch
deleted file mode 100644
index e5446dd..0000000
--- a/SOURCES/0017-RHEL-Disable-o-glance.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From afec4c531c71de4f98115258d3eee17a25afae5e Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Wed, 30 Jun 2021 11:15:52 +0100
-Subject: [PATCH] RHEL: Disable -o glance
-
-Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1977539
----
- docs/virt-v2v-output-openstack.pod | 56 ++----------------------------
- docs/virt-v2v.pod                  | 20 -----------
- output/output_glance.mli           |  2 +-
- tests/test-v2v-o-glance.sh         |  3 ++
- v2v/v2v.ml                         |  7 +---
- 5 files changed, 7 insertions(+), 81 deletions(-)
-
-diff --git a/docs/virt-v2v-output-openstack.pod b/docs/virt-v2v-output-openstack.pod
-index f5a3abad..1ab356e8 100644
---- a/docs/virt-v2v-output-openstack.pod
-+++ b/docs/virt-v2v-output-openstack.pod
-@@ -10,13 +10,10 @@ virt-v2v-output-openstack - Using virt-v2v to convert guests to OpenStack
-                         [-oo verify-server-certificate=false]
-                         [-oo os-username=admin] [-oo os-*=*]
- 
-- virt-v2v [-i* options] -o glance
--
- =head1 DESCRIPTION
- 
- This page documents how to use L<virt-v2v(1)> to convert guests to run
--on OpenStack.  There are two output modes you can select, but only
--I<-o openstack> should be used normally.
-+on OpenStack.
- 
- =over 4
- 
-@@ -27,15 +24,6 @@ Full description: L</OUTPUT TO OPENSTACK>
- This is the modern method for uploading to OpenStack via the REST API.
- Guests can be directly converted into Cinder volumes.
- 
--=item B<-o glance>
--
--Full description: L</OUTPUT TO GLANCE>
--
--This is the old method for uploading to Glance.  Unfortunately Glance
--is not well suited to storing converted guests (since virt-v2v deals
--with "pets" not templated "cattle"), so this method is not recommended
--unless you really know what you are doing.
--
- =back
- 
- =head1 OUTPUT TO OPENSTACK
-@@ -170,50 +158,10 @@ no Cinder volume type is used.
- The following options are B<not> supported with OpenStack: I<-oa>,
- I<-of>.
- 
--=head1 OUTPUT TO GLANCE
--
--Note this is a legacy option.  In most cases you should use
--L</OUTPUT TO OPENSTACK> instead.
--
--To output to OpenStack Glance, use the I<-o glance> option.
--
--This runs the L<glance(1)> CLI program which must be installed on the
--virt-v2v conversion host.  For authentication to work, you will need
--to set C<OS_*> environment variables.
--
--Normally there is a file called C<overcloudrc> or C<keystonerc_admin>
--which you can simply C<source> to set everything up.
--
--Virt-v2v adds metadata for the guest to Glance, describing such things
--as the guest operating system and what drivers it requires.  The
--command C<glance image-show> will display the metadata as "Property"
--fields such as C<os_type> and C<hw_disk_bus>.
--
--=head2 Glance and sparseness
--
--Glance image upload doesn't appear to correctly handle sparseness.
--For this reason, using qcow2 will be faster and use less space on the
--Glance server.  Use the virt-v2v S<I<-of qcow2>> option.
--
--=head2 Glance and multiple disks
--
--If the guest has a single disk, then the name of the disk in Glance
--will be the name of the guest.  You can control this using the I<-on>
--option.
--
--Glance doesn't have a concept of associating multiple disks with a
--single guest, and Nova doesn't allow you to boot a guest from multiple
--Glance disks either.  If the guest has multiple disks, then the first
--(assumed to be the system disk) will have the name of the guest, and
--the second and subsequent data disks will be called
--C<I<guestname>-disk2>, C<I<guestname>-disk3> etc.  It may be best to
--leave the system disk in Glance, and import the data disks to Cinder.
--
- =head1 SEE ALSO
- 
- L<virt-v2v(1)>,
--L<https://docs.openstack.org/python-openstackclient/latest/cli/man/openstack.html>,
--L<glance(1)>.
-+L<https://docs.openstack.org/python-openstackclient/latest/cli/man/openstack.html>.
- 
- =head1 AUTHOR
- 
-diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
-index 04f3efd2..7c101513 100644
---- a/docs/virt-v2v.pod
-+++ b/docs/virt-v2v.pod
-@@ -432,14 +432,6 @@ See L</Networks and bridges> below.
- 
- This is the same as I<-o local>.
- 
--=item B<-o> B<glance>
--
--This is a legacy option.  You should probably use I<-o openstack>
--instead.
--
--Set the output method to OpenStack Glance.  In this mode the converted
--guest is uploaded to Glance.  See L<virt-v2v-output-openstack(1)>.
--
- =item B<-o> B<json>
- 
- Set the output method to I<json>.
-@@ -1162,11 +1154,6 @@ and output methods may use disk space, as outlined in the table below.
- This temporarily places a full copy of the uncompressed source disks
- in C<$VIRT_V2V_TMPDIR> (or F</var/tmp>).
- 
--=item I<-o glance>
--
--This temporarily places a full copy of the output disks in
--C<$VIRT_V2V_TMPDIR> (or F</var/tmp>).
--
- =item I<-o local>
- 
- =item I<-o qemu>
-@@ -1351,13 +1338,6 @@ instance.
- Because of how Cinder volumes are presented as F</dev> block devices,
- using I<-o openstack> normally requires that virt-v2v is run as root.
- 
--=item Writing to Glance
--
--This does I<not> need root (in fact it probably won’t work), but may
--require either a special user and/or for you to source a script that
--sets authentication environment variables.  Consult the Glance
--documentation.
--
- =item Writing to block devices
- 
- This normally requires root.  See the next section.
-diff --git a/output/output_glance.mli b/output/output_glance.mli
-index 972320a2..9befc461 100644
---- a/output/output_glance.mli
-+++ b/output/output_glance.mli
-@@ -18,4 +18,4 @@
- 
- (** [-o glance] output mode. *)
- 
--module Glance : Output.OUTPUT
-+(*module Glance : Output.OUTPUT*)
-diff --git a/tests/test-v2v-o-glance.sh b/tests/test-v2v-o-glance.sh
-index c0db9115..074b5e16 100755
---- a/tests/test-v2v-o-glance.sh
-+++ b/tests/test-v2v-o-glance.sh
-@@ -20,6 +20,9 @@
- 
- set -e
- 
-+# Feature is disabled in RHEL 9.
-+exit 77
-+
- source ./functions.sh
- set -e
- set -x
-diff --git a/v2v/v2v.ml b/v2v/v2v.ml
-index 503dfb55..39fef0fa 100644
---- a/v2v/v2v.ml
-+++ b/v2v/v2v.ml
-@@ -205,7 +205,6 @@ let rec main () =
-     if !output_mode <> `Not_set then
-       error (f_"%s option used more than once on the command line") "-o";
-     match mode with
--    | "glance" -> output_mode := `Glance
-     | "libvirt" -> output_mode := `Libvirt
-     | "disk" | "local" -> output_mode := `Disk
-     | "json" -> output_mode := `JSON
-@@ -257,7 +256,7 @@ let rec main () =
-       s_"Map network ‘in’ to ‘out’";
-     [ L"no-trim" ],  Getopt.String ("-", no_trim_warning),
-       s_"Ignored for backwards compatibility";
--    [ S 'o' ],       Getopt.String ("glance|json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
-+    [ S 'o' ],       Getopt.String ("json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode),
-       s_"Set output mode (default: libvirt)";
-     [ M"oa" ],       Getopt.String ("sparse|preallocated", set_output_alloc),
-                                     s_"Set output allocation mode";
-@@ -325,8 +324,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
- 
- virt-v2v -i disk disk.img -o local -os /var/tmp
- 
--virt-v2v -i disk disk.img -o glance
--
- There is a companion front-end called \"virt-p2v\" which comes as an
- ISO or CD image that can be booted on physical machines.
- 
-@@ -396,7 +393,6 @@ read the man page virt-v2v(1).
-       pr "input:libvirtxml\n";
-       pr "input:ova\n";
-       pr "input:vmx\n";
--      pr "output:glance\n";
-       pr "output:json\n";
-       pr "output:libvirt\n";
-       pr "output:local\n";
-@@ -486,7 +482,6 @@ read the man page virt-v2v(1).
-     | `Disk -> (module Output_disk.Disk)
-     | `Null -> (module Output_null.Null)
-     | `QEmu -> (module Output_qemu.QEMU)
--    | `Glance -> (module Output_glance.Glance)
-     | `Openstack -> (module Output_openstack.Openstack)
-     | `RHV_Upload -> (module Output_rhv_upload.RHVUpload)
-     | `RHV -> (module Output_rhv.RHV)
--- 
-2.31.1
-
diff --git a/SOURCES/0018-RHEL-Remove-the-in-place-option.patch b/SOURCES/0018-RHEL-Remove-the-in-place-option.patch
deleted file mode 100644
index 7ce8c7b..0000000
--- a/SOURCES/0018-RHEL-Remove-the-in-place-option.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-From 39f31f9c86ed94699382b2c4d683fc1fd0d59195 Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Thu, 2 Dec 2021 11:56:05 +0000
-Subject: [PATCH] RHEL: Remove the --in-place option
-
-This disables the virt-v2v --in-place option which we do not
-wish to support in RHEL.
----
- docs/virt-v2v.pod | 51 +----------------------------------------------
- v2v/v2v.ml        |  8 --------
- 2 files changed, 1 insertion(+), 58 deletions(-)
-
-diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
-index 7c101513..4f89d2b2 100644
---- a/docs/virt-v2v.pod
-+++ b/docs/virt-v2v.pod
-@@ -8,10 +8,6 @@ virt-v2v - Convert a guest to use KVM
-           [-o mode] [other -o* options]
-           [guest|filename]
- 
-- virt-v2v --in-place
--          [-i mode] [other -i* options]
--          [guest|filename]
--
- =head1 DESCRIPTION
- 
- Virt-v2v converts a single guest from a foreign hypervisor to run on
-@@ -37,12 +33,6 @@ The input and output sides of virt-v2v are separate and unrelated.
- Virt-v2v can read from any input and write to any output.  Therefore
- these sides of virt-v2v are documented separately in this manual.
- 
--Virt-v2v normally copies from the input to the output, called "copying
--mode".  In this case the source guest is always left unchanged.
--In-place conversion (I<--in-place>) only uses the I<-i*> options and
--modifies the source guest in-place.  (See L</In-place conversion>
--below.)
--
- =head2 Other virt-v2v topics
- 
- L<virt-v2v-support(1)> — Supported hypervisors, virtualization
-@@ -290,20 +280,6 @@ For I<-i disk> only, this specifies the format of the input disk
- image.  For other input methods you should specify the input
- format in the metadata.
- 
--=item B<--in-place>
--
--Do not create an output virtual machine in the target hypervisor.
--Instead, adjust the guest OS in the source VM to run in the input
--hypervisor.
--
--This mode is meant for integration with other toolsets, which take the
--responsibility of converting the VM configuration, providing for
--rollback in case of errors, transforming the storage, etc.
--
--See L</In-place conversion> below.
--
--Conflicts with all I<-o *> options.
--
- =item B<-io> OPTION=VALUE
- 
- Set input option(s) related to the current input mode or transport.
-@@ -1278,7 +1254,7 @@ have at least 100 available inodes.
- =head3 Minimum free space check in the host
- 
- You must have sufficient free space in the host directory used to
--store large temporary overlays (except in I<--in-place> mode).  To
-+store large temporary overlays.  To
- find out which directory this is, use:
- 
-  $ df -h "`guestfish get-cachedir`"
-@@ -1410,31 +1386,6 @@ that instead.
-    </devices>
-  </domain>
- 
--=head2 In-place conversion
--
--It is also possible to use virt-v2v in scenarios where a foreign VM
--has already been imported into a KVM-based hypervisor, but still needs
--adjustments in the guest to make it run in the new virtual hardware.
--
--In that case it is assumed that a third-party tool has created the
--target VM in the supported KVM-based hypervisor based on the source VM
--configuration and contents, but using virtual devices more appropriate
--for KVM (e.g. virtio storage and network, etc.).
--
--Then, to make the guest OS boot and run in the changed environment,
--one can use:
--
-- virt-v2v -ic qemu:///system converted_vm --in-place
--
--Virt-v2v will analyze the configuration of C<converted_vm> in the
--C<qemu:///system> libvirt instance, and apply various fixups to the
--guest OS configuration to make it match the VM configuration.  This
--may include installing virtio drivers, configuring the bootloader, the
--mountpoints, the network interfaces, and so on.
--
--Should an error occur during the operation, virt-v2v exits with an
--error code leaving the VM in an undefined state.
--
- =head2 Machine readable output
- 
- The I<--machine-readable> option can be used to make the output more
-diff --git a/v2v/v2v.ml b/v2v/v2v.ml
-index 39fef0fa..a1143b68 100644
---- a/v2v/v2v.ml
-+++ b/v2v/v2v.ml
-@@ -183,7 +183,6 @@ let rec main () =
-   let output_storage = ref None in
- 
-   (* Other options that we handle here. *)
--  let in_place = ref false in
-   let print_source = ref false in
- 
-   let input_mode = ref `Not_set in
-@@ -248,8 +247,6 @@ let rec main () =
-                                     s_"Use password from file to connect to input hypervisor";
-     [ M"it" ],       Getopt.String ("transport", set_string_option_once "-it" input_transport),
-                                     s_"Input transport";
--    [ L"in-place" ], Getopt.Set in_place,
--      s_"Only tune the guest in the input VM";
-     [ L"mac" ],      Getopt.String ("mac:network|bridge|ip:out", add_mac),
-       s_"Map NIC to network or bridge or assign static IP";
-     [ S 'n'; L"network" ], Getopt.String ("in:out", add_network),
-@@ -347,7 +344,6 @@ read the man page virt-v2v(1).
- 
-   (* Dereference the arguments. *)
-   let args = List.rev !args in
--  let in_place = !in_place in
-   let input_conn = !input_conn in
-   let input_mode = !input_mode in
-   let input_transport =
-@@ -367,9 +363,6 @@ read the man page virt-v2v(1).
-   let root_choice = !root_choice in
-   let static_ips = !static_ips in
- 
--  (* --in-place isn't implemented yet - TODO *)
--  if in_place then error "XXX --in-place option is not implemented yet";
--
-   (* No arguments and machine-readable mode?  Print out some facts
-    * about what this binary supports.
-    *)
-@@ -383,7 +376,6 @@ read the man page virt-v2v(1).
-       pr "vddk\n";
-       pr "colours-option\n";
-       pr "vdsm-compat-option\n";
--      pr "in-place\n";
-       pr "io/oo\n";
-       pr "mac-option\n";
-       pr "bandwidth-option\n";
--- 
-2.31.1
-
diff --git a/SOURCES/virt-v2v-1.45.96.tar.gz.sig b/SOURCES/virt-v2v-1.45.96.tar.gz.sig
deleted file mode 100644
index 3d95d76..0000000
--- a/SOURCES/virt-v2v-1.45.96.tar.gz.sig
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN PGP SIGNATURE-----
-
-iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmHW+SkRHHJpY2hAYW5u
-ZXhpYS5vcmcACgkQkXOPc+G3aKCH9g/+LcnZLSLWTtcb8ZeXsxdAX8hna4r15VsE
-c4qZqT8/DJCrAw5aaP+udTryF01RMXogCeIx+zaEPioCNlISxQRBooKwz6V8ajP6
-vglyzu6veZ1TYwdnmnDhp8GThoP4NTtHRINMTOpgpMR6FKTIrdDGu6WN3DHaMCQL
-E2nNBWKNOiiYZfR6O/mZlpxnnIag6O7/5ZM4QgGFdZXe83adYNNuB9Mg06RSt3wa
-Ae9zaqBU3AonVZFe41XJv1Zs7uis7zUu03sHUDP1R6NpVfo1+93EKju71Tshd/Aq
-9ZXN+3ELlj+9uYqTDycCbQWHzP/PuwtRNLAQVlQPm3S/emW54IaPAwU8auIboR4W
-fhlWqFoYzDg4JRB44/N9+eTRUYDrDS5UgAzy5IwuOJMp0sLo4vl0mRa5y7ddDyG2
-sNI2TbJNFgOfKbRdcZD5JUQNuym5TXvd6LGzMOoLYFa6dOOx18LJHUvloVuHzZu5
-Y2AJFQDpOB6j3cG4dre/K2Nm806spBLbvYEMB4wBSJECfOTC6Toz0DeHoGsVlv08
-ATeaM9zKJyPUtnFKETY1v+tUnOc41bh8YHYhP/KrYOjC+pQlJsNZyPwmgL+WC8gw
-zMmLfdKrmqNNeZD0uoWcPT0myqrnRdu69anqVHVLIEaBHsp9TwwxrIrfS028FtxP
-u70vmzhQjM0=
-=OjBh
------END PGP SIGNATURE-----
diff --git a/SOURCES/virt-v2v-1.45.99.tar.gz.sig b/SOURCES/virt-v2v-1.45.99.tar.gz.sig
new file mode 100644
index 0000000..d2fc384
--- /dev/null
+++ b/SOURCES/virt-v2v-1.45.99.tar.gz.sig
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmIL8EkRHHJpY2hAYW5u
+ZXhpYS5vcmcACgkQkXOPc+G3aKCSExAAiEWAd+WvG8cf33xrDzAERh3Hg/E89iTv
+P0Ue9HEWFb4yLEKckW7WjagDxrdBdf7VBkBY2wgkkUVq0o4bWhQVWEKPfgWXdiJC
+5sE4wO4trCQDCyZLB/iSiH85oQVf839Jbk04qHWUU7DXsE6apL1LMi2xRUlMPRTf
+6hZVe9WIjlKonzuteQslqVHKVhTZmqkr1NTkYq0OhCHFzMpb1xi0JQni9vKXIaSN
+4vvaDXBzBZW+00iux1PE/Age9QC3AkSESF95Uqx6nYSF98aBEG+3ErcUkMXxL8+i
+c6RYwqFC2oINEPHg46dZtZyAiJNVY4H7hAM1DDe47tFWvmLEIEgyS5XkPfdfReoX
+vVheS+cn6uRbSGeG1iF2ru8ehb+uscatwFc9eWsvoQ10Mt477R7VoG6gTYfIAwP8
+hy5gCgyhlT9t1KKp/39UK4WIwSbIOl6vXH2Kpzam0wKb8xynHYU4cyvk4TGZk+ks
++a63+98ZYeL3hBHAIe2u1wDmgdbVSfvIcK7TEzFTPesAm2WqhkC08CPfinS9vCUI
+VogUpze9+zHZaSBWHCPhfUBpUNF6tGvLRlH0B/ml/6E8csSQ+kT8CWl0ZGvJuNfB
+es8QiAT5XXXTrNgAw782xZOP6aieNrnoNY0J7rFaAbL1OaIXC21lGWAPSZeCOOo/
+PRaJqt5iaDA=
+=okD+
+-----END PGP SIGNATURE-----
diff --git a/SPECS/virt-v2v.spec b/SPECS/virt-v2v.spec
index 13f3c2c..7075010 100644
--- a/SPECS/virt-v2v.spec
+++ b/SPECS/virt-v2v.spec
@@ -14,7 +14,7 @@
 
 Name:          virt-v2v
 Epoch:         1
-Version:       1.45.96
+Version:       1.45.99
 Release:       1%{?dist}
 Summary:       Convert a virtual machine to run on KVM
 
@@ -51,24 +51,15 @@ ExclusiveArch: x86_64
 # Downstream (RHEL-only) patches.
 %if 0%{?rhel}
 # Patches.
-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
+Patch0001:     0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
+Patch0002:     0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
+Patch0003:     0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
+Patch0004:     0004-RHEL-Fixes-for-libguestfs-winsupport.patch
+Patch0005:     0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
+Patch0006:     0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch
+Patch0007:     0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
+Patch0008:     0008-RHEL-Disable-o-glance.patch
+Patch0009:     0009-RHEL-Remove-the-in-place-option.patch
 %endif
 
 %if 0%{patches_touch_autotools}
@@ -86,7 +77,7 @@ BuildRequires: bash-completion
 BuildRequires: file-devel
 BuildRequires: gettext-devel
 BuildRequires: jansson-devel
-BuildRequires: libnbd-devel
+BuildRequires: libnbd-devel >= 1.10.3
 BuildRequires: libosinfo-devel
 BuildRequires: libvirt-daemon-kvm
 BuildRequires: libvirt-devel
@@ -139,6 +130,7 @@ Requires:      edk2-ovmf
 Requires:      edk2-aarch64
 %endif
 
+Requires:      platform-python
 Requires:      libnbd >= 1.8.2-2.el9
 Requires:      %{_bindir}/qemu-nbd
 Requires:      %{_bindir}/nbdcopy
@@ -153,6 +145,7 @@ Requires:      nbdkit-ssh-plugin
 %ifarch x86_64
 Requires:      nbdkit-vddk-plugin
 %endif
+Requires:      nbdkit-blocksize-filter
 Requires:      nbdkit-cacheextents-filter
 Requires:      nbdkit-cow-filter >= 1.26.5-1.el9
 Requires:      nbdkit-rate-filter
@@ -309,11 +302,49 @@ popd
 
 
 %changelog
-* Thu Jan 06 2022 Richard W.M. Jones <rjones@redhat.com> - 1:1.45.96-1
-- Rebase to upstream 1.45.96.
+* Tue Feb 15 2022 Richard W.M. Jones <rjones@redhat.com> - 1:1.45.99-1
+- Rebase to upstream 1.45.99.
+- Add check for sufficient free space in the host
+  resolves: rhbz#2051394
+- Update documentation of -ip for conversions from VMware over HTTPS
+  related: rhbz#1960087
+- -o rhv-upload: Keep connections alive
+  resolves: rhbz#2032324
+- -o rhv-upload: Improve conversion performance
+  resolves: rhbz#2039255
+- -o rhv-upload: Replace -oo rhv-direct with -oo rhv-proxy
+  resolves: rhbz#2033096
+- Fix log line wrapping making log parsing difficult (1820221)
+
+* Wed Feb 2 2022 Laszlo Ersek <lersek@redhat.com> - 1:1.45.97-4
+- v2v import from vCenter fails when using interactive password because
+  cookie-script tries to be interactive
+  (pick commit 8abc07a8589a)
+  resolves: rhbz#1960087
+- model='virtio-transitional' is wrongly added when converting windows
+  guest to local by rhel9 v2v
+  (pick commit range commit range 8abc07a8589a..cacedec64072)
+  resolves: rhbz#2043333
+
+* Wed Jan 26 2022 Richard W.M. Jones <rjones@redhat.com> - 1:1.45.97-3
+- Rebase to upstream 1.45.97.
   resolves: rhbz#2011713
 - Add virtio-transitional for older guests when converting to q35
   resolves: rhbz#1942325
+- Fix -o rhv mode
+  resolves: rhbz#2027598
+- input: xen: Fix assertion error when importing from remote block device
+  resolves: rhbz#2041852
+- output: -o json: Allow -oo (output options) to work
+  resolves: rhbz#2041850
+- Fix virt-v2v hang when given incorrect vpx:// URL
+  resolves: rhbz#2041886
+- Fix hang when converting with virt-p2v
+  resolves: rhbz#2044911
+- Send nbdinfo debugging information to stderr
+  resolves: rhbz#2044922
+- Explicitly require platform-python
+  resolves: rhbz#2046178
 
 * Thu Dec 23 2021 Laszlo Ersek <lersek@redhat.com> - 1:1.45.95-3
 - output_rhv: restrict block status collection to the old RHV output