From b099d8081cebcd6d6a567b79ce787f4b8661ed9e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 9 Jul 2025 16:15:55 +0100 Subject: [PATCH] Remove virt-v2v -io vddk-noextents=true option resolves: RHEL-102619 Add -o kubevirt -oo disk and -oo create options resolves: RHEL-101599 --- ...vddk-Remove-io-vddk-noextents-option.patch | 101 ++++++++ ...sh-vddk-file-Add-nbdkit-count-filter.patch | 114 +++++++++ ...ify-server-certificate-docs-to-alpha.patch | 45 ++++ ...o-disk-to-allow-disk-names-to-be-ove.patch | 233 ++++++++++++++++++ ...output-Add-optional-create-parameter.patch | 141 +++++++++++ ...o-create-false-to-avoid-disk-creatio.patch | 119 +++++++++ ...RHEL-Fixes-for-libguestfs-winsupport.patch | 2 +- ...correct-qemu-binary-for-o-qemu-mode-.patch | 2 +- ...-the-qemu-boot-oo-qemu-boot-option-R.patch | 12 +- ...-supported-sound-cards-to-match-RHEL.patch | 2 +- ...sk-force-VNC-as-display-RHBZ-1372671.patch | 2 +- ...-for-supported-v2v-hypervisors-guest.patch | 2 +- ...h => 0013-RHEL-Remove-input-from-Xen.patch | 8 +- ...e.patch => 0014-RHEL-Remove-o-glance.patch | 8 +- ...=> 0015-RHEL-tests-Remove-btrfs-test.patch | 4 +- ...0016-RHEL-Remove-block-driver-option.patch | 6 +- ...virt-o-ovirt-upload-and-o-vdsm-modes.patch | 26 +- ...-about-virt-v2v-in-place-not-being-s.patch | 2 +- virt-v2v.spec | 40 +-- 19 files changed, 815 insertions(+), 54 deletions(-) create mode 100644 0001-vddk-Remove-io-vddk-noextents-option.patch create mode 100644 0002-curl-ssh-vddk-file-Add-nbdkit-count-filter.patch create mode 100644 0003-docs-Move-oo-verify-server-certificate-docs-to-alpha.patch create mode 100644 0004-o-kubevirt-Add-oo-disk-to-allow-disk-names-to-be-ove.patch create mode 100644 0005-output-Add-optional-create-parameter.patch create mode 100644 0006-o-kubevirt-Add-oo-create-false-to-avoid-disk-creatio.patch rename 0001-RHEL-Fixes-for-libguestfs-winsupport.patch => 0007-RHEL-Fixes-for-libguestfs-winsupport.patch (98%) rename 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch => 0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch (94%) rename 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch => 0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch (89%) rename 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch => 0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch (92%) rename 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch => 0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch (93%) rename 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch => 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch (97%) rename 0007-RHEL-Remove-input-from-Xen.patch => 0013-RHEL-Remove-input-from-Xen.patch (98%) rename 0008-RHEL-Remove-o-glance.patch => 0014-RHEL-Remove-o-glance.patch (97%) rename 0009-RHEL-tests-Remove-btrfs-test.patch => 0015-RHEL-tests-Remove-btrfs-test.patch (86%) rename 0010-RHEL-Remove-block-driver-option.patch => 0016-RHEL-Remove-block-driver-option.patch (97%) rename 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch => 0017-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch (99%) rename 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch => 0018-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch (96%) diff --git a/0001-vddk-Remove-io-vddk-noextents-option.patch b/0001-vddk-Remove-io-vddk-noextents-option.patch new file mode 100644 index 0000000..f2299d4 --- /dev/null +++ b/0001-vddk-Remove-io-vddk-noextents-option.patch @@ -0,0 +1,101 @@ +From 563c581fd0d68792211edf15632bac3f419888b7 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 9 Jul 2025 09:38:50 +0100 +Subject: [PATCH] vddk: Remove -io vddk-noextents option + +Commit 191b8cf418 ("input: Add undocumented -io vddk-noextents=true +option") added an option which could be used to insert the nbdkit +noextents filter on top of the VDDK source. This was designed so we +could test in production if this improved performance (which it +didn't). + +Since then we've spent more time investigating problems with +QueryAllocatedBlocks and believe we have a better solution in nbdkit. +See: +https://gitlab.com/nbdkit/nbdkit/-/commit/5a882e74cae3dbaa09bf3b942a02f9947b12f6e5 + +Reverts: commit 191b8cf418076ae3766b134ffa96eee048c7eb9d +--- + README | 1 - + input/input_vddk.ml | 35 ----------------------------------- + 2 files changed, 36 deletions(-) + +diff --git a/README b/README +index 49082a96..1cdbef15 100644 +--- a/README ++++ b/README +@@ -71,7 +71,6 @@ REQUIREMENTS + + nbdkit-blocksize-filter + + nbdkit-cow-filter + + nbdkit-multi-conn-filter +- + nbdkit-noextents-filter + + nbdkit-rate-filter + + nbdkit-retry-filter + +diff --git a/input/input_vddk.ml b/input/input_vddk.ml +index b70d76fb..ffc844fb 100644 +--- a/input/input_vddk.ml ++++ b/input/input_vddk.ml +@@ -58,7 +58,6 @@ All other settings are optional: + -io vddk-file=FILE Override nbdkit-vddk-plugin file= parameter + -io vddk-libdir=LIBDIR VDDK library parent directory + -io vddk-nfchostport=PORT VDDK nfchostport +- -io vddk-noextents=true Avoid slow VDDK QueryAllocatedBlocks API + -io vddk-port=PORT VDDK port + -io vddk-snapshot=SNAPSHOT-MOREF + VDDK snapshot moref +@@ -79,7 +78,6 @@ information on these settings. + "file"; + "libdir"; + "nfchostport"; +- "noextents"; + "port"; + "snapshot"; + "thumbprint"; +@@ -208,9 +206,6 @@ information on these settings. + try Some (List.assoc "libdir" io_options) with Not_found -> None in + let nfchostport = + try Some (List.assoc "nfchostport" io_options) with Not_found -> None in +- let noextents = +- try bool_of_string (List.assoc "noextents" io_options) +- with Not_found -> false in + let port = + try Some (List.assoc "port" io_options) with Not_found -> None in + let snapshot = +@@ -318,36 +313,6 @@ See also the virt-v2v-input-vmware(1) manual.") libNN + *) + Nbdkit.add_filter_if_available cmd "retry"; + +- (* VDDK's QueryAllocatedBlocks API is infamously slow. It appears +- * to block all other requests while it is running. This API is +- * also only called during the copy phase, not during conversion +- * (or if it is, extremely rarely). +- * +- * If fstrim was successful, then trimmed blocks are stored in +- * the COW filter (see below), and so requests for extents stop +- * at that layer. However for areas of the disk that fstrim +- * thinks contain data, we still have to go through to VDDK to +- * fetch extents. +- * +- * We could therefore add nbdkit-noextents-filter here (below COW, +- * above VDDK plugin) which stops extents requests from going +- * to VDDK, which would stop QueryAllocatedBlocks ever being +- * called. In my testing this is a moderate performance win. +- * +- * However ... in the case where fstrim failed, or for filesystems +- * or partitions on the disk that we don't understand, doing this +- * would mean that those are copied completely, as there would be +- * no extent data (nbdcopy will still sparsify them on the target, +- * but we'd have to copy all the bits from VMware). Because +- * here we don't know if this is the case, be conservative and +- * actually don't use this filter. +- * +- * If used, this filter should be close to the plugin and MUST +- * be below the COW filter. +- *) +- if noextents then +- Nbdkit.add_filter_if_available cmd "noextents"; +- + (* Split very large requests to avoid out of memory errors on the + * server. Since we're using this filter, also add minblock=512 + * although it will make no difference. diff --git a/0002-curl-ssh-vddk-file-Add-nbdkit-count-filter.patch b/0002-curl-ssh-vddk-file-Add-nbdkit-count-filter.patch new file mode 100644 index 0000000..70d01c4 --- /dev/null +++ b/0002-curl-ssh-vddk-file-Add-nbdkit-count-filter.patch @@ -0,0 +1,114 @@ +From df5f8c53e55e08f5468b7606ad499aaf09a34a38 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 9 Jul 2025 09:48:35 +0100 +Subject: [PATCH] curl, ssh, vddk, file: Add nbdkit-count-filter + +nbdkit-count-filter, added in nbdkit 1.45.1, prints a debug message +which just records the number of bytes read, written, trimmed or +zeroed. This is useful for determining how many bytes were actually +copied over the wire or written to disk, and that's a common question +that we currently have no easy way to answer. For more details about +this filter see: +https://gitlab.com/nbdkit/nbdkit/-/commit/3512c3ce9308b4d940119ac6cc87f1baa9afb655 +https://libguestfs.org/nbdkit-count-filter.1.html + +Use this filter (if available) unconditionally for all inputs that +read over the network, and for the common file-based outputs +(specifically -o kubevirt). + +It is only enabled if we're producing debug output (ie. conversion +logs). +--- + README | 1 + + input/input_vddk.ml | 7 +++++++ + input/nbdkit_curl.ml | 7 +++++++ + input/nbdkit_ssh.ml | 7 +++++++ + output/output.ml | 2 ++ + 5 files changed, 24 insertions(+) + +diff --git a/README b/README +index 1cdbef15..407869b4 100644 +--- a/README ++++ b/README +@@ -69,6 +69,7 @@ REQUIREMENTS + + nbdkit-vddk-plugin + + + nbdkit-blocksize-filter ++ + nbdkit-count-filter + + nbdkit-cow-filter + + nbdkit-multi-conn-filter + + nbdkit-rate-filter +diff --git a/input/input_vddk.ml b/input/input_vddk.ml +index ffc844fb..fc09c532 100644 +--- a/input/input_vddk.ml ++++ b/input/input_vddk.ml +@@ -313,6 +313,13 @@ See also the virt-v2v-input-vmware(1) manual.") libNN + *) + Nbdkit.add_filter_if_available cmd "retry"; + ++ (* Add the count filter if available, to report bytes read. ++ * Since it writes a debug message, only do this if verbose. ++ * This should be close to the plugin so we're reporting what ++ * is read over the wire. ++ *) ++ if verbose () then Nbdkit.add_filter_if_available cmd "count"; ++ + (* Split very large requests to avoid out of memory errors on the + * server. Since we're using this filter, also add minblock=512 + * although it will make no difference. +diff --git a/input/nbdkit_curl.ml b/input/nbdkit_curl.ml +index d8c832b8..f8a0213e 100644 +--- a/input/nbdkit_curl.ml ++++ b/input/nbdkit_curl.ml +@@ -58,6 +58,13 @@ let create_curl ?bandwidth ?cookie_script ?cookie_script_renew ?cor + *) + Nbdkit.add_filter_if_available cmd "retry"; + ++ (* Add the count filter if available, to report bytes read. ++ * Since it writes a debug message, only do this if verbose. ++ * This should be close to the plugin so we're reporting what ++ * is read over the wire. ++ *) ++ if verbose () then Nbdkit.add_filter_if_available cmd "count"; ++ + (* IMPORTANT! Add the COW filter. It must be furthest away + * except for the rate filter. + *) +diff --git a/input/nbdkit_ssh.ml b/input/nbdkit_ssh.ml +index e6d99ede..4e4c918f 100644 +--- a/input/nbdkit_ssh.ml ++++ b/input/nbdkit_ssh.ml +@@ -54,6 +54,13 @@ let create_ssh ?bandwidth ?cor ?(retry=true) + if retry then + Nbdkit.add_filter_if_available cmd "retry"; + ++ (* Add the count filter if available, to report bytes read. ++ * Since it writes a debug message, only do this if verbose. ++ * This should be close to the plugin so we're reporting what ++ * is read over the wire. ++ *) ++ if verbose () then Nbdkit.add_filter_if_available cmd "count"; ++ + (* IMPORTANT! Add the COW filter. It must be furthest away + * except for the rate filter. + *) +diff --git a/output/output.ml b/output/output.ml +index b3629372..65325538 100644 +--- a/output/output.ml ++++ b/output/output.ml +@@ -98,6 +98,7 @@ let output_to_local_file ?(changeuid = fun f -> f ()) ?(compressed = false) + let cmd = Nbdkit.create "file" in + Nbdkit.add_arg cmd "file" filename; + Nbdkit.add_arg cmd "cache" "none"; ++ if verbose () then Nbdkit.add_filter_if_available cmd "count"; + let _, pid = Nbdkit.run_unix socket cmd in + pid + +@@ -197,6 +198,7 @@ let create_local_output_disks dir + let cmd = Nbdkit.create "file" in + Nbdkit.add_arg cmd "dir" output_storage; + Nbdkit.add_arg cmd "cache" "none"; ++ if verbose () then Nbdkit.add_filter_if_available cmd "count"; + let _, pid = Nbdkit.run_unix socket cmd in + On_exit.kill pid; + diff --git a/0003-docs-Move-oo-verify-server-certificate-docs-to-alpha.patch b/0003-docs-Move-oo-verify-server-certificate-docs-to-alpha.patch new file mode 100644 index 0000000..0ba5ca4 --- /dev/null +++ b/0003-docs-Move-oo-verify-server-certificate-docs-to-alpha.patch @@ -0,0 +1,45 @@ +From 378967fc4984af4f06c586886a1148aebede8cff Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 8 Jul 2025 11:11:48 +0100 +Subject: [PATCH] docs: Move -oo verify-server-certificate docs to alphabetical + place + +This option wasn't in alphabetical order. +--- + docs/virt-v2v.pod | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index 3cfb0948..3eefe404 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -611,14 +611,6 @@ volume property. + When using I<-o qemu> only, this boots the guest immediately after + virt-v2v finishes. + +-=item B<-oo verify-server-certificate> +- +-=item B<-oo verify-server-certificate=>C +- +-For I<-o openstack> (L) only, this can +-be used to disable SSL certification validation when connecting to +-OpenStack by specifying I<-oo verify-server-certificate=false>. +- + =item B<-oo os->*B<=>* + + For I<-o openstack> (L) only, set optional +@@ -736,6 +728,14 @@ The OVF format understood by oVirt REST API. + For backward compatibility the default is I, but this may change in + the future. + ++=item B<-oo verify-server-certificate> ++ ++=item B<-oo verify-server-certificate=>C ++ ++For I<-o openstack> (L) only, this can ++be used to disable SSL certification validation when connecting to ++OpenStack by specifying I<-oo verify-server-certificate=false>. ++ + =item B<-op> file + + Supply a file containing a password to be used when connecting to the diff --git a/0004-o-kubevirt-Add-oo-disk-to-allow-disk-names-to-be-ove.patch b/0004-o-kubevirt-Add-oo-disk-to-allow-disk-names-to-be-ove.patch new file mode 100644 index 0000000..2e664a5 --- /dev/null +++ b/0004-o-kubevirt-Add-oo-disk-to-allow-disk-names-to-be-ove.patch @@ -0,0 +1,233 @@ +From 0d65b284930045f112542d9eaf6dd488efd98245 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 8 Jul 2025 10:40:48 +0100 +Subject: [PATCH] -o kubevirt: Add -oo disk to allow disk names to be + overridden + +Fixes: https://issues.redhat.com/browse/RHEL-101599 +--- + docs/virt-v2v.pod | 15 +++++++-- + output/output_kubevirt.ml | 58 ++++++++++++++++++++++++++------ + tests/Makefile.am | 2 ++ + tests/test-o-kubevirt-oo-disk.sh | 52 ++++++++++++++++++++++++++++ + 4 files changed, 115 insertions(+), 12 deletions(-) + create mode 100755 tests/test-o-kubevirt-oo-disk.sh + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index 3eefe404..5020d179 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -466,8 +466,9 @@ Set the output method to I. B + + In this mode, the converted guest is written to a local directory +-specified by I<-os /dir> (the directory must exist). The converted +-guest’s disks are written to: ++specified by I<-os /dir> (the directory must exist). ++ ++By default the converted guest’s disks are written to: + + /dir/name-sda + /dir/name-sdb +@@ -479,6 +480,8 @@ and guest metadata is created in the associated YAML file: + + where C is the guest name. + ++You can override the disk paths by using I<-oo disk=...> option(s). ++ + =item B<-o> B + + Set the output method to I. This is the default. +@@ -600,6 +603,14 @@ For outputs which support qcow2 format (I<-of qcow2>), this writes a + compressed qcow2 file. It is the equivalent to the I<-c> option of + L. + ++=item B<-oo disk=>DISK ++ ++For I<-o kubevirt> this overrides the path to each output disk, ++instead of using the default which is C etc in the output ++storage (I<-os>) path. If you use this option at all, you must repeat ++it once for each guest disk. If you don't use it, then the default ++method of putting disks in the output storage path is used. ++ + =item B<-oo guest-id=>C + + For I<-o openstack> (L) only, set a guest ID +diff --git a/output/output_kubevirt.ml b/output/output_kubevirt.ml +index 76ecd39d..eae9c049 100644 +--- a/output/output_kubevirt.ml ++++ b/output/output_kubevirt.ml +@@ -35,7 +35,8 @@ let rfc1123_re = + "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + + module Kubevirt = struct +- type poptions = bool * output_allocation * string * string * string ++ type poptions = ++ bool * string list option * output_allocation * string * string * string + + type t = unit + +@@ -49,15 +50,18 @@ module Kubevirt = struct + printf (f_"Output options that can be used with -o kubevirt: + + -oo compressed Compress the output file (used only with -of qcow2) ++ -oo disk=disk1 Specify filename of output disk (if used, must be ++ given once for each disk, else -os path is used) + ") + +- + let parse_options options source = + let compressed = ref false in ++ let disks = ref [] in + List.iter ( + function + | "compressed", "" -> compressed := true + | "compressed", v -> compressed := bool_of_string v ++ | "disk", v -> List.push_back disks v + | k, _ -> + error (f_"-o kubevirt: unknown output option ‘-oo %s’") k + ) options.output_options; +@@ -84,23 +88,57 @@ module Kubevirt = struct + end with an alphanumeric character. Rerun virt-v2v with \ + the '-on name' option to rename it."); + +- !compressed, options.output_alloc, options.output_format, ++ let disks = match !disks with [] -> None | disks -> Some disks in ++ ++ !compressed, disks, ++ options.output_alloc, options.output_format, + output_name, output_storage + + let setup dir options source input_disks = +- let compressed, output_alloc, output_format, output_name, output_storage = +- options in ++ let compressed, disks, ++ output_alloc, output_format, output_name, output_storage = options in + + let uris = +- create_local_output_disks dir ~compressed output_alloc output_format +- output_name output_storage input_disks in ++ match disks with ++ | None -> ++ create_local_output_disks dir ~compressed ++ output_alloc output_format output_name output_storage input_disks ++ | Some disks -> ++ (* -oo disk specified, so create the disks by hand. *) ++ let nr_input_disks = List.length input_disks ++ and nr_output_disks = List.length disks in ++ if nr_input_disks <> nr_output_disks then ++ error (f_"incorrect number of '-oo disk' parameters. This guest \ ++ has %d disks, but the parameter was used %d times.") ++ nr_input_disks nr_output_disks; ++ ++ let input_sizes = get_disk_sizes input_disks in ++ List.mapi ( ++ fun i (disk, size) -> ++ let socket = sprintf "%s/out%d" dir i in ++ On_exit.unlink socket; ++ ++ output_to_local_file ~compressed ++ output_alloc output_format disk size socket; ++ ++ NBD_URI.Unix (socket, None) ++ ) (List.combine disks input_sizes) ++ in ++ + (), uris + + let finalize dir options () output_disks source inspect target_meta = +- let _, output_alloc, output_format, output_name, output_storage = options in ++ let _, disks, ++ output_alloc, output_format, output_name, output_storage = options in + +- let doc = create_kubevirt_yaml source inspect target_meta +- (disk_path output_storage output_name) ++ (* This function will return the disk path for the i'th disk. *) ++ let disk_path = ++ match disks with ++ | None -> Output.disk_path output_storage output_name ++ | Some disks -> List.nth disks ++ in ++ ++ let doc = create_kubevirt_yaml source inspect target_meta disk_path + output_format output_name in + + let file = output_storage // output_name ^ ".yaml" in +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 62237092..3a8bab3c 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -95,6 +95,7 @@ TESTS = \ + test-networks-and-bridges.sh \ + test-o-glance.sh \ + test-o-kubevirt-fedora.sh \ ++ test-o-kubevirt-oo-disk.sh \ + test-o-kubevirt-windows.sh \ + test-o-libvirt.sh \ + test-o-local-qcow2-compressed.sh \ +@@ -288,6 +289,7 @@ EXTRA_DIST += \ + test-o-glance.sh \ + test-o-kubevirt-fedora.sh \ + test-o-kubevirt-fedora.yaml.expected \ ++ test-o-kubevirt-oo-disk.sh \ + test-o-kubevirt-windows.sh \ + test-o-kubevirt-windows.yaml.expected \ + test-o-libvirt.sh \ +diff --git a/tests/test-o-kubevirt-oo-disk.sh b/tests/test-o-kubevirt-oo-disk.sh +new file mode 100755 +index 00000000..e1e6fd61 +--- /dev/null ++++ b/tests/test-o-kubevirt-oo-disk.sh +@@ -0,0 +1,52 @@ ++#!/bin/bash - ++# libguestfs virt-v2v test script ++# Copyright (C) 2018-2025 Red Hat Inc. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ ++# Test -o kubevirt + -oo disk option. ++ ++set -e ++set -x ++ ++source ./functions.sh ++set -e ++set -x ++ ++skip_if_skipped ++requires test -f ../test-data/phony-guests/fedora.img ++ ++libvirt_uri="test://$abs_top_builddir/test-data/phony-guests/guests.xml" ++fedora=../test-data/phony-guests/fedora.img ++ ++d=test-o-kubevirt-oo-disk.d ++rm -rf $d ++cleanup_fn rm -r $d ++mkdir $d ++ ++# Run virt-v2v -o kubevirt. ++$VG virt-v2v --debug-gc \ ++ -i libvirt -ic "$libvirt_uri" fedora \ ++ -o kubevirt -oo disk=$d/disk.img -os $d ++ ++ls -l $d ++ ++cat $d/fedora.yaml ++ ++# Check the disk was created. ++test -f $d/disk.img ++ ++# Check the default path was _not_ created. ++! test -f $d/fedora-sda diff --git a/0005-output-Add-optional-create-parameter.patch b/0005-output-Add-optional-create-parameter.patch new file mode 100644 index 0000000..3e3260b --- /dev/null +++ b/0005-output-Add-optional-create-parameter.patch @@ -0,0 +1,141 @@ +From fb5722adb2b9336183c866295362b94abf07eb2f Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 8 Jul 2025 11:08:08 +0100 +Subject: [PATCH] output: Add optional ?create parameter + +This parameter of Output.create_local_output_disks and +Output.output_to_local_file allows the default creation of disks to be +skipped. It defaults to true (ie. create them) which is the normal +behaviour. + +This allows output modes to implement the '-oo create=false' option, +although none do so far. +--- + output/output.ml | 61 ++++++++++++++++++++++++++--------------------- + output/output.mli | 5 +++- + 2 files changed, 38 insertions(+), 28 deletions(-) + +diff --git a/output/output.ml b/output/output.ml +index 65325538..15cb50db 100644 +--- a/output/output.ml ++++ b/output/output.ml +@@ -66,7 +66,9 @@ let error_if_disk_count_gt input_disks n = + + type on_exit_kill = Kill | KillAndWait + +-let output_to_local_file ?(changeuid = fun f -> f ()) ?(compressed = false) ++let output_to_local_file ?(changeuid = fun f -> f ()) ++ ?(compressed = false) ++ ?(create = true) + ?(on_exit_kill = Kill) + output_alloc output_format filename size socket = + (* Check nbdkit is installed and has the required plugin. *) +@@ -83,13 +85,15 @@ let output_to_local_file ?(changeuid = fun f -> f ()) ?(compressed = false) + is a local qcow2-format file, i.e. ‘-of qcow2’") + ); + +- let g = open_guestfs () in +- let preallocation = +- match output_alloc with +- | Preallocated -> Some "full" +- | Sparse -> None in +- changeuid ( +- fun () -> g#disk_create ?preallocation filename output_format size ++ if create then ( ++ let g = open_guestfs () in ++ let preallocation = ++ match output_alloc with ++ | Preallocated -> Some "full" ++ | Sparse -> None in ++ changeuid ( ++ fun () -> g#disk_create ?preallocation filename output_format size ++ ) + ); + + let pid = +@@ -151,6 +155,7 @@ let disk_path os name i = + + let create_local_output_disks dir + ?(compressed = false) ++ ?(create = true) + output_alloc output_format output_name output_storage + input_disks = + let input_sizes = get_disk_sizes input_disks in +@@ -171,25 +176,27 @@ let create_local_output_disks dir + error (f_"nbdkit-file-plugin is not installed or not working"); + + (* We still have to create the output disks. *) +- let g = open_guestfs () in +- let preallocation = +- match output_alloc with +- | Preallocated -> Some "full" +- | Sparse -> None in +- List.iter ( +- fun (size, filename) -> +- g#disk_create ?preallocation filename output_format size; ++ if create then ( ++ let g = open_guestfs () in ++ let preallocation = ++ match output_alloc with ++ | Preallocated -> Some "full" ++ | Sparse -> None in ++ List.iter ( ++ fun (size, filename) -> ++ g#disk_create ?preallocation filename output_format size; + +- (* We've had issues with there not being enough space to write +- * the disk image. Run df on the output filename. df follows +- * symlinks and reports the space on the filesystem. But don't +- * fail here if df cannot be run. +- *) +- if verbose () then ( +- let cmd = sprintf "df %s 1>&2" (quote filename) in +- ignore (Sys.command cmd) +- ) +- ) (List.combine input_sizes output_disk_names); ++ (* We've had issues with there not being enough space to write ++ * the disk image. Run df on the output filename. df follows ++ * symlinks and reports the space on the filesystem. But don't ++ * fail here if df cannot be run. ++ *) ++ if verbose () then ( ++ let cmd = sprintf "df %s 1>&2" (quote filename) in ++ ignore (Sys.command cmd) ++ ) ++ ) (List.combine input_sizes output_disk_names) ++ ); + + let socket = sprintf "%s/out0" dir in + On_exit.unlink socket; +@@ -220,7 +227,7 @@ let create_local_output_disks dir + On_exit.unlink socket; + + (* Create the actual output disk. *) +- output_to_local_file ~compressed output_alloc output_format ++ output_to_local_file ~compressed ~create output_alloc output_format + outdisk size socket; + + NBD_URI.Unix (socket, None) +diff --git a/output/output.mli b/output/output.mli +index 51bdde06..63a1c3f6 100644 +--- a/output/output.mli ++++ b/output/output.mli +@@ -84,6 +84,7 @@ val error_if_disk_count_gt : NBD_URI.t list -> int -> unit + + val create_local_output_disks : string -> + ?compressed:bool -> ++ ?create:bool -> + Types.output_allocation -> + string -> string -> string -> + NBD_URI.t list -> +@@ -98,7 +99,9 @@ val create_local_output_disks : string -> + type on_exit_kill = Kill | KillAndWait + + val output_to_local_file : ?changeuid:((unit -> unit) -> unit) -> +- ?compressed:bool -> ?on_exit_kill:on_exit_kill -> ++ ?compressed:bool -> ++ ?create:bool -> ++ ?on_exit_kill:on_exit_kill -> + Types.output_allocation -> + string -> string -> int64 -> string -> + unit diff --git a/0006-o-kubevirt-Add-oo-create-false-to-avoid-disk-creatio.patch b/0006-o-kubevirt-Add-oo-create-false-to-avoid-disk-creatio.patch new file mode 100644 index 0000000..af5ebbe --- /dev/null +++ b/0006-o-kubevirt-Add-oo-create-false-to-avoid-disk-creatio.patch @@ -0,0 +1,119 @@ +From 667a69fb8ddd7d27388a1b31af022158c533c0bb Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 8 Jul 2025 11:15:56 +0100 +Subject: [PATCH] -o kubevirt: Add -oo create=false to avoid disk creation + +Indicate that an external process will create the disks, so normal +creation of disks by virt-v2v should be skipped. + +Testing +------- + +I couldn't think of a way to add a test this since g#disk_create +(implemented in libguestfs.git:lib/create.c) will open(O_TRUNC) + +truncate(2) the existing disk, so the inode will remain the same. +Instead I tested it by hand by not creating the disk and observing the +error from nbdkit: + + nbdkit: error: realpath: /var/tmp/disk.img: No such file or directory + virt-v2v: error: nbdkit did not start up. There may be errors printed by + nbdkit above. + +Fixes: https://issues.redhat.com/browse/RHEL-101599 +--- + docs/virt-v2v.pod | 5 +++++ + output/output_kubevirt.ml | 17 +++++++++++------ + 2 files changed, 16 insertions(+), 6 deletions(-) + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index 5020d179..e228fb33 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -603,6 +603,11 @@ For outputs which support qcow2 format (I<-of qcow2>), this writes a + compressed qcow2 file. It is the equivalent to the I<-c> option of + L. + ++=item B<-oo create=false> ++ ++For I<-o kubevirt>, indicate that another management process will ++create the output disks, so do not (re-)create them in virt-v2v. ++ + =item B<-oo disk=>DISK + + For I<-o kubevirt> this overrides the path to each output disk, +diff --git a/output/output_kubevirt.ml b/output/output_kubevirt.ml +index eae9c049..8a5ab56d 100644 +--- a/output/output_kubevirt.ml ++++ b/output/output_kubevirt.ml +@@ -36,7 +36,8 @@ let rfc1123_re = + + module Kubevirt = struct + type poptions = +- bool * string list option * output_allocation * string * string * string ++ bool * bool * string list option * ++ output_allocation * string * string * string + + type t = unit + +@@ -50,17 +51,21 @@ module Kubevirt = struct + printf (f_"Output options that can be used with -o kubevirt: + + -oo compressed Compress the output file (used only with -of qcow2) ++ -oo create=false Do not create the output disks + -oo disk=disk1 Specify filename of output disk (if used, must be + given once for each disk, else -os path is used) + ") + + let parse_options options source = + let compressed = ref false in ++ let create = ref true in + let disks = ref [] in + List.iter ( + function + | "compressed", "" -> compressed := true + | "compressed", v -> compressed := bool_of_string v ++ | "create", "" -> create := true ++ | "create", v -> create := bool_of_string v + | "disk", v -> List.push_back disks v + | k, _ -> + error (f_"-o kubevirt: unknown output option ‘-oo %s’") k +@@ -90,18 +95,18 @@ module Kubevirt = struct + + let disks = match !disks with [] -> None | disks -> Some disks in + +- !compressed, disks, ++ !compressed, !create, disks, + options.output_alloc, options.output_format, + output_name, output_storage + + let setup dir options source input_disks = +- let compressed, disks, ++ let compressed, create, disks, + output_alloc, output_format, output_name, output_storage = options in + + let uris = + match disks with + | None -> +- create_local_output_disks dir ~compressed ++ create_local_output_disks dir ~compressed ~create + output_alloc output_format output_name output_storage input_disks + | Some disks -> + (* -oo disk specified, so create the disks by hand. *) +@@ -118,7 +123,7 @@ module Kubevirt = struct + let socket = sprintf "%s/out%d" dir i in + On_exit.unlink socket; + +- output_to_local_file ~compressed ++ output_to_local_file ~compressed ~create + output_alloc output_format disk size socket; + + NBD_URI.Unix (socket, None) +@@ -128,7 +133,7 @@ module Kubevirt = struct + (), uris + + let finalize dir options () output_disks source inspect target_meta = +- let _, disks, ++ let _, _, disks, + output_alloc, output_format, output_name, output_storage = options in + + (* This function will return the disk path for the i'th disk. *) diff --git a/0001-RHEL-Fixes-for-libguestfs-winsupport.patch b/0007-RHEL-Fixes-for-libguestfs-winsupport.patch similarity index 98% rename from 0001-RHEL-Fixes-for-libguestfs-winsupport.patch rename to 0007-RHEL-Fixes-for-libguestfs-winsupport.patch index e5ce5b7..24af7e3 100644 --- a/0001-RHEL-Fixes-for-libguestfs-winsupport.patch +++ b/0007-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -1,4 +1,4 @@ -From 42d326e84452862518293f435df4e1db1f3b5696 Mon Sep 17 00:00:00 2001 +From 9936298e0fcfd8dd7e59e9546bda6d9c6f0f250d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 30 Aug 2015 03:21:57 -0400 Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport. diff --git a/0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch similarity index 94% rename from 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch rename to 0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch index f2cbfe9..eb5b647 100644 --- a/0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +++ b/0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch @@ -1,4 +1,4 @@ -From 0edaf8c3992e6243c5c7ecf152c78fa3b2b47201 Mon Sep 17 00:00:00 2001 +From 584811b0cd9b42ab239ba6e4f39a366faf54bbbc Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 28 Sep 2014 19:14:43 +0100 Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode diff --git a/0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch similarity index 89% rename from 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch rename to 0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch index 6066f20..6335455 100644 --- a/0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +++ b/0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -1,4 +1,4 @@ -From d16c02df196557e526a0a099d382afce84a843d5 Mon Sep 17 00:00:00 2001 +From 6d1f3fcb6c5aa2a8805604def4c6a07d7b2db4f3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 30 Sep 2014 10:50:27 +0100 Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option @@ -43,7 +43,7 @@ index 49f00754..bdf12c5d 100644 =item B<-o null> diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 3cfb0948..600de391 100644 +index e228fb33..35886561 100644 --- a/docs/virt-v2v.pod +++ b/docs/virt-v2v.pod @@ -160,11 +160,6 @@ Since F contains the path(s) to the guest disk @@ -58,7 +58,7 @@ index 3cfb0948..600de391 100644 =head1 OPTIONS =over 4 -@@ -546,9 +541,6 @@ This is similar to I<-o local>, except that a shell script is written +@@ -549,9 +544,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>. @@ -68,7 +68,7 @@ index 3cfb0948..600de391 100644 =item B<-o> B Set the output method to I. -@@ -606,11 +598,6 @@ For I<-o openstack> (L) only, set a guest ID +@@ -622,11 +614,6 @@ For I<-o openstack> (L) only, set a guest ID which is saved on each Cinder volume in the C volume property. @@ -77,9 +77,9 @@ index 3cfb0948..600de391 100644 -When using I<-o qemu> only, this boots the guest immediately after -virt-v2v finishes. - - =item B<-oo verify-server-certificate> + =item B<-oo os->*B<=>* - =item B<-oo verify-server-certificate=>C + For I<-o openstack> (L) only, set optional diff --git a/output/output_qemu.ml b/output/output_qemu.ml index 909b6e10..37371aad 100644 --- a/output/output_qemu.ml diff --git a/0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch similarity index 92% rename from 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch rename to 0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch index 2a6bf5a..8ee335a 100644 --- a/0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +++ b/0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -1,4 +1,4 @@ -From 99614f4fb8d044b9a850d8e7934524b4e7450473 Mon Sep 17 00:00:00 2001 +From 92630606fcd96402742b56f7ba51c50828cff4b3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 24 Apr 2015 09:45:41 -0400 Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu diff --git a/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch similarity index 93% rename from 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch rename to 0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch index c84b748..8688f86 100644 --- a/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ b/0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -1,4 +1,4 @@ -From 67e67669418624469b001328dddd10337b9bfa95 Mon Sep 17 00:00:00 2001 +From c81f440ff00ca0dfafccbfad46b9d8707d96c7f9 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Mar 2017 14:21:37 +0100 Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) diff --git a/0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch similarity index 97% rename from 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch rename to 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch index 2f1ae06..a5bc4ac 100644 --- a/0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +++ b/0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -1,4 +1,4 @@ -From aa3915841987509eda99faf2548cc3ee429d825b Mon Sep 17 00:00:00 2001 +From c97ccc32ceb443f01950f2d8745413deb6848afa Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Tue, 26 Mar 2019 09:42:25 +0100 Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests diff --git a/0007-RHEL-Remove-input-from-Xen.patch b/0013-RHEL-Remove-input-from-Xen.patch similarity index 98% rename from 0007-RHEL-Remove-input-from-Xen.patch rename to 0013-RHEL-Remove-input-from-Xen.patch index be276b2..6dae772 100644 --- a/0007-RHEL-Remove-input-from-Xen.patch +++ b/0013-RHEL-Remove-input-from-Xen.patch @@ -1,4 +1,4 @@ -From 35c4a9f5c9f92fe15055ec337a94ad9f743706d6 Mon Sep 17 00:00:00 2001 +From fe169b7a7647d3dbf723ce07f5da37f697677e06 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:35:54 +0100 Subject: [PATCH] RHEL: Remove input from Xen @@ -229,7 +229,7 @@ index 0417e89f..00000000 - -Copyright (C) 2009-2025 Red Hat Inc. diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 600de391..fd4362fc 100644 +index 35886561..8e31fd0b 100644 --- a/docs/virt-v2v.pod +++ b/docs/virt-v2v.pod @@ -12,7 +12,7 @@ virt-v2v - Convert a guest to use KVM @@ -277,7 +277,7 @@ index 600de391..fd4362fc 100644 =item B<-if> format -@@ -867,7 +859,7 @@ bandwidth. Virt-v2v should be able to copy guest data at gigabit +@@ -883,7 +875,7 @@ bandwidth. Virt-v2v should be able to copy guest data at gigabit ethernet speeds or greater. Ensure that the network connections between servers (conversion @@ -286,7 +286,7 @@ index 600de391..fd4362fc 100644 possible. =head2 Disk space -@@ -1166,38 +1158,6 @@ changes to the Windows Registry and filesystem. +@@ -1182,38 +1174,6 @@ changes to the Windows Registry and filesystem. =head1 NOTES diff --git a/0008-RHEL-Remove-o-glance.patch b/0014-RHEL-Remove-o-glance.patch similarity index 97% rename from 0008-RHEL-Remove-o-glance.patch rename to 0014-RHEL-Remove-o-glance.patch index 8ad49c2..583f65d 100644 --- a/0008-RHEL-Remove-o-glance.patch +++ b/0014-RHEL-Remove-o-glance.patch @@ -1,4 +1,4 @@ -From f246ed3ee4928d45f778d3d9ed25bccbf6f8c13c Mon Sep 17 00:00:00 2001 +From 72a651dfa3de1dfff58b7454860cf872d0baedd3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 30 Jun 2021 11:15:52 +0100 Subject: [PATCH] RHEL: Remove -o glance @@ -100,7 +100,7 @@ index 9bef76ea..04595816 100644 =head1 AUTHOR diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index fd4362fc..3cedc823 100644 +index 8e31fd0b..fde60a8c 100644 --- a/docs/virt-v2v.pod +++ b/docs/virt-v2v.pod @@ -439,14 +439,6 @@ See L below. @@ -118,7 +118,7 @@ index fd4362fc..3cedc823 100644 =item B<-o> B Set the output method to I. B (or F). @@ -130,7 +130,7 @@ index fd4362fc..3cedc823 100644 =item I<-o local> =item I<-o qemu> -@@ -1037,13 +1024,6 @@ See also L. +@@ -1053,13 +1040,6 @@ See also L. Because of how Cinder volumes are presented as F block devices, using I<-o openstack> normally requires that virt-v2v is run as root. diff --git a/0009-RHEL-tests-Remove-btrfs-test.patch b/0015-RHEL-tests-Remove-btrfs-test.patch similarity index 86% rename from 0009-RHEL-tests-Remove-btrfs-test.patch rename to 0015-RHEL-tests-Remove-btrfs-test.patch index 131bffe..ad8f275 100644 --- a/0009-RHEL-tests-Remove-btrfs-test.patch +++ b/0015-RHEL-tests-Remove-btrfs-test.patch @@ -1,4 +1,4 @@ -From 3e6fd182fb537a6a057b119a15b4dcf04ce3aacd Mon Sep 17 00:00:00 2001 +From 26291b59b8735fc1efc8be282067bd1c18d747f3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 5 Jul 2022 11:58:09 +0100 Subject: [PATCH] RHEL: tests: Remove btrfs test @@ -9,7 +9,7 @@ RHEL does not have btrfs so this test always fails. 1 file changed, 1 deletion(-) diff --git a/tests/Makefile.am b/tests/Makefile.am -index 62237092..51d84bc9 100644 +index 3a8bab3c..f9c748ed 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -64,7 +64,6 @@ TESTS = \ diff --git a/0010-RHEL-Remove-block-driver-option.patch b/0016-RHEL-Remove-block-driver-option.patch similarity index 97% rename from 0010-RHEL-Remove-block-driver-option.patch rename to 0016-RHEL-Remove-block-driver-option.patch index 0e7434a..628a5ba 100644 --- a/0010-RHEL-Remove-block-driver-option.patch +++ b/0016-RHEL-Remove-block-driver-option.patch @@ -1,4 +1,4 @@ -From c7c4c87c7cade4f79048e4fd7e03f548e8d5e4ca Mon Sep 17 00:00:00 2001 +From f26534ee1cfec5fe3d02e437d8340cf11dd48b54 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 28 Apr 2023 12:28:19 +0100 Subject: [PATCH] RHEL: Remove --block-driver option @@ -37,7 +37,7 @@ index 6c02a99c..3d0d1b28 100644 =item B<--colours> diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 3cedc823..f0a2f231 100644 +index fde60a8c..0e68de10 100644 --- a/docs/virt-v2v.pod +++ b/docs/virt-v2v.pod @@ -212,16 +212,6 @@ The options are silently ignored for other input methods. @@ -101,7 +101,7 @@ index 604a662d..a91ee39d 100644 ks = opthandle.ks; network_map; diff --git a/tests/Makefile.am b/tests/Makefile.am -index 51d84bc9..f64316fd 100644 +index f9c748ed..c0aa8498 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -57,7 +57,6 @@ TESTS_ENVIRONMENT = $(top_builddir)/run --test diff --git a/0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch b/0017-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch similarity index 99% rename from 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch rename to 0017-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch index a32ea9c..1a4c3d9 100644 --- a/0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +++ b/0017-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch @@ -1,4 +1,4 @@ -From eee5f0c29ee2b06b721e1ccfe0f85fb7193825f3 Mon Sep 17 00:00:00 2001 +From fe727ba294110fe49244760176751d605288e246 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 8 Jul 2024 09:56:54 +0100 Subject: [PATCH] RHEL: Remove -o ovirt, -o ovirt-upload and -o vdsm modes @@ -360,7 +360,7 @@ index 6ba04ad0..00000000 - -Copyright (C) 2009-2025 Red Hat Inc. diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index f0a2f231..19ec1619 100644 +index 0e68de10..b63da9f3 100644 --- a/docs/virt-v2v.pod +++ b/docs/virt-v2v.pod @@ -14,9 +14,9 @@ virt-v2v - Convert a guest to use KVM @@ -407,7 +407,7 @@ index f0a2f231..19ec1619 100644 =head2 Convert from ESXi hypervisor over SSH to local libvirt You have an ESXi hypervisor called C with SSH access -@@ -487,26 +470,6 @@ no metadata is written. +@@ -490,26 +473,6 @@ no metadata is written. Set the output method to OpenStack. See L. @@ -434,7 +434,7 @@ index f0a2f231..19ec1619 100644 =item B<-o> B Set the output method to I. -@@ -515,15 +478,6 @@ This is similar to I<-o local>, except that a shell script is written +@@ -518,15 +481,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>. @@ -450,7 +450,7 @@ index f0a2f231..19ec1619 100644 =item B<-oa> B =item B<-oa> B -@@ -586,117 +540,11 @@ For I<-o openstack> (L) only, set optional +@@ -594,117 +548,11 @@ For I<-o openstack> (L) only, set optional OpenStack authentication. For example I<-oo os-username=>NAME is equivalent to C. @@ -565,10 +565,10 @@ index f0a2f231..19ec1619 100644 -For backward compatibility the default is I, but this may change in -the future. - - =item B<-op> file + =item B<-oo verify-server-certificate> - Supply a file containing a password to be used when connecting to the -@@ -714,28 +562,6 @@ For I<-o libvirt>, this is a libvirt directory pool + =item B<-oo verify-server-certificate=>C +@@ -730,28 +578,6 @@ For I<-o libvirt>, this is a libvirt directory pool For I<-o local> and I<-o qemu>, this is a directory name. The directory must exist. @@ -597,7 +597,7 @@ index f0a2f231..19ec1619 100644 =item B<--parallel> N Enable parallel copying if the guest has multiple disks. I is the -@@ -975,26 +801,6 @@ require either root or a special user: +@@ -991,26 +817,6 @@ require either root or a special user: =over 4 @@ -624,7 +624,7 @@ index f0a2f231..19ec1619 100644 =item Writing to libvirt When using I<-o libvirt>, you may need to run virt-v2v as root so that -@@ -1541,7 +1347,6 @@ virt-v2v binary. Typical output looks like this: +@@ -1557,7 +1363,6 @@ virt-v2v binary. Typical output looks like this: virt-v2v libguestfs-rewrite colours-option @@ -3616,10 +3616,10 @@ index 093c9b9a..1f8259e3 100644 val output_modes : output_mode list diff --git a/tests/Makefile.am b/tests/Makefile.am -index f64316fd..58dc74b8 100644 +index c0aa8498..df221b73 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am -@@ -98,12 +98,7 @@ TESTS = \ +@@ -99,12 +99,7 @@ TESTS = \ test-o-local-qcow2-compressed.sh \ test-o-null.sh \ test-o-openstack.sh \ @@ -3632,7 +3632,7 @@ index f64316fd..58dc74b8 100644 test-oa-option-qcow2.sh \ test-oa-option-raw.sh \ test-of-option.sh \ -@@ -292,17 +287,7 @@ EXTRA_DIST += \ +@@ -294,17 +289,7 @@ EXTRA_DIST += \ test-o-local-qcow2-compressed.sh \ test-o-null.sh \ test-o-openstack.sh \ diff --git a/0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch b/0018-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch similarity index 96% rename from 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch rename to 0018-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch index 11c5b5a..bdb8c8b 100644 --- a/0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +++ b/0018-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch @@ -1,4 +1,4 @@ -From 192e435f741ae9d392553575a674f4cd6118ffe8 Mon Sep 17 00:00:00 2001 +From 73632b2c2ab525059c788162d801a59f05161355 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 9 Jul 2024 11:30:09 +0100 Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported diff --git a/virt-v2v.spec b/virt-v2v.spec index 94b1276..a3f463c 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -7,7 +7,7 @@ Name: virt-v2v Epoch: 1 Version: 2.8.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Convert a virtual machine to run on KVM License: GPL-2.0-or-later AND LGPL-2.0-or-later @@ -27,18 +27,24 @@ Source3: copy-patches.sh # https://github.com/libguestfs/virt-v2v/commits/rhel-10.1 # Patches. -Patch0001: 0001-RHEL-Fixes-for-libguestfs-winsupport.patch -Patch0002: 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch -Patch0003: 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch -Patch0004: 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch -Patch0005: 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch -Patch0006: 0006-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch -Patch0007: 0007-RHEL-Remove-input-from-Xen.patch -Patch0008: 0008-RHEL-Remove-o-glance.patch -Patch0009: 0009-RHEL-tests-Remove-btrfs-test.patch -Patch0010: 0010-RHEL-Remove-block-driver-option.patch -Patch0011: 0011-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch -Patch0012: 0012-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch +Patch0001: 0001-vddk-Remove-io-vddk-noextents-option.patch +Patch0002: 0002-curl-ssh-vddk-file-Add-nbdkit-count-filter.patch +Patch0003: 0003-docs-Move-oo-verify-server-certificate-docs-to-alpha.patch +Patch0004: 0004-o-kubevirt-Add-oo-disk-to-allow-disk-names-to-be-ove.patch +Patch0005: 0005-output-Add-optional-create-parameter.patch +Patch0006: 0006-o-kubevirt-Add-oo-create-false-to-avoid-disk-creatio.patch +Patch0007: 0007-RHEL-Fixes-for-libguestfs-winsupport.patch +Patch0008: 0008-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +Patch0009: 0009-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +Patch0010: 0010-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +Patch0011: 0011-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +Patch0012: 0012-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +Patch0013: 0013-RHEL-Remove-input-from-Xen.patch +Patch0014: 0014-RHEL-Remove-o-glance.patch +Patch0015: 0015-RHEL-tests-Remove-btrfs-test.patch +Patch0016: 0016-RHEL-Remove-block-driver-option.patch +Patch0017: 0017-RHEL-Remove-o-ovirt-o-ovirt-upload-and-o-vdsm-modes.patch +Patch0018: 0018-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch %if !0%{?rhel} # libguestfs hasn't been built on i686 for a while since there is no @@ -329,7 +335,7 @@ done %changelog -* Thu Jun 19 2025 Richard W.M. Jones - 1:2.8.1-1 +* Wed Jul 09 2025 Richard W.M. Jones - 1:2.8.1-2 - Rebase to virt-v2v 2.8.1 related: RHEL-81735 - Fix virt-v2v -v --install dnf5 error @@ -344,8 +350,6 @@ done resolves: RHEL-88860 - Print better mountpoint stats in debug output resolves: RHEL-88862 -- Add virt-v2v -io vddk-noextents=true so we can test noextents - resolves: RHEL-88864 - Remove several ancient, deprecated options resolves: RHEL-88867 - virt-v2v-inspector is failing on snapshots of running VMs @@ -362,6 +366,10 @@ done resolves: RHEL-99745 - Fix xfs_repair out of memory error resolves: RHEL-99313 +- Remove virt-v2v -io vddk-noextents=true option + resolves: RHEL-102619 +- Add -o kubevirt -oo disk and -oo create options + resolves: RHEL-101599 * Tue Feb 11 2025 Richard W.M. Jones - 1:2.7.1-4 - Rebase to virt-v2v 2.7.1