mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: Rename qemud\?CmdFlags to qemuCaps
The new name complies more with the fact that it contains a set of qemuCapsFlags.
This commit is contained in:
parent
a96d08dc53
commit
23d935bd97
@ -377,7 +377,7 @@ error:
|
||||
|
||||
int
|
||||
qemuCapsProbeCPUModels(const char *qemu,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
const char *arch,
|
||||
unsigned int *count,
|
||||
const char ***cpus)
|
||||
@ -400,7 +400,7 @@ qemuCapsProbeCPUModels(const char *qemu,
|
||||
}
|
||||
|
||||
cmd = virCommandNewArgList(qemu, "-cpu", "?", NULL);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NODEFCONFIG))
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NODEFCONFIG))
|
||||
virCommandAddArg(cmd, "-nodefconfig");
|
||||
virCommandAddEnvPassCommon(cmd);
|
||||
virCommandSetOutputBuffer(cmd, &output);
|
||||
@ -442,7 +442,7 @@ qemuCapsInitGuest(virCapsPtr caps,
|
||||
int nmachines = 0;
|
||||
struct stat st;
|
||||
unsigned int ncpus;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
int ret = -1;
|
||||
|
||||
/* Check for existance of base emulator, or alternate base
|
||||
@ -558,8 +558,8 @@ qemuCapsInitGuest(virCapsPtr caps,
|
||||
!virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0))
|
||||
goto error;
|
||||
|
||||
if (qemuCapsExtractVersionInfo(binary, info->arch, NULL, &qemuCmdFlags) < 0 ||
|
||||
(qemuCapsGet(qemuCmdFlags, QEMU_CAPS_BOOTINDEX) &&
|
||||
if (qemuCapsExtractVersionInfo(binary, info->arch, NULL, &qemuCaps) < 0 ||
|
||||
(qemuCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX) &&
|
||||
!virCapabilitiesAddGuestFeature(guest, "deviceboot", 1, 0)))
|
||||
goto error;
|
||||
|
||||
|
@ -111,7 +111,7 @@ int qemuCapsProbeMachineTypes(const char *binary,
|
||||
int *nmachines);
|
||||
|
||||
int qemuCapsProbeCPUModels(const char *qemu,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
const char *arch,
|
||||
unsigned int *count,
|
||||
const char ***cpus);
|
||||
@ -120,16 +120,16 @@ int qemuCapsExtractVersion(virCapsPtr caps,
|
||||
unsigned int *version);
|
||||
int qemuCapsExtractVersionInfo(const char *qemu, const char *arch,
|
||||
unsigned int *version,
|
||||
unsigned long long *qemuCmdFlags);
|
||||
unsigned long long *qemuCaps);
|
||||
|
||||
int qemuCapsParseHelpStr(const char *qemu,
|
||||
const char *str,
|
||||
unsigned long long *qemuCmdFlags,
|
||||
unsigned long long *qemuCaps,
|
||||
unsigned int *version,
|
||||
unsigned int *is_kvm,
|
||||
unsigned int *kvm_version);
|
||||
int qemuCapsParseDeviceStr(const char *str,
|
||||
unsigned long long *qemuCmdFlags);
|
||||
unsigned long long *qemuCaps);
|
||||
|
||||
|
||||
#endif /* __QEMU_CAPABILITIES_H__*/
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -46,7 +46,7 @@ virCommandPtr qemuBuildCommandLine(virConnectPtr conn,
|
||||
virDomainDefPtr def,
|
||||
virDomainChrSourceDefPtr monitor_chr,
|
||||
bool monitor_json,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
const char *migrateFrom,
|
||||
int migrateFd,
|
||||
virDomainSnapshotObjPtr current_snapshot,
|
||||
@ -68,44 +68,44 @@ char * qemuBuildNicStr(virDomainNetDefPtr net,
|
||||
/* Current, best practice */
|
||||
char * qemuBuildNicDevStr(virDomainNetDefPtr net,
|
||||
int vlan,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
/* Both legacy & current support */
|
||||
char *qemuBuildDriveStr(virDomainDiskDefPtr disk,
|
||||
int bootable,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
char *qemuBuildFSStr(virDomainFSDefPtr fs,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
/* Current, best practice */
|
||||
char * qemuBuildDriveDevStr(virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
char * qemuBuildFSDevStr(virDomainFSDefPtr fs,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
/* Current, best practice */
|
||||
char * qemuBuildControllerDevStr(virDomainControllerDefPtr def,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
char * qemuBuildWatchdogDevStr(virDomainWatchdogDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
char * qemuBuildMemballoonDevStr(virDomainMemballoonDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
char * qemuBuildUSBInputDevStr(virDomainInputDefPtr dev);
|
||||
|
||||
char * qemuBuildSoundDevStr(virDomainSoundDefPtr sound,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
/* Legacy, pre device support */
|
||||
char * qemuBuildPCIHostdevPCIDevStr(virDomainHostdevDefPtr dev);
|
||||
/* Current, best practice */
|
||||
char * qemuBuildPCIHostdevDevStr(virDomainHostdevDefPtr dev,
|
||||
const char *configfd,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);
|
||||
|
||||
@ -125,7 +125,7 @@ int qemuNetworkIfaceConnect(virConnectPtr conn,
|
||||
int qemuPhysIfaceConnect(virConnectPtr conn,
|
||||
struct qemud_driver *driver,
|
||||
virDomainNetDefPtr net,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
const unsigned char *vmuuid,
|
||||
enum virVMOperationType vmop);
|
||||
|
||||
@ -156,7 +156,7 @@ int qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr ad
|
||||
|
||||
int qemuDomainNetVLAN(virDomainNetDefPtr def);
|
||||
int qemuAssignDeviceNetAlias(virDomainDefPtr def, virDomainNetDefPtr net, int idx);
|
||||
int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCmdFlags);
|
||||
int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, unsigned long long qemuCaps);
|
||||
int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr net, int idx);
|
||||
int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller);
|
||||
|
||||
|
@ -3538,7 +3538,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
|
||||
struct qemud_driver *driver = conn->privateData;
|
||||
virDomainDefPtr def = NULL;
|
||||
virDomainChrSourceDef monConfig;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
virCommandPtr cmd = NULL;
|
||||
char *ret = NULL;
|
||||
int i;
|
||||
@ -3595,14 +3595,14 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
|
||||
|
||||
if (qemuCapsExtractVersionInfo(def->emulator, def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) < 0)
|
||||
&qemuCaps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (qemuProcessPrepareMonitorChr(driver, &monConfig, def->name) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(cmd = qemuBuildCommandLine(conn, driver, def,
|
||||
&monConfig, false, qemuCmdFlags,
|
||||
&monConfig, false, qemuCaps,
|
||||
NULL, -1, NULL, VIR_VM_OP_NO_OP)))
|
||||
goto cleanup;
|
||||
|
||||
@ -3947,7 +3947,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
struct qemud_driver *driver = dom->conn->privateData;
|
||||
virDomainObjPtr vm;
|
||||
virDomainDeviceDefPtr dev = NULL;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
virCgroupPtr cgroup = NULL;
|
||||
int ret = -1;
|
||||
|
||||
@ -3977,7 +3977,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) < 0)
|
||||
&qemuCaps) < 0)
|
||||
goto endjob;
|
||||
|
||||
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
|
||||
@ -3997,7 +3997,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
|
||||
ret = qemuDomainChangeEjectableMedia(driver, vm,
|
||||
dev->data.disk,
|
||||
qemuCmdFlags,
|
||||
qemuCaps,
|
||||
false);
|
||||
if (ret == 0)
|
||||
dev->data.disk = NULL;
|
||||
@ -4006,17 +4006,17 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
case VIR_DOMAIN_DISK_DEVICE_DISK:
|
||||
if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_USB) {
|
||||
ret = qemuDomainAttachUsbMassstorageDevice(driver, vm,
|
||||
dev->data.disk, qemuCmdFlags);
|
||||
dev->data.disk, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.disk = NULL;
|
||||
} else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
|
||||
ret = qemuDomainAttachPciDiskDevice(driver, vm,
|
||||
dev->data.disk, qemuCmdFlags);
|
||||
dev->data.disk, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.disk = NULL;
|
||||
} else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_SCSI) {
|
||||
ret = qemuDomainAttachSCSIDisk(driver, vm,
|
||||
dev->data.disk, qemuCmdFlags);
|
||||
dev->data.disk, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.disk = NULL;
|
||||
} else {
|
||||
@ -4041,7 +4041,7 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_CONTROLLER) {
|
||||
if (dev->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
||||
ret = qemuDomainAttachPciControllerDevice(driver, vm,
|
||||
dev->data.controller, qemuCmdFlags);
|
||||
dev->data.controller, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.controller = NULL;
|
||||
} else {
|
||||
@ -4052,12 +4052,12 @@ static int qemudDomainAttachDevice(virDomainPtr dom,
|
||||
}
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
|
||||
ret = qemuDomainAttachNetDevice(dom->conn, driver, vm,
|
||||
dev->data.net, qemuCmdFlags);
|
||||
dev->data.net, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.net = NULL;
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
|
||||
ret = qemuDomainAttachHostDevice(driver, vm,
|
||||
dev->data.hostdev, qemuCmdFlags);
|
||||
dev->data.hostdev, qemuCaps);
|
||||
if (ret == 0)
|
||||
dev->data.hostdev = NULL;
|
||||
} else {
|
||||
@ -4105,7 +4105,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
struct qemud_driver *driver = dom->conn->privateData;
|
||||
virDomainObjPtr vm;
|
||||
virDomainDeviceDefPtr dev = NULL;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
virCgroupPtr cgroup = NULL;
|
||||
int ret = -1;
|
||||
bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0;
|
||||
@ -4147,7 +4147,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) < 0)
|
||||
&qemuCaps) < 0)
|
||||
goto endjob;
|
||||
|
||||
switch (dev->type) {
|
||||
@ -4168,7 +4168,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
|
||||
ret = qemuDomainChangeEjectableMedia(driver, vm,
|
||||
dev->data.disk,
|
||||
qemuCmdFlags,
|
||||
qemuCaps,
|
||||
force);
|
||||
if (ret == 0)
|
||||
dev->data.disk = NULL;
|
||||
@ -4223,7 +4223,7 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
|
||||
const char *xml) {
|
||||
struct qemud_driver *driver = dom->conn->privateData;
|
||||
virDomainObjPtr vm;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
virDomainDeviceDefPtr dev = NULL;
|
||||
int ret = -1;
|
||||
|
||||
@ -4253,28 +4253,28 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
|
||||
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) < 0)
|
||||
&qemuCaps) < 0)
|
||||
goto endjob;
|
||||
|
||||
if (dev->type == VIR_DOMAIN_DEVICE_DISK &&
|
||||
dev->data.disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
|
||||
if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_VIRTIO) {
|
||||
ret = qemuDomainDetachPciDiskDevice(driver, vm, dev, qemuCmdFlags);
|
||||
ret = qemuDomainDetachPciDiskDevice(driver, vm, dev, qemuCaps);
|
||||
}
|
||||
else if (dev->data.disk->bus == VIR_DOMAIN_DISK_BUS_SCSI) {
|
||||
ret = qemuDomainDetachSCSIDiskDevice(driver, vm, dev,
|
||||
qemuCmdFlags);
|
||||
qemuCaps);
|
||||
}
|
||||
else {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("This type of disk cannot be hot unplugged"));
|
||||
}
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
|
||||
ret = qemuDomainDetachNetDevice(driver, vm, dev, qemuCmdFlags);
|
||||
ret = qemuDomainDetachNetDevice(driver, vm, dev, qemuCaps);
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_CONTROLLER) {
|
||||
if (dev->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
||||
ret = qemuDomainDetachPciControllerDevice(driver, vm, dev,
|
||||
qemuCmdFlags);
|
||||
qemuCaps);
|
||||
} else {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("disk controller bus '%s' cannot be hotunplugged."),
|
||||
@ -4282,7 +4282,7 @@ static int qemudDomainDetachDevice(virDomainPtr dom,
|
||||
/* fallthrough */
|
||||
}
|
||||
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
|
||||
ret = qemuDomainDetachHostDevice(driver, vm, dev, qemuCmdFlags);
|
||||
ret = qemuDomainDetachHostDevice(driver, vm, dev, qemuCaps);
|
||||
} else {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
"%s", _("This type of device cannot be hot unplugged"));
|
||||
|
@ -44,7 +44,7 @@
|
||||
int qemuDomainChangeEjectableMedia(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
bool force)
|
||||
{
|
||||
virDomainDiskDefPtr origdisk = NULL;
|
||||
@ -87,7 +87,7 @@ int qemuDomainChangeEjectableMedia(struct qemud_driver *driver,
|
||||
vm, disk) < 0)
|
||||
return -1;
|
||||
|
||||
if (!(driveAlias = qemuDeviceDriveHostAlias(origdisk, qemuCmdFlags)))
|
||||
if (!(driveAlias = qemuDeviceDriveHostAlias(origdisk, qemuCaps)))
|
||||
goto error;
|
||||
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
@ -140,7 +140,7 @@ error:
|
||||
int qemuDomainAttachPciDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i, ret;
|
||||
const char* type = virDomainDiskBusTypeToString(disk->bus);
|
||||
@ -160,16 +160,16 @@ int qemuDomainAttachPciDiskDevice(struct qemud_driver *driver,
|
||||
vm, disk) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuDomainPCIAddressEnsureAddr(priv->pciaddrs, &disk->info) < 0)
|
||||
goto error;
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCmdFlags) < 0)
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCaps) < 0)
|
||||
goto error;
|
||||
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCmdFlags)))
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCaps)))
|
||||
goto error;
|
||||
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCmdFlags)))
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCaps)))
|
||||
goto error;
|
||||
}
|
||||
|
||||
@ -179,7 +179,7 @@ int qemuDomainAttachPciDiskDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
ret = qemuMonitorAddDrive(priv->mon, drivestr);
|
||||
if (ret == 0) {
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
@ -219,7 +219,7 @@ error:
|
||||
VIR_FREE(devstr);
|
||||
VIR_FREE(drivestr);
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
(disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &disk->info) < 0)
|
||||
VIR_WARN("Unable to release PCI address on %s", disk->src);
|
||||
@ -235,7 +235,7 @@ error:
|
||||
int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainControllerDefPtr controller,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i;
|
||||
int ret = -1;
|
||||
@ -253,13 +253,13 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
|
||||
}
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuDomainPCIAddressEnsureAddr(priv->pciaddrs, &controller->info) < 0)
|
||||
goto cleanup;
|
||||
if (qemuAssignDeviceControllerAlias(controller) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(devstr = qemuBuildControllerDevStr(controller, qemuCmdFlags))) {
|
||||
if (!(devstr = qemuBuildControllerDevStr(controller, qemuCaps))) {
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
@ -270,7 +270,7 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
} else {
|
||||
ret = qemuMonitorAttachPCIDiskController(priv->mon,
|
||||
@ -286,7 +286,7 @@ int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
|
||||
|
||||
cleanup:
|
||||
if ((ret != 0) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
(controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &controller->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on controller");
|
||||
@ -300,7 +300,7 @@ static virDomainControllerDefPtr
|
||||
qemuDomainFindOrCreateSCSIDiskController(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
int controller,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i;
|
||||
virDomainControllerDefPtr cont;
|
||||
@ -326,7 +326,7 @@ qemuDomainFindOrCreateSCSIDiskController(struct qemud_driver *driver,
|
||||
|
||||
VIR_INFO0("No SCSI controller present, hotplugging one");
|
||||
if (qemuDomainAttachPciControllerDevice(driver,
|
||||
vm, cont, qemuCmdFlags) < 0) {
|
||||
vm, cont, qemuCaps) < 0) {
|
||||
VIR_FREE(cont);
|
||||
return NULL;
|
||||
}
|
||||
@ -346,7 +346,7 @@ qemuDomainFindOrCreateSCSIDiskController(struct qemud_driver *driver,
|
||||
int qemuDomainAttachSCSIDisk(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
@ -376,18 +376,18 @@ int qemuDomainAttachSCSIDisk(struct qemud_driver *driver,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCmdFlags) < 0)
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCaps) < 0)
|
||||
goto error;
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCmdFlags)))
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCaps)))
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCmdFlags)))
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCaps)))
|
||||
goto error;
|
||||
|
||||
for (i = 0 ; i <= disk->info.addr.drive.controller ; i++) {
|
||||
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, i, qemuCmdFlags);
|
||||
cont = qemuDomainFindOrCreateSCSIDiskController(driver, vm, i, qemuCaps);
|
||||
if (!cont)
|
||||
goto error;
|
||||
}
|
||||
@ -409,7 +409,7 @@ int qemuDomainAttachSCSIDisk(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
ret = qemuMonitorAddDrive(priv->mon, drivestr);
|
||||
if (ret == 0) {
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
@ -462,7 +462,7 @@ error:
|
||||
int qemuDomainAttachUsbMassstorageDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
int i, ret;
|
||||
@ -487,12 +487,12 @@ int qemuDomainAttachUsbMassstorageDevice(struct qemud_driver *driver,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCmdFlags) < 0)
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceDiskAlias(disk, qemuCaps) < 0)
|
||||
goto error;
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCmdFlags)))
|
||||
if (!(drivestr = qemuBuildDriveStr(disk, 0, qemuCaps)))
|
||||
goto error;
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCmdFlags)))
|
||||
if (!(devstr = qemuBuildDriveDevStr(disk, qemuCaps)))
|
||||
goto error;
|
||||
}
|
||||
|
||||
@ -502,7 +502,7 @@ int qemuDomainAttachUsbMassstorageDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
ret = qemuMonitorAddDrive(priv->mon, drivestr);
|
||||
if (ret == 0) {
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
@ -547,7 +547,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainNetDefPtr net,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
char *tapfd_name = NULL;
|
||||
@ -558,7 +558,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
virDomainDevicePCIAddress guestAddr;
|
||||
int vlan;
|
||||
|
||||
if (!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_HOST_NET_ADD)) {
|
||||
if (!qemuCapsGet(qemuCaps, QEMU_CAPS_HOST_NET_ADD)) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("installed qemu version does not support host_net_add"));
|
||||
return -1;
|
||||
@ -574,7 +574,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((tapfd = qemuNetworkIfaceConnect(conn, driver, net, qemuCmdFlags)) < 0)
|
||||
if ((tapfd = qemuNetworkIfaceConnect(conn, driver, net, qemuCaps)) < 0)
|
||||
return -1;
|
||||
} else if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||
if (priv->monConfig->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||
@ -586,7 +586,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
}
|
||||
|
||||
if ((tapfd = qemuPhysIfaceConnect(conn, driver, net,
|
||||
qemuCmdFlags,
|
||||
qemuCaps,
|
||||
vm->def->uuid,
|
||||
VIR_VM_OP_CREATE)) < 0)
|
||||
return -1;
|
||||
@ -595,18 +595,18 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
if (VIR_REALLOC_N(vm->def->nets, vm->def->nnets+1) < 0)
|
||||
goto no_memory;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NET_NAME) ||
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NET_NAME) ||
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceNetAlias(vm->def, net, -1) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
qemuDomainPCIAddressEnsureAddr(priv->pciaddrs, &net->info) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
vlan = -1;
|
||||
} else {
|
||||
vlan = qemuDomainNetVLAN(net);
|
||||
@ -637,8 +637,8 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
}
|
||||
|
||||
/* FIXME - need to support vhost-net here (5th arg) */
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (!(netstr = qemuBuildHostNetStr(net, ',',
|
||||
-1, tapfd_name, 0)))
|
||||
goto try_tapfd_close;
|
||||
@ -649,8 +649,8 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorAddNetdev(priv->mon, netstr) < 0) {
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
qemuDomainNetAudit(vm, NULL, net, "attach", false);
|
||||
@ -673,8 +673,8 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (!(nicstr = qemuBuildNicDevStr(net, vlan, qemuCmdFlags)))
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (!(nicstr = qemuBuildNicDevStr(net, vlan, qemuCaps)))
|
||||
goto try_remove;
|
||||
} else {
|
||||
if (!(nicstr = qemuBuildNicStr(net, NULL, vlan)))
|
||||
@ -682,7 +682,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorAddDevice(priv->mon, nicstr) < 0) {
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
qemuDomainNetAudit(vm, NULL, net, "attach", false);
|
||||
@ -708,7 +708,7 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
|
||||
cleanup:
|
||||
if ((ret != 0) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
(net->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &net->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on NIC");
|
||||
@ -728,8 +728,8 @@ try_remove:
|
||||
goto cleanup;
|
||||
|
||||
if (vlan < 0) {
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
char *netdev_name;
|
||||
if (virAsprintf(&netdev_name, "host%s", net->info.alias) < 0)
|
||||
goto no_memory;
|
||||
@ -777,7 +777,7 @@ no_memory:
|
||||
int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
int ret;
|
||||
@ -793,12 +793,12 @@ int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
|
||||
if (qemuPrepareHostdevPCIDevices(driver, &hostdev, 1) < 0)
|
||||
return -1;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceHostdevAlias(vm->def, hostdev, -1) < 0)
|
||||
goto error;
|
||||
if (qemuDomainPCIAddressEnsureAddr(priv->pciaddrs, &hostdev->info) < 0)
|
||||
goto error;
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_PCI_CONFIGFD)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_PCI_CONFIGFD)) {
|
||||
configfd = qemuOpenPCIConfig(hostdev);
|
||||
if (configfd >= 0) {
|
||||
if (virAsprintf(&configfd_name, "fd-%s",
|
||||
@ -824,7 +824,7 @@ int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
if (!(devstr = qemuBuildPCIHostdevDevStr(hostdev, configfd_name,
|
||||
qemuCmdFlags)))
|
||||
qemuCaps)))
|
||||
goto error;
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
@ -854,7 +854,7 @@ int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
|
||||
return 0;
|
||||
|
||||
error:
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
(hostdev->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &hostdev->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on host device");
|
||||
@ -872,13 +872,13 @@ error:
|
||||
int qemuDomainAttachHostUsbDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int ret;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
char *devstr = NULL;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceHostdevAlias(vm->def, hostdev, -1) < 0)
|
||||
goto error;
|
||||
if (!(devstr = qemuBuildUSBHostdevDevStr(hostdev)))
|
||||
@ -910,7 +910,7 @@ int qemuDomainAttachHostUsbDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE))
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
|
||||
ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
else
|
||||
ret = qemuMonitorAddUSBDeviceExact(priv->mon,
|
||||
@ -935,7 +935,7 @@ error:
|
||||
int qemuDomainAttachHostDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
@ -968,13 +968,13 @@ int qemuDomainAttachHostDevice(struct qemud_driver *driver,
|
||||
switch (hostdev->source.subsys.type) {
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
|
||||
if (qemuDomainAttachHostPciDevice(driver, vm,
|
||||
hostdev, qemuCmdFlags) < 0)
|
||||
hostdev, qemuCaps) < 0)
|
||||
goto error;
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
|
||||
if (qemuDomainAttachHostUsbDevice(driver, vm,
|
||||
hostdev, qemuCmdFlags) < 0)
|
||||
hostdev, qemuCaps) < 0)
|
||||
goto error;
|
||||
break;
|
||||
|
||||
@ -1130,7 +1130,7 @@ static inline int qemuFindDisk(virDomainDefPtr def, const char *dst)
|
||||
int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i, ret = -1;
|
||||
virDomainDiskDefPtr detach = NULL;
|
||||
@ -1173,7 +1173,7 @@ int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorDelDevice(priv->mon, detach->info.alias) < 0) {
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
goto cleanup;
|
||||
@ -1193,7 +1193,7 @@ int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver,
|
||||
|
||||
qemuDomainDiskAudit(vm, detach, NULL, "detach", ret >= 0);
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &detach->info) < 0)
|
||||
VIR_WARN("Unable to release PCI address on %s", dev->data.disk->src);
|
||||
|
||||
@ -1221,7 +1221,7 @@ cleanup:
|
||||
int qemuDomainDetachSCSIDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i, ret = -1;
|
||||
virDomainDiskDefPtr detach = NULL;
|
||||
@ -1237,7 +1237,7 @@ int qemuDomainDetachSCSIDiskDevice(struct qemud_driver *driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (!qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
||||
_("Underlying qemu does not support SCSI disk removal"));
|
||||
goto cleanup;
|
||||
@ -1350,7 +1350,7 @@ static bool qemuDomainControllerIsBusy(virDomainObjPtr vm,
|
||||
int qemuDomainDetachPciControllerDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i, ret = -1;
|
||||
virDomainControllerDefPtr detach = NULL;
|
||||
@ -1385,13 +1385,13 @@ int qemuDomainDetachPciControllerDevice(struct qemud_driver *driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuAssignDeviceControllerAlias(detach) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorDelDevice(priv->mon, detach->info.alias)) {
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
goto cleanup;
|
||||
@ -1419,7 +1419,7 @@ int qemuDomainDetachPciControllerDevice(struct qemud_driver *driver,
|
||||
vm->def->ncontrollers = 0;
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &detach->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on controller");
|
||||
|
||||
@ -1434,7 +1434,7 @@ cleanup:
|
||||
int qemuDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int i, ret = -1;
|
||||
virDomainNetDefPtr detach = NULL;
|
||||
@ -1479,7 +1479,7 @@ int qemuDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorDelDevice(priv->mon, detach->info.alias) < 0) {
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
qemuDomainNetAudit(vm, detach, NULL, "detach", false);
|
||||
@ -1494,8 +1494,8 @@ int qemuDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
}
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorRemoveNetdev(priv->mon, hostnet_name) < 0) {
|
||||
qemuDomainObjExitMonitorWithDriver(driver, vm);
|
||||
qemuDomainNetAudit(vm, detach, NULL, "detach", false);
|
||||
@ -1512,7 +1512,7 @@ int qemuDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
|
||||
qemuDomainNetAudit(vm, detach, NULL, "detach", true);
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &detach->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on NIC");
|
||||
|
||||
@ -1561,7 +1561,7 @@ cleanup:
|
||||
int qemuDomainDetachHostPciDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
virDomainHostdevDefPtr detach = NULL;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
@ -1605,7 +1605,7 @@ int qemuDomainDetachHostPciDevice(struct qemud_driver *driver,
|
||||
}
|
||||
|
||||
qemuDomainObjEnterMonitorWithDriver(driver, vm);
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuMonitorDelDevice(priv->mon, detach->info.alias) < 0) {
|
||||
qemuDomainObjExitMonitor(vm);
|
||||
return -1;
|
||||
@ -1636,7 +1636,7 @@ int qemuDomainDetachHostPciDevice(struct qemud_driver *driver,
|
||||
pciFreeDevice(pci);
|
||||
}
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE) &&
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE) &&
|
||||
qemuDomainPCIAddressReleaseAddr(priv->pciaddrs, &detach->info) < 0)
|
||||
VIR_WARN0("Unable to release PCI address on host device");
|
||||
|
||||
@ -1661,7 +1661,7 @@ int qemuDomainDetachHostPciDevice(struct qemud_driver *driver,
|
||||
int qemuDomainDetachHostUsbDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
virDomainHostdevDefPtr detach = NULL;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
@ -1707,7 +1707,7 @@ int qemuDomainDetachHostUsbDevice(struct qemud_driver *driver,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (!qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
"%s", _("device cannot be detached with this QEMU version"));
|
||||
return -1;
|
||||
@ -1743,7 +1743,7 @@ int qemuDomainDetachHostUsbDevice(struct qemud_driver *driver,
|
||||
int qemuDomainDetachHostDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
virDomainHostdevDefPtr hostdev = dev->data.hostdev;
|
||||
int ret;
|
||||
@ -1757,10 +1757,10 @@ int qemuDomainDetachHostDevice(struct qemud_driver *driver,
|
||||
|
||||
switch (hostdev->source.subsys.type) {
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
|
||||
ret = qemuDomainDetachHostPciDevice(driver, vm, dev, qemuCmdFlags);
|
||||
ret = qemuDomainDetachHostPciDevice(driver, vm, dev, qemuCaps);
|
||||
break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
|
||||
ret = qemuDomainDetachHostUsbDevice(driver, vm, dev, qemuCmdFlags);
|
||||
ret = qemuDomainDetachHostUsbDevice(driver, vm, dev, qemuCaps);
|
||||
break;
|
||||
default:
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
|
@ -32,41 +32,41 @@
|
||||
int qemuDomainChangeEjectableMedia(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags,
|
||||
unsigned long long qemuCaps,
|
||||
bool force);
|
||||
int qemuDomainAttachPciDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachPciControllerDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainControllerDefPtr controller,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachSCSIDisk(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachUsbMassstorageDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainNetDefPtr net,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachHostPciDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachHostUsbDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainAttachHostDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainHostdevDefPtr hostdev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainChangeGraphics(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainGraphicsDefPtr dev);
|
||||
@ -78,31 +78,31 @@ int qemuDomainChangeGraphicsPasswords(struct qemud_driver *driver,
|
||||
int qemuDomainDetachPciDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachSCSIDiskDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachPciControllerDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachHostPciDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachHostUsbDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
int qemuDomainDetachHostDevice(struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
virDomainDeviceDefPtr dev,
|
||||
unsigned long long qemuCmdFlags);
|
||||
unsigned long long qemuCaps);
|
||||
|
||||
|
||||
#endif /* __QEMU_HOTPLUG_H__ */
|
||||
|
@ -244,7 +244,7 @@ qemuMigrationPrepareTunnel(struct qemud_driver *driver,
|
||||
int ret = -1;
|
||||
int internalret;
|
||||
char *unixfile = NULL;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
qemuDomainObjPrivatePtr priv = NULL;
|
||||
struct timeval now;
|
||||
|
||||
@ -298,15 +298,15 @@ qemuMigrationPrepareTunnel(struct qemud_driver *driver,
|
||||
|
||||
/* check that this qemu version supports the interactive exec */
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL, &qemuCmdFlags) < 0) {
|
||||
NULL, &qemuCaps) < 0) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Cannot determine QEMU argv syntax %s"),
|
||||
vm->def->emulator);
|
||||
goto endjob;
|
||||
}
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_UNIX))
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX))
|
||||
internalret = virAsprintf(&migrateFrom, "unix:%s", unixfile);
|
||||
else if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_EXEC))
|
||||
else if (qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC))
|
||||
internalret = virAsprintf(&migrateFrom, "exec:nc -U -l %s", unixfile);
|
||||
else {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
@ -708,7 +708,7 @@ static int doTunnelMigrate(struct qemud_driver *driver,
|
||||
virStreamPtr st = NULL;
|
||||
char *unixfile = NULL;
|
||||
int internalret;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
int status;
|
||||
unsigned long long transferred, remaining, total;
|
||||
unsigned int background_flags = QEMU_MONITOR_MIGRATE_BACKGROUND;
|
||||
@ -770,15 +770,15 @@ static int doTunnelMigrate(struct qemud_driver *driver,
|
||||
|
||||
/* check that this qemu version supports the unix migration */
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL, &qemuCmdFlags) < 0) {
|
||||
NULL, &qemuCaps) < 0) {
|
||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Cannot extract Qemu version from '%s'"),
|
||||
vm->def->emulator);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_UNIX) &&
|
||||
!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
|
||||
if (!qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX) &&
|
||||
!qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
|
||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||
"%s", _("Source qemu is too old to support tunnelled migration"));
|
||||
goto cleanup;
|
||||
@ -820,11 +820,11 @@ static int doTunnelMigrate(struct qemud_driver *driver,
|
||||
background_flags |= QEMU_MONITOR_MIGRATE_NON_SHARED_DISK;
|
||||
if (flags & VIR_MIGRATE_NON_SHARED_INC)
|
||||
background_flags |= QEMU_MONITOR_MIGRATE_NON_SHARED_INC;
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_UNIX)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_UNIX)) {
|
||||
internalret = qemuMonitorMigrateToUnix(priv->mon, background_flags,
|
||||
unixfile);
|
||||
}
|
||||
else if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
|
||||
else if (qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) {
|
||||
const char *args[] = { "nc", "-U", unixfile, NULL };
|
||||
internalret = qemuMonitorMigrateToCommand(priv->mon, QEMU_MONITOR_MIGRATE_BACKGROUND, args);
|
||||
} else {
|
||||
|
@ -1137,7 +1137,7 @@ static int
|
||||
qemuProcessInitPasswords(virConnectPtr conn,
|
||||
struct qemud_driver *driver,
|
||||
virDomainObjPtr vm,
|
||||
unsigned long long qemuCmdFlags)
|
||||
unsigned long long qemuCaps)
|
||||
{
|
||||
int ret = 0;
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
@ -1159,7 +1159,7 @@ qemuProcessInitPasswords(virConnectPtr conn,
|
||||
if (ret < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
int i;
|
||||
|
||||
for (i = 0 ; i < vm->def->ndisks ; i++) {
|
||||
@ -1789,7 +1789,7 @@ qemuProcessReconnect(void *payload, const char *name ATTRIBUTE_UNUSED, void *opa
|
||||
struct qemuProcessReconnectData *data = opaque;
|
||||
struct qemud_driver *driver = data->driver;
|
||||
qemuDomainObjPrivatePtr priv;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
virConnectPtr conn = data->conn;
|
||||
|
||||
virDomainObjLock(obj);
|
||||
@ -1815,8 +1815,8 @@ qemuProcessReconnect(void *payload, const char *name ATTRIBUTE_UNUSED, void *opa
|
||||
* since launch time */
|
||||
if (qemuCapsExtractVersionInfo(obj->def->emulator, obj->def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) >= 0 &&
|
||||
qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
&qemuCaps) >= 0 &&
|
||||
qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
priv->persistentAddrs = 1;
|
||||
|
||||
if (!(priv->pciaddrs = qemuDomainPCIAddressSetCreate(obj->def)) ||
|
||||
@ -1879,7 +1879,7 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
enum virVMOperationType vmop)
|
||||
{
|
||||
int ret;
|
||||
unsigned long long qemuCmdFlags;
|
||||
unsigned long long qemuCaps;
|
||||
off_t pos = -1;
|
||||
char ebuf[1024];
|
||||
char *pidfile = NULL;
|
||||
@ -2010,7 +2010,7 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
VIR_DEBUG0("Determining emulator version");
|
||||
if (qemuCapsExtractVersionInfo(vm->def->emulator, vm->def->os.arch,
|
||||
NULL,
|
||||
&qemuCmdFlags) < 0)
|
||||
&qemuCaps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
VIR_DEBUG0("Setting up domain cgroup (if required)");
|
||||
@ -2027,7 +2027,7 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
goto cleanup;
|
||||
|
||||
#if HAVE_YAJL
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_MONITOR_JSON))
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_MONITOR_JSON))
|
||||
priv->monJSON = 1;
|
||||
else
|
||||
#endif
|
||||
@ -2056,7 +2056,7 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
* we also need to populate the PCi address set cache for later
|
||||
* use in hotplug
|
||||
*/
|
||||
if (qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
VIR_DEBUG0("Assigning domain PCI addresses");
|
||||
/* Populate cache with current addresses */
|
||||
if (priv->pciaddrs) {
|
||||
@ -2078,7 +2078,7 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
|
||||
VIR_DEBUG0("Building emulator command line");
|
||||
if (!(cmd = qemuBuildCommandLine(conn, driver, vm->def, priv->monConfig,
|
||||
priv->monJSON != 0, qemuCmdFlags,
|
||||
priv->monJSON != 0, qemuCaps,
|
||||
migrateFrom, stdin_fd,
|
||||
vm->current_snapshot, vmop)))
|
||||
goto cleanup;
|
||||
@ -2185,12 +2185,12 @@ int qemuProcessStart(virConnectPtr conn,
|
||||
goto cleanup;
|
||||
|
||||
VIR_DEBUG0("Setting any required VM passwords");
|
||||
if (qemuProcessInitPasswords(conn, driver, vm, qemuCmdFlags) < 0)
|
||||
if (qemuProcessInitPasswords(conn, driver, vm, qemuCaps) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* If we have -device, then addresses are assigned explicitly.
|
||||
* If not, then we have to detect dynamic ones here */
|
||||
if (!qemuCapsGet(qemuCmdFlags, QEMU_CAPS_DEVICE)) {
|
||||
if (!qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
|
||||
VIR_DEBUG0("Determining domain device PCI addresses");
|
||||
if (qemuProcessInitPCIAddresses(driver, vm) < 0)
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user