]> xenbits.xensource.com Git - libvirt.git/commitdiff
Taint domains using cdrom-passthrough
authorJohn Ferlan <jferlan@redhat.com>
Tue, 12 May 2015 19:58:31 +0000 (15:58 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 20 May 2015 11:29:13 +0000 (07:29 -0400)
https://bugzilla.redhat.com/show_bug.cgi?id=976387

For a domain configured using the host cdrom, we should taint the domain
due to problems encountered when the host and guest try to control the tray.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/qemu/qemu_domain.c
src/qemu/qemu_driver.c

index bfdc94e1b917945d0d66964499d71aec91d608af..d49d70f866fc00481ae972dd92b8c825350c064a 100644 (file)
@@ -101,7 +101,8 @@ VIR_ENUM_IMPL(virDomainTaint, VIR_DOMAIN_TAINT_LAST,
               "disk-probing",
               "external-launch",
               "host-cpu",
-              "hook-script");
+              "hook-script",
+              "cdrom-passthrough");
 
 VIR_ENUM_IMPL(virDomainVirt, VIR_DOMAIN_VIRT_LAST,
               "qemu",
index d8a8e31dd398f2ffa716ccd1348d481b77626cff..f93d73ef107c200c55493570962a2efa466d7f6d 100644 (file)
@@ -2288,6 +2288,7 @@ typedef enum {
     VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH,  /* Externally launched guest domain */
     VIR_DOMAIN_TAINT_HOST_CPU,         /* Host CPU passthrough in use */
     VIR_DOMAIN_TAINT_HOOK,             /* Domain (possibly) changed via hook script */
+    VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,/* CDROM passthrough */
 
     VIR_DOMAIN_TAINT_LAST
 } virDomainTaintFlags;
index 608eed7109ac4333239ab72b863d2d66b81451af..db8554b79e3fd7a89fdaa6f105350b80713b18b9 100644 (file)
@@ -2079,6 +2079,12 @@ void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
         qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
                            logFD);
 
+    if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
+        virStorageSourceGetActualType(disk->src) == VIR_STORAGE_TYPE_BLOCK &&
+        disk->src->path)
+        qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,
+                           logFD);
+
     virObjectUnref(cfg);
 }
 
index 0cc0a29fb2d2c736d54cc5fb41f0353bc71f8afc..a2f8e24f771ccd1183e8a7f2bff7497538a826ea 100644 (file)
@@ -8202,6 +8202,7 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn,
 
     switch ((virDomainDeviceType) dev->type) {
     case VIR_DOMAIN_DEVICE_DISK:
+        qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, -1);
         ret = qemuDomainChangeDiskMediaLive(conn, vm, dev, driver, force);
         break;
     case VIR_DOMAIN_DEVICE_GRAPHICS: