[Libguestfs] [V2V PATCH v2 3/5] convert: introduce "block_driver" convert option
Laszlo Ersek
lersek at redhat.com
Mon Mar 13 08:20:17 UTC 2023
On 3/7/23 20:40, Andrey Drobyshev wrote:
> From: "Richard W.M. Jones" <rjones at redhat.com>
>
> When injecting a block VirtIO driver during conversion, we rely on the
> predefined list of names of such drivers. Order in this list denotes the
> priority (see common/mlcustomize/inject_virtio_win.ml).
>
> This commit introduces the "block_driver" convert option, setting its
> value to the default Virtio_blk and making sure it's being properly passed
> to the conversion functions. Along with the means of altering the drivers
> list (introduced in a separate commit in the common submodule), this option
> will be brought to command line, giving us the opportunity to choose the
> block driver to be used on conversion.
>
> Originally-by: Richard W.M. Jones <rjones at redhat.com>
> Signed-off-by: Andrey Drobyshev <andrey.drobyshev at virtuozzo.com>
> ---
> convert/convert.ml | 9 ++++++---
> convert/convert.mli | 1 +
> convert/convert_linux.ml | 2 +-
> convert/convert_linux.mli | 3 ++-
> convert/convert_windows.ml | 2 +-
> convert/convert_windows.mli | 3 ++-
> in-place/in_place.ml | 3 ++-
> inspector/inspector.ml | 3 ++-
> v2v/v2v.ml | 3 ++-
> 9 files changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/convert/convert.ml b/convert/convert.ml
> index 084619c8..9c76f76d 100644
> --- a/convert/convert.ml
> +++ b/convert/convert.ml
> @@ -31,6 +31,7 @@ open Utils
> module G = Guestfs
>
> type options = {
> + block_driver : guestcaps_block_type;
> keep_serial_console : bool;
> ks : key_store;
> network_map : Networks.t;
> @@ -88,7 +89,7 @@ let rec convert dir options source =
> (* Conversion. *)
> let guestcaps =
> do_convert g source inspect i_firmware
> - options.keep_serial_console options.static_ips in
> + options.block_driver options.keep_serial_console options.static_ips in
>
> g#umount_all ();
>
> @@ -221,7 +222,8 @@ and do_fstrim g inspect =
> ) fses
>
> (* Conversion. *)
> -and do_convert g source inspect i_firmware keep_serial_console interfaces =
> +and do_convert g source inspect i_firmware
> + block_driver keep_serial_console interfaces =
> (match inspect.i_product_name with
> | "unknown" ->
> message (f_"Converting the guest to run on KVM")
> @@ -246,7 +248,8 @@ and do_convert g source inspect i_firmware keep_serial_console interfaces =
> inspect.i_type inspect.i_distro in
> debug "picked conversion module %s" conversion_name;
> let guestcaps =
> - convert g source inspect i_firmware keep_serial_console interfaces in
> + convert g source inspect i_firmware
> + block_driver keep_serial_console interfaces in
> debug "%s" (string_of_guestcaps guestcaps);
>
> (* Did we manage to install virtio drivers? *)
> diff --git a/convert/convert.mli b/convert/convert.mli
> index 3bd39e2d..c63bf6f0 100644
> --- a/convert/convert.mli
> +++ b/convert/convert.mli
> @@ -17,6 +17,7 @@
> *)
>
> type options = {
> + block_driver : Types.guestcaps_block_type; (** [--block-driver] option *)
> keep_serial_console : bool;
> ks : Tools_utils.key_store; (** [--key] option *)
> network_map : Networks.t; (** [-b] and [-n] options *)
> diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml
> index dab4f36d..8d702084 100644
> --- a/convert/convert_linux.ml
> +++ b/convert/convert_linux.ml
> @@ -34,7 +34,7 @@ open Linux_kernels
> module G = Guestfs
>
> (* The conversion function. *)
> -let convert (g : G.guestfs) source inspect i_firmware keep_serial_console _ =
> +let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
> (*----------------------------------------------------------------------*)
> (* Inspect the guest first. We already did some basic inspection in
> * the common v2v.ml code, but that has to deal with generic guests
> diff --git a/convert/convert_linux.mli b/convert/convert_linux.mli
> index 6eb272e9..dc6968fe 100644
> --- a/convert/convert_linux.mli
> +++ b/convert/convert_linux.mli
> @@ -23,5 +23,6 @@
> Mint and Kali are supported by this module. *)
>
> val convert : Guestfs.guestfs -> Types.source -> Types.inspect ->
> - Firmware.i_firmware -> bool -> Types.static_ip list ->
> + Firmware.i_firmware -> Types.guestcaps_block_type ->
> + bool -> Types.static_ip list ->
> Types.guestcaps
> diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml
> index 4f672487..1ace2948 100644
> --- a/convert/convert_windows.ml
> +++ b/convert/convert_windows.ml
> @@ -38,7 +38,7 @@ module G = Guestfs
> * time the Windows VM is booted on KVM.
> *)
>
> -let convert (g : G.guestfs) _ inspect i_firmware _ static_ips =
> +let convert (g : G.guestfs) _ inspect i_firmware block_driver _ static_ips =
> (*----------------------------------------------------------------------*)
> (* Inspect the Windows guest. *)
>
> diff --git a/convert/convert_windows.mli b/convert/convert_windows.mli
> index 42dac9f5..33a14f65 100644
> --- a/convert/convert_windows.mli
> +++ b/convert/convert_windows.mli
> @@ -21,5 +21,6 @@
> This module converts a Windows guest to run on KVM. *)
>
> val convert : Guestfs.guestfs -> Types.source -> Types.inspect ->
> - Firmware.i_firmware -> bool -> Types.static_ip list ->
> + Firmware.i_firmware -> Types.guestcaps_block_type ->
> + bool -> Types.static_ip list ->
> Types.guestcaps
> diff --git a/in-place/in_place.ml b/in-place/in_place.ml
> index 68ef9965..2049db16 100644
> --- a/in-place/in_place.ml
> +++ b/in-place/in_place.ml
> @@ -294,7 +294,8 @@ read the man page virt-v2v-in-place(1).
>
> (* Get the conversion options. *)
> let conv_options = {
> - Convert.keep_serial_console = true;
> + Convert.block_driver = Virtio_blk;
> + keep_serial_console = true;
> ks = opthandle.ks;
> network_map;
> root_choice;
> diff --git a/inspector/inspector.ml b/inspector/inspector.ml
> index a6428946..02d1a0e7 100644
> --- a/inspector/inspector.ml
> +++ b/inspector/inspector.ml
> @@ -324,7 +324,8 @@ read the man page virt-v2v-inspector(1).
>
> (* Get the conversion options. *)
> let conv_options = {
> - Convert.keep_serial_console = true;
> + Convert.block_driver = Virtio_blk;
> + keep_serial_console = true;
> ks = opthandle.ks;
> network_map;
> root_choice;
> diff --git a/v2v/v2v.ml b/v2v/v2v.ml
> index 13fe477a..22f7c631 100644
> --- a/v2v/v2v.ml
> +++ b/v2v/v2v.ml
> @@ -524,7 +524,8 @@ read the man page virt-v2v(1).
>
> (* Get the conversion options. *)
> let conv_options = {
> - Convert.keep_serial_console = not remove_serial_console;
> + Convert.block_driver = Virtio_blk;
> + keep_serial_console = not remove_serial_console;
> ks = opthandle.ks;
> network_map;
> root_choice;
Acked-by: Laszlo Ersek <lersek at redhat.com>
More information about the Libguestfs
mailing list