+Mon Mar 2 12:37:04 EST 2009 Cole Robinson <crobinso@redhat.com>
+
+ * src/domain_conf.c src/domain_conf.h src/libvirt_private.syms
+ src/qemu_driver.c:
+ Better error reporting from qemu AttachDevice
+
Mon Mar 2 12:34:25 EST 2009 Cole Robinson <crobinso@redhat.com>
* src/bridge.c src/bridge.h src/libvirt_private.syms src/network_conf.c
VIR_DOMAIN_DEVICE_INPUT,
VIR_DOMAIN_DEVICE_SOUND,
VIR_DOMAIN_DEVICE_HOSTDEV,
+
+ VIR_DOMAIN_DEVICE_LAST,
};
typedef struct _virDomainDeviceDef virDomainDeviceDef;
VIR_ENUM_DECL(virDomainBoot)
VIR_ENUM_DECL(virDomainFeature)
VIR_ENUM_DECL(virDomainLifecycle)
+VIR_ENUM_DECL(virDomainDevice)
VIR_ENUM_DECL(virDomainDisk)
VIR_ENUM_DECL(virDomainDiskDevice)
VIR_ENUM_DECL(virDomainDiskBus)
case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
ret = qemudDomainChangeEjectableMedia(dom->conn, vm, dev);
break;
+
case VIR_DOMAIN_DISK_DEVICE_DISK:
if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_USB) {
ret = qemudDomainAttachUsbMassstorageDevice(dom->conn, vm, dev);
} else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_SCSI ||
dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
ret = qemudDomainAttachPciDiskDevice(dom->conn, vm, dev);
+ } else {
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
+ _("disk bus '%s' cannot be hotplugged."),
+ virDomainDiskBusTypeToString(dev->data.disk->bus));
+ goto cleanup;
}
break;
+
default:
qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
- "%s", _("this disk device type cannot be attached"));
+ _("disk device type '%s' cannot be hotplugged"),
+ virDomainDiskDeviceTypeToString(dev->data.disk->device));
goto cleanup;
}
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
ret = qemudDomainAttachHostDevice(dom->conn, vm, dev);
} else {
qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
- "%s", _("this device type cannot be attached"));
+ _("device type '%s' cannot be attached"),
+ virDomainDeviceTypeToString(dev->type));
goto cleanup;
}