[Libguestfs] [PATCH v2 2/2] v2v: Copy *.dll files since they can be part of the driver (RHBZ#1311373).

Richard W.M. Jones rjones at redhat.com
Fri Mar 4 10:26:22 UTC 2016


Commit 47b5f245bec908f803f0a89c3b1e3166cfe33aad originally introduced
the filtering of files by extension.  For the QXL driver at least,
there is a qxldd.dll file which is part of the driver, so that must be
copied to the guest as well.

Do not copy 'WdfCoInstaller*.dll' files to the guest.

Thanks: Vadim Rozenfeld, Tingting Zheng.
---
 v2v/v2v_unit_tests.ml | 74 +++++++++++++++++++++++++--------------------------
 v2v/windows_virtio.ml |  6 ++++-
 2 files changed, 42 insertions(+), 38 deletions(-)

diff --git a/v2v/v2v_unit_tests.ml b/v2v/v2v_unit_tests.ml
index 0b1b589..4da2f8a 100644
--- a/v2v/v2v_unit_tests.ml
+++ b/v2v/v2v_unit_tests.ml
@@ -266,13 +266,13 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "NetKVM/2k12/amd64/netkvm.inf", Some win2k12_64;
     "NetKVM/2k12/amd64/netkvm.pdb", Some win2k12_64;
     "NetKVM/2k12/amd64/netkvm.sys", Some win2k12_64;
-    "NetKVM/2k12/amd64/netkvmco.dll", None;
+    "NetKVM/2k12/amd64/netkvmco.dll", Some win2k12_64;
     "NetKVM/2k12/amd64/readme.doc", None;
     "NetKVM/2k12R2/amd64/netkvm.cat", Some win2k12r2_64;
     "NetKVM/2k12R2/amd64/netkvm.inf", Some win2k12r2_64;
     "NetKVM/2k12R2/amd64/netkvm.pdb", Some win2k12r2_64;
     "NetKVM/2k12R2/amd64/netkvm.sys", Some win2k12r2_64;
-    "NetKVM/2k12R2/amd64/netkvmco.dll", None;
+    "NetKVM/2k12R2/amd64/netkvmco.dll", Some win2k12r2_64;
     "NetKVM/2k12R2/amd64/readme.doc", None;
     "NetKVM/2k3/amd64/netkvm.cat", Some win2k3_64;
     "NetKVM/2k3/amd64/netkvm.inf", Some win2k3_64;
@@ -286,55 +286,55 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "NetKVM/2k8/amd64/netkvm.inf", Some win2k8_64;
     "NetKVM/2k8/amd64/netkvm.pdb", Some win2k8_64;
     "NetKVM/2k8/amd64/netkvm.sys", Some win2k8_64;
-    "NetKVM/2k8/amd64/netkvmco.dll", None;
+    "NetKVM/2k8/amd64/netkvmco.dll", Some win2k8_64;
     "NetKVM/2k8/amd64/readme.doc", None;
     "NetKVM/2k8/x86/netkvm.cat", Some win2k8_32;
     "NetKVM/2k8/x86/netkvm.inf", Some win2k8_32;
     "NetKVM/2k8/x86/netkvm.pdb", Some win2k8_32;
     "NetKVM/2k8/x86/netkvm.sys", Some win2k8_32;
-    "NetKVM/2k8/x86/netkvmco.dll", None;
+    "NetKVM/2k8/x86/netkvmco.dll", Some win2k8_32;
     "NetKVM/2k8/x86/readme.doc", None;
     "NetKVM/2k8R2/amd64/netkvm.cat", Some win2k8r2_64;
     "NetKVM/2k8R2/amd64/netkvm.inf", Some win2k8r2_64;
     "NetKVM/2k8R2/amd64/netkvm.pdb", Some win2k8r2_64;
     "NetKVM/2k8R2/amd64/netkvm.sys", Some win2k8r2_64;
-    "NetKVM/2k8R2/amd64/netkvmco.dll", None;
+    "NetKVM/2k8R2/amd64/netkvmco.dll", Some win2k8r2_64;
     "NetKVM/2k8R2/amd64/readme.doc", None;
     "NetKVM/w7/amd64/netkvm.cat", Some win7_64;
     "NetKVM/w7/amd64/netkvm.inf", Some win7_64;
     "NetKVM/w7/amd64/netkvm.pdb", Some win7_64;
     "NetKVM/w7/amd64/netkvm.sys", Some win7_64;
-    "NetKVM/w7/amd64/netkvmco.dll", None;
+    "NetKVM/w7/amd64/netkvmco.dll", Some win7_64;
     "NetKVM/w7/amd64/readme.doc", None;
     "NetKVM/w7/x86/netkvm.cat", Some win7_32;
     "NetKVM/w7/x86/netkvm.inf", Some win7_32;
     "NetKVM/w7/x86/netkvm.pdb", Some win7_32;
     "NetKVM/w7/x86/netkvm.sys", Some win7_32;
-    "NetKVM/w7/x86/netkvmco.dll", None;
+    "NetKVM/w7/x86/netkvmco.dll", Some win7_32;
     "NetKVM/w7/x86/readme.doc", None;
     "NetKVM/w8.1/amd64/netkvm.cat", Some win8_1_64;
     "NetKVM/w8.1/amd64/netkvm.inf", Some win8_1_64;
     "NetKVM/w8.1/amd64/netkvm.pdb", Some win8_1_64;
     "NetKVM/w8.1/amd64/netkvm.sys", Some win8_1_64;
-    "NetKVM/w8.1/amd64/netkvmco.dll", None;
+    "NetKVM/w8.1/amd64/netkvmco.dll", Some win8_1_64;
     "NetKVM/w8.1/amd64/readme.doc", None;
     "NetKVM/w8.1/x86/netkvm.cat", Some win8_1_32;
     "NetKVM/w8.1/x86/netkvm.inf", Some win8_1_32;
     "NetKVM/w8.1/x86/netkvm.pdb", Some win8_1_32;
     "NetKVM/w8.1/x86/netkvm.sys", Some win8_1_32;
-    "NetKVM/w8.1/x86/netkvmco.dll", None;
+    "NetKVM/w8.1/x86/netkvmco.dll", Some win8_1_32;
     "NetKVM/w8.1/x86/readme.doc", None;
     "NetKVM/w8/amd64/netkvm.cat", Some win8_64;
     "NetKVM/w8/amd64/netkvm.inf", Some win8_64;
     "NetKVM/w8/amd64/netkvm.pdb", Some win8_64;
     "NetKVM/w8/amd64/netkvm.sys", Some win8_64;
-    "NetKVM/w8/amd64/netkvmco.dll", None;
+    "NetKVM/w8/amd64/netkvmco.dll", Some win8_64;
     "NetKVM/w8/amd64/readme.doc", None;
     "NetKVM/w8/x86/netkvm.cat", Some win8_32;
     "NetKVM/w8/x86/netkvm.inf", Some win8_32;
     "NetKVM/w8/x86/netkvm.pdb", Some win8_32;
     "NetKVM/w8/x86/netkvm.sys", Some win8_32;
-    "NetKVM/w8/x86/netkvmco.dll", None;
+    "NetKVM/w8/x86/netkvmco.dll", Some win8_32;
     "NetKVM/w8/x86/readme.doc", None;
     "NetKVM/xp/x86/netkvm.cat", Some winxp_32;
     "NetKVM/xp/x86/netkvm.inf", Some winxp_32;
@@ -348,78 +348,78 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "viorng/2k12/amd64/viorng.inf", Some win2k12_64;
     "viorng/2k12/amd64/viorng.pdb", Some win2k12_64;
     "viorng/2k12/amd64/viorng.sys", Some win2k12_64;
-    "viorng/2k12/amd64/viorngci.dll", None;
-    "viorng/2k12/amd64/viorngum.dll", None;
+    "viorng/2k12/amd64/viorngci.dll", Some win2k12_64;
+    "viorng/2k12/amd64/viorngum.dll", Some win2k12_64;
     "viorng/2k12R2/amd64/WdfCoInstaller01011.dll", None;
     "viorng/2k12R2/amd64/viorng.cat", Some win2k12r2_64;
     "viorng/2k12R2/amd64/viorng.inf", Some win2k12r2_64;
     "viorng/2k12R2/amd64/viorng.pdb", Some win2k12r2_64;
     "viorng/2k12R2/amd64/viorng.sys", Some win2k12r2_64;
-    "viorng/2k12R2/amd64/viorngci.dll", None;
-    "viorng/2k12R2/amd64/viorngum.dll", None;
+    "viorng/2k12R2/amd64/viorngci.dll", Some win2k12r2_64;
+    "viorng/2k12R2/amd64/viorngum.dll", Some win2k12r2_64;
     "viorng/2k8/amd64/WdfCoInstaller01009.dll", None;
     "viorng/2k8/amd64/viorng.cat", Some win2k8_64;
     "viorng/2k8/amd64/viorng.inf", Some win2k8_64;
     "viorng/2k8/amd64/viorng.pdb", Some win2k8_64;
     "viorng/2k8/amd64/viorng.sys", Some win2k8_64;
-    "viorng/2k8/amd64/viorngci.dll", None;
-    "viorng/2k8/amd64/viorngum.dll", None;
+    "viorng/2k8/amd64/viorngci.dll", Some win2k8_64;
+    "viorng/2k8/amd64/viorngum.dll", Some win2k8_64;
     "viorng/2k8/x86/WdfCoInstaller01009.dll", None;
     "viorng/2k8/x86/viorng.cat", Some win2k8_32;
     "viorng/2k8/x86/viorng.inf", Some win2k8_32;
     "viorng/2k8/x86/viorng.pdb", Some win2k8_32;
     "viorng/2k8/x86/viorng.sys", Some win2k8_32;
-    "viorng/2k8/x86/viorngci.dll", None;
-    "viorng/2k8/x86/viorngum.dll", None;
+    "viorng/2k8/x86/viorngci.dll", Some win2k8_32;
+    "viorng/2k8/x86/viorngum.dll", Some win2k8_32;
     "viorng/2k8R2/amd64/WdfCoInstaller01009.dll", None;
     "viorng/2k8R2/amd64/viorng.cat", Some win2k8r2_64;
     "viorng/2k8R2/amd64/viorng.inf", Some win2k8r2_64;
     "viorng/2k8R2/amd64/viorng.pdb", Some win2k8r2_64;
     "viorng/2k8R2/amd64/viorng.sys", Some win2k8r2_64;
-    "viorng/2k8R2/amd64/viorngci.dll", None;
-    "viorng/2k8R2/amd64/viorngum.dll", None;
+    "viorng/2k8R2/amd64/viorngci.dll", Some win2k8r2_64;
+    "viorng/2k8R2/amd64/viorngum.dll", Some win2k8r2_64;
     "viorng/w7/amd64/WdfCoInstaller01009.dll", None;
     "viorng/w7/amd64/viorng.cat", Some win7_64;
     "viorng/w7/amd64/viorng.inf", Some win7_64;
     "viorng/w7/amd64/viorng.pdb", Some win7_64;
     "viorng/w7/amd64/viorng.sys", Some win7_64;
-    "viorng/w7/amd64/viorngci.dll", None;
-    "viorng/w7/amd64/viorngum.dll", None;
+    "viorng/w7/amd64/viorngci.dll", Some win7_64;
+    "viorng/w7/amd64/viorngum.dll", Some win7_64;
     "viorng/w7/x86/WdfCoInstaller01009.dll", None;
     "viorng/w7/x86/viorng.cat", Some win7_32;
     "viorng/w7/x86/viorng.inf", Some win7_32;
     "viorng/w7/x86/viorng.pdb", Some win7_32;
     "viorng/w7/x86/viorng.sys", Some win7_32;
-    "viorng/w7/x86/viorngci.dll", None;
-    "viorng/w7/x86/viorngum.dll", None;
+    "viorng/w7/x86/viorngci.dll", Some win7_32;
+    "viorng/w7/x86/viorngum.dll", Some win7_32;
     "viorng/w8.1/amd64/WdfCoInstaller01011.dll", None;
     "viorng/w8.1/amd64/viorng.cat", Some win8_1_64;
     "viorng/w8.1/amd64/viorng.inf", Some win8_1_64;
     "viorng/w8.1/amd64/viorng.pdb", Some win8_1_64;
     "viorng/w8.1/amd64/viorng.sys", Some win8_1_64;
-    "viorng/w8.1/amd64/viorngci.dll", None;
-    "viorng/w8.1/amd64/viorngum.dll", None;
+    "viorng/w8.1/amd64/viorngci.dll", Some win8_1_64;
+    "viorng/w8.1/amd64/viorngum.dll", Some win8_1_64;
     "viorng/w8.1/x86/WdfCoInstaller01011.dll", None;
     "viorng/w8.1/x86/viorng.cat", Some win8_1_32;
     "viorng/w8.1/x86/viorng.inf", Some win8_1_32;
     "viorng/w8.1/x86/viorng.pdb", Some win8_1_32;
     "viorng/w8.1/x86/viorng.sys", Some win8_1_32;
-    "viorng/w8.1/x86/viorngci.dll", None;
-    "viorng/w8.1/x86/viorngum.dll", None;
+    "viorng/w8.1/x86/viorngci.dll", Some win8_1_32;
+    "viorng/w8.1/x86/viorngum.dll", Some win8_1_32;
     "viorng/w8/amd64/WdfCoInstaller01011.dll", None;
     "viorng/w8/amd64/viorng.cat", Some win8_64;
     "viorng/w8/amd64/viorng.inf", Some win8_64;
     "viorng/w8/amd64/viorng.pdb", Some win8_64;
     "viorng/w8/amd64/viorng.sys", Some win8_64;
-    "viorng/w8/amd64/viorngci.dll", None;
-    "viorng/w8/amd64/viorngum.dll", None;
+    "viorng/w8/amd64/viorngci.dll", Some win8_64;
+    "viorng/w8/amd64/viorngum.dll", Some win8_64;
     "viorng/w8/x86/WdfCoInstaller01011.dll", None;
     "viorng/w8/x86/viorng.cat", Some win8_32;
     "viorng/w8/x86/viorng.inf", Some win8_32;
     "viorng/w8/x86/viorng.pdb", Some win8_32;
     "viorng/w8/x86/viorng.sys", Some win8_32;
-    "viorng/w8/x86/viorngci.dll", None;
-    "viorng/w8/x86/viorngum.dll", None;
+    "viorng/w8/x86/viorngci.dll", Some win8_32;
+    "viorng/w8/x86/viorngum.dll", Some win8_32;
     "vioscsi/2k12/amd64/vioscsi.cat", Some win2k12_64;
     "vioscsi/2k12/amd64/vioscsi.inf", Some win2k12_64;
     "vioscsi/2k12/amd64/vioscsi.pdb", Some win2k12_64;
@@ -619,7 +619,7 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "drivers/i386/Win2008/vioscsi.inf", Some win2k8_32;
     "drivers/i386/Win7/viostor.inf", Some win7_32;
     "drivers/i386/Win7/viostor.sys", Some win7_32;
-    "drivers/i386/Win7/qxldd.dll", None;
+    "drivers/i386/Win7/qxldd.dll", Some win7_32;
     "drivers/i386/Win7/qxl.sys", Some win7_32;
     "drivers/i386/Win7/vioscsi.cat", Some win7_32;
     "drivers/i386/Win7/netkvm.inf", Some win7_32;
@@ -647,7 +647,7 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "drivers/i386/Win8/vioscsi.inf", Some win8_32;
     "drivers/i386/WinXP/viostor.inf", Some winxp_32;
     "drivers/i386/WinXP/viostor.sys", Some winxp_32;
-    "drivers/i386/WinXP/qxldd.dll", None;
+    "drivers/i386/WinXP/qxldd.dll", Some winxp_32;
     "drivers/i386/WinXP/qxl.sys", Some winxp_32;
     "drivers/i386/WinXP/netkvm.inf", Some winxp_32;
     "drivers/i386/WinXP/netkvm.sys", Some winxp_32;
@@ -675,7 +675,7 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "drivers/amd64/Win2008/vioscsi.inf", Some win2k8_64;
     "drivers/amd64/Win7/viostor.inf", Some win7_64;
     "drivers/amd64/Win7/viostor.sys", Some win7_64;
-    "drivers/amd64/Win7/qxldd.dll", None;
+    "drivers/amd64/Win7/qxldd.dll", Some win7_64;
     "drivers/amd64/Win7/qxl.sys", Some win7_64;
     "drivers/amd64/Win7/vioscsi.cat", Some win7_64;
     "drivers/amd64/Win7/netkvm.inf", Some win7_64;
@@ -712,7 +712,7 @@ let test_virtio_iso_path_matches_guest_os ctx =
     "drivers/amd64/Win2012/vioscsi.inf", Some win2k12_64;
     "drivers/amd64/Win2008R2/viostor.inf", Some win2k8r2_64;
     "drivers/amd64/Win2008R2/viostor.sys", Some win2k8r2_64;
-    "drivers/amd64/Win2008R2/qxldd.dll", None;
+    "drivers/amd64/Win2008R2/qxldd.dll", Some win2k8r2_64;
     "drivers/amd64/Win2008R2/qxl.sys", Some win2k8r2_64;
     "drivers/amd64/Win2008R2/vioscsi.cat", Some win2k8r2_64;
     "drivers/amd64/Win2008R2/netkvm.inf", Some win2k8r2_64;
diff --git a/v2v/windows_virtio.ml b/v2v/windows_virtio.ml
index e63f39e..fd13578 100644
--- a/v2v/windows_virtio.ml
+++ b/v2v/windows_virtio.ml
@@ -426,9 +426,13 @@ and virtio_iso_path_matches_guest_os path inspect =
     in
 
     (* Skip files without specific extensions. *)
-    let extensions = ["cat"; "inf"; "pdb"; "sys"] in
+    let extensions = ["cat"; "dll"; "inf"; "pdb"; "sys"] in
     if not (List.mem extension extensions) then raise Not_found;
 
+    (* Skip WdfCoInstaller*.dll files - these should not be copied. *)
+    if String.is_prefix lc_basename "wdfcoinstaller" && extension = "dll" then
+      raise Not_found;
+
     (* Using the full path, work out what version of Windows
      * this driver is for.  Paths can be things like:
      * "NetKVM/2k12R2/amd64/netkvm.sys" or
-- 
2.5.0




More information about the Libguestfs mailing list