mrc0mmand / rpms / libguestfs

Forked from rpms/libguestfs 3 years ago
Clone
Blob Blame History Raw
From eddfb0a765e0246d0fb397414f32403f055488a3 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 18 May 2017 15:59:38 +0100
Subject: [PATCH] lib: Add VIRTIO_DEVICE_NAME macro to handle virtio-mmio vs
 CCW vs virtio-PCI.

(cherry picked from commit a5bd493e3f90945cb8e913f9c680bedbdf26aaaa)

PT: the VIRTIO_DEVICE_NAME macros are left in guestfs-internal.h, since
the VIRTIO_* macros were used in other places than launch-direct.c.
---
 lib/guestfs-internal.h | 22 +++++-----------------
 lib/launch-direct.c    | 16 ++++++++--------
 lib/launch-libvirt.c   |  2 +-
 lib/qemu.c             |  2 +-
 4 files changed, 15 insertions(+), 27 deletions(-)

diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index f035e0931..d962aacd4 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -142,27 +142,15 @@
 /* Maximum size of Windows explorer.exe.  2.6MB on Windows 7. */
 #define MAX_WINDOWS_EXPLORER_SIZE (4 * 1000 * 1000)
 
-/* Differences in device names on ARMv7 (virtio-mmio), s/390x (CCW) vs
- * normal hardware with PCI.
+/* Differences in qemu device names on ARMv7 (virtio-mmio), s/390x
+ * (CCW) vs normal hardware with PCI.
  */
 #if defined(__arm__)
-#define VIRTIO_BLK "virtio-blk-device"
-#define VIRTIO_SCSI "virtio-scsi-device"
-#define VIRTIO_SERIAL "virtio-serial-device"
-#define VIRTIO_NET "virtio-net-device"
-#define VIRTIO_RNG "virtio-rng-device"
+#define VIRTIO_DEVICE_NAME(type) type "-device"
 #elif defined(__s390x__)
-#define VIRTIO_BLK "virtio-blk-ccw"
-#define VIRTIO_SCSI "virtio-scsi-ccw"
-#define VIRTIO_SERIAL "virtio-serial-ccw"
-#define VIRTIO_NET "virtio-net-ccw"
-#define VIRTIO_RNG "virtio-rng-ccw"
+#define VIRTIO_DEVICE_NAME(type) type "-ccw"
 #else
-#define VIRTIO_BLK "virtio-blk-pci"
-#define VIRTIO_SCSI "virtio-scsi-pci"
-#define VIRTIO_SERIAL "virtio-serial-pci"
-#define VIRTIO_NET "virtio-net-pci"
-#define VIRTIO_RNG "virtio-rng-pci"
+#define VIRTIO_DEVICE_NAME(type) type "-pci"
 #endif
 
 /* Machine types. */
diff --git a/lib/launch-direct.c b/lib/launch-direct.c
index c8841bfe4..0fef05927 100644
--- a/lib/launch-direct.c
+++ b/lib/launch-direct.c
@@ -349,7 +349,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
    */
   if (guestfs_int_qemu_supports (g, data->qemu_data, "-global")) {
     ADD_CMDLINE ("-global");
-    ADD_CMDLINE (VIRTIO_BLK ".scsi=off");
+    ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-blk") ".scsi=off");
   }
 
   if (guestfs_int_qemu_supports (g, data->qemu_data, "-nodefconfig"))
@@ -463,11 +463,11 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
    * when needing entropy.
    */
   if (guestfs_int_qemu_supports_device (g, data->qemu_data,
-                                        VIRTIO_RNG)) {
+                                        VIRTIO_DEVICE_NAME ("virtio-rng"))) {
     ADD_CMDLINE ("-object");
     ADD_CMDLINE ("rng-random,filename=/dev/urandom,id=rng0");
     ADD_CMDLINE ("-device");
-    ADD_CMDLINE (VIRTIO_RNG ",rng=rng0");
+    ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-rng") ",rng=rng0");
   }
 
   /* Add drives */
@@ -477,7 +477,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
   if (virtio_scsi) {
     /* Create the virtio-scsi bus. */
     ADD_CMDLINE ("-device");
-    ADD_CMDLINE (VIRTIO_SCSI ",id=scsi");
+    ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-scsi") ",id=scsi");
   }
 
   ITER_DRIVES (g, i, drv) {
@@ -564,7 +564,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
       ADD_CMDLINE ("-drive");
       ADD_CMDLINE_PRINTF ("%s,if=none" /* sic */, param);
       ADD_CMDLINE ("-device");
-      ADD_CMDLINE_PRINTF (VIRTIO_BLK ",drive=hd%zu", i);
+      ADD_CMDLINE_PRINTF (VIRTIO_DEVICE_NAME ("virtio-blk") ",drive=hd%zu", i);
     }
   }
 
@@ -581,7 +581,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
     }
     else {
       ADD_CMDLINE ("-device");
-      ADD_CMDLINE (VIRTIO_BLK ",drive=appliance");
+      ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-blk") ",drive=appliance");
     }
 
     appliance_dev = make_appliance_dev (g, virtio_scsi);
@@ -589,7 +589,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
 
   /* Create the virtio serial bus. */
   ADD_CMDLINE ("-device");
-  ADD_CMDLINE (VIRTIO_SERIAL);
+  ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-serial"));
 
   /* Create the serial console. */
 #ifndef __s390x__
@@ -626,7 +626,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
     ADD_CMDLINE ("-netdev");
     ADD_CMDLINE ("user,id=usernet,net=169.254.0.0/16");
     ADD_CMDLINE ("-device");
-    ADD_CMDLINE (VIRTIO_NET ",netdev=usernet");
+    ADD_CMDLINE (VIRTIO_DEVICE_NAME ("virtio-net") ",netdev=usernet");
   }
 
   ADD_CMDLINE ("-append");
diff --git a/lib/launch-libvirt.c b/lib/launch-libvirt.c
index 49bd40583..d10c7cb40 100644
--- a/lib/launch-libvirt.c
+++ b/lib/launch-libvirt.c
@@ -1803,7 +1803,7 @@ construct_libvirt_xml_qemu_cmdline (guestfs_h *g,
       } end_element ();
 
       start_element ("qemu:arg") {
-        attribute ("value", VIRTIO_NET ",netdev=usernet");
+        attribute ("value", VIRTIO_DEVICE_NAME ("virtio-net") ",netdev=usernet");
       } end_element ();
     }
 
diff --git a/lib/qemu.c b/lib/qemu.c
index c9debe937..887e31bc4 100644
--- a/lib/qemu.c
+++ b/lib/qemu.c
@@ -619,7 +619,7 @@ guestfs_int_qemu_supports_virtio_scsi (guestfs_h *g, struct qemu_data *data,
     if (old_or_broken_virtio_scsi (qemu_version))
       data->virtio_scsi = 2;
     else {
-      r = guestfs_int_qemu_supports_device (g, data, VIRTIO_SCSI);
+      r = guestfs_int_qemu_supports_device (g, data, VIRTIO_DEVICE_NAME ("virtio-scsi"));
       if (r > 0)
         data->virtio_scsi = 1;
       else if (r == 0)
-- 
2.14.3