On 07/19/2016 10:30 AM, John Ferlan wrote: > When building the command line alias and for SCSI Host Device deletion, > use the common API to build the alias > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > src/qemu/qemu_command.c | 12 +++++++----- > src/qemu/qemu_hotplug.c | 12 ++++-------- > 2 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index 482f993..0c4b1f5 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -4534,6 +4534,7 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) > { > virBuffer buf = VIR_BUFFER_INITIALIZER; > char *source = NULL; > + char *drivealias = NULL; > virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi; > > if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) { > @@ -4545,9 +4546,12 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) > goto error; > virBufferAsprintf(&buf, "file=/dev/%s,if=none", source); > } > - virBufferAsprintf(&buf, ",id=%s-%s", > - virDomainDeviceAddressTypeToString(dev->info->type), > - dev->info->alias); > + VIR_FREE(source); > + > + if (!(drivealias = qemuAssignSCSIHostDeviceDriveAlias(dev))) > + goto error; > + virBufferAsprintf(&buf, ",id=%s", drivealias); > + VIR_FREE(drivealias); > > if (dev->readonly) > virBufferAddLit(&buf, ",readonly=on"); > @@ -4555,10 +4559,8 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev) > if (virBufferCheckError(&buf) < 0) > goto error; > > - VIR_FREE(source); > return virBufferContentAndReset(&buf); > error: > - VIR_FREE(source); > virBufferFreeAndReset(&buf); > return NULL; > } > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index 9576509..4d3e913 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -3132,7 +3132,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, > size_t i; > int ret = -1; > qemuDomainObjPrivatePtr priv = vm->privateData; > - char *drivestr = NULL; > + char *drivealias = NULL; > bool is_vfio = false; > > VIR_DEBUG("Removing host device %s from domain %p %s", > @@ -3144,15 +3144,11 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, > } > > if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) { > - /* build the actual drive id string as generated during > - * qemuBuildSCSIHostdevDrvStr that is passed to qemu */ > - if (virAsprintf(&drivestr, "%s-%s", > - virDomainDeviceAddressTypeToString(hostdev->info->type), > - hostdev->info->alias) < 0) > + if (!(drivealias = qemuAssignSCSIHostDeviceDriveAlias(hostdev))) > goto cleanup; > > qemuDomainObjEnterMonitor(driver, vm); > - qemuMonitorDriveDel(priv->mon, drivestr); > + qemuMonitorDriveDel(priv->mon, drivealias); > if (qemuDomainObjExitMonitor(driver, vm) < 0) > goto cleanup; > } > @@ -3216,7 +3212,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, > ret = 0; > > cleanup: > - VIR_FREE(drivestr); > + VIR_FREE(drivealias); > virObjectUnref(cfg); > return ret; > } > Beyond changing the function name, squash the following in too: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 99c41c8..fb0fb46 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4749,6 +4749,7 @@ qemuBuildSCSIHostdevDevStr(const virDomainDef *def, { virBuffer buf = VIR_BUFFER_INITIALIZER; int model = -1; + char *driveAlias; const char *contAlias; model = virDomainDeviceFindControllerModel(def, dev->info, @@ -4792,9 +4793,10 @@ qemuBuildSCSIHostdevDevStr(const virDomainDef *def, dev->info->addr.drive.unit); } - virBufferAsprintf(&buf, ",drive=%s-%s,id=%s", - virDomainDeviceAddressTypeToString(dev->info->type), - dev->info->alias, dev->info->alias); + if (!(driveAlias = qemuAliasFromHostdev(dev))) + goto error; + virBufferAsprintf(&buf, ",drive=%s,id=%s", driveAlias, dev->info->alias); + VIR_FREE(driveAlias); if (dev->info->bootIndex) virBufferAsprintf(&buf, ",bootindex=%u", dev->info->bootIndex); -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list