[Libguestfs] [v2v PATCH 0/7] Fix "virtio-transitional" regression for Windows guests

Laszlo Ersek lersek at redhat.com
Fri Jan 28 16:12:11 UTC 2022


Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2043333

My series merged as commit range f9d5448d2efe..f0cea012d018 (for RHBZ
1942325) caused a regression when converting Windows guests.

Namely, osinfo_os_get_all_devices(), the core of that series, only
reports devices that an OS supports "out of the box". So, for modern
Windows releases, Q35 is reported, but virtio1.0-net is never reported,
as the latter requires external drivers. As a result, the series in
question (incorrectly) requires virtio-transitional for Windows guests.

The current series fixes the issue as follows:

- The first two patches fix existent bugs in our "copy_from_libosinfo"
  function.

- Patches #3 and #4 OCaml-ify the osinfo_device_driver_get_devices()
  function from libosinfo.

- Patch #5 improves libosinfo-related logging.

- Patch #6 extracts the "best virtio driver for the guest" logic from
  "copy_from_libosinfo".

- Patch #7 grabs the device list supported by the "best driver", and
  concatenates it with the list of devices supported by the OS "out of
  the box". The unified list is then checked for both Q35 and virtio-1.0
  support.

Note: I still don't have a local environment for testing this against
actual (and, long-term!) Windows guests. I'll do that later, and/or
prepare a RHEL9 scratch build for Virt-tools QE at RH, for testing this
series.

Thanks,
Laszlo

Laszlo Ersek (7):
  convert/windows_virtio: fix copy_from_libosinfo <-> VIRTIO_WIN
    priority
  convert/windows_virtio: map 32-bit arch name from libguestfs to osinfo
  convert/libosinfo: factor out v2v_osinfo_device_list_to_value_list()
  convert/libosinfo: retrieve the device list for OsinfoDeviceDriver
  convert/libosinfo_utils: debug-log the devices supported by a driver
  convert/libosinfo_utils: extract "best_driver" from
    "windows_virtio.ml"
  convert/convert_windows: consult "best driver"'s dev list for
    virtio-1.0

 convert/convert_windows.ml     |  15 +++-
 convert/libosinfo-c.c          | 132 ++++++++++++++++++---------------
 convert/libosinfo.ml           |  19 ++---
 convert/libosinfo.mli          |  19 ++---
 convert/libosinfo_utils.ml     |  56 +++++++++++---
 convert/libosinfo_utils.mli    |  18 ++++-
 convert/windows_virtio.ml      |  51 ++-----------
 docs/virt-v2v.pod              |  24 ++++--
 tests/test-v2v-cdrom.expected  |   2 +-
 tests/test-v2v-floppy.expected |   2 +-
 tests/test-v2v-i-ova.xml       |   8 +-
 11 files changed, 197 insertions(+), 149 deletions(-)


base-commit: 68af35d48ca845133ede948d36ee351d171e3de8
-- 
2.19.1.3.g30247aa5d201



More information about the Libguestfs mailing list