]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Prohibit setting tray status as open for block type disk
authorOsier Yang <jyang@redhat.com>
Wed, 14 Mar 2012 15:26:49 +0000 (23:26 +0800)
committerOsier Yang <jyang@redhat.com>
Fri, 23 Mar 2012 15:12:02 +0000 (23:12 +0800)
src/qemu/qemu_command.c

index ed390c17d59714a3f0ef6a8c18dedcf0c73e2b9f..b9ff143f53ec353a05f3a0ddecaee62190edfd49 100644 (file)
@@ -1963,6 +1963,13 @@ qemuBuildDriveStr(virConnectPtr conn ATTRIBUTE_UNUSED,
                 break;
             }
         } else {
+            if ((disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK) &&
+                (disk->tray_status == VIR_DOMAIN_DISK_TRAY_OPEN)) {
+                qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                                _("tray status 'open' is invalid for "
+                                  "block type disk"));
+                goto error;
+            }
             virBufferEscape(&opt, ',', ",", "file=%s,", disk->src);
         }
     }
@@ -4641,6 +4648,14 @@ qemuBuildCommandLine(virConnectPtr conn,
             const char *fmt;
             virDomainDiskDefPtr disk = def->disks[i];
 
+            if ((disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK) &&
+                (disk->tray_status == VIR_DOMAIN_DISK_TRAY_OPEN)) {
+                qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                                _("tray status 'open' is invalid for "
+                                  "block type disk"));
+                goto error;
+            }
+
             if (disk->bus == VIR_DOMAIN_DISK_BUS_USB) {
                 if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
                     virCommandAddArg(cmd, "-usbdevice");