mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemuBuildControllerDevStr: Split out formatting of SCSI controller
Move the code into a new function called qemuBuildControllerSCSIDevStr so that the code is self contained and the original function easier to follow. This patch also moves the formatting of the properties relevant only for the 'virtio-scsi' controller to the specific case so it's more clear where they belong to. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
49f199f3fd
commit
7ac265bcd4
@ -2875,6 +2875,86 @@ qemuBuildUSBControllerDevStr(const virDomainDef *domainDef,
|
||||
}
|
||||
|
||||
|
||||
static char *
|
||||
qemuBuildControllerSCSIDevStr(const virDomainDef *domainDef,
|
||||
virDomainControllerDef *def,
|
||||
virQEMUCaps *qemuCaps)
|
||||
{
|
||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||
const char *driver = NULL;
|
||||
|
||||
switch ((virDomainControllerModelSCSI) def->model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL:
|
||||
if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CONTROLLER, def) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (def->iothread) {
|
||||
virBufferAsprintf(&buf, ",iothread=iothread%u",
|
||||
def->iothread);
|
||||
}
|
||||
|
||||
virBufferAsprintf(&buf, ",id=%s", def->info.alias);
|
||||
|
||||
if (def->queues)
|
||||
virBufferAsprintf(&buf, ",num_queues=%u", def->queues);
|
||||
|
||||
if (def->cmd_per_lun)
|
||||
virBufferAsprintf(&buf, ",cmd_per_lun=%u", def->cmd_per_lun);
|
||||
|
||||
if (def->max_sectors)
|
||||
virBufferAsprintf(&buf, ",max_sectors=%u", def->max_sectors);
|
||||
|
||||
qemuBuildIoEventFdStr(&buf, def->ioeventfd, qemuCaps);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC:
|
||||
driver = "lsi";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||
driver = "spapr-vscsi";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068:
|
||||
driver = "mptsas1068";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078:
|
||||
driver = "megasas";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI:
|
||||
driver = "pvscsi";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974:
|
||||
driver = "am53c974";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390:
|
||||
driver = "dc-390";
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: /* It is built-in dev */
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Unsupported controller model: %s"),
|
||||
virDomainControllerModelSCSITypeToString(def->model));
|
||||
return NULL;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST:
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected SCSI controller model %d"),
|
||||
def->model);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (driver)
|
||||
virBufferAsprintf(&buf, "%s,id=%s", driver, def->info.alias);
|
||||
|
||||
if (qemuBuildDeviceAddressStr(&buf, domainDef, &def->info) < 0)
|
||||
return NULL;
|
||||
|
||||
return virBufferContentAndReset(&buf);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* qemuBuildControllerDevStr:
|
||||
* @domainDef: domain definition
|
||||
@ -2907,56 +2987,9 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
|
||||
switch ((virDomainControllerType)def->type) {
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
|
||||
switch ((virDomainControllerModelSCSI) def->model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL:
|
||||
if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CONTROLLER, def) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (def->iothread) {
|
||||
virBufferAsprintf(&buf, ",iothread=iothread%u",
|
||||
def->iothread);
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC:
|
||||
virBufferAddLit(&buf, "lsi");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI:
|
||||
virBufferAddLit(&buf, "spapr-vscsi");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068:
|
||||
virBufferAddLit(&buf, "mptsas1068");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078:
|
||||
virBufferAddLit(&buf, "megasas");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI:
|
||||
virBufferAddLit(&buf, "pvscsi");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AM53C974:
|
||||
virBufferAddLit(&buf, "am53c974");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DC390:
|
||||
virBufferAddLit(&buf, "dc-390");
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90: /* It is built-in dev */
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Unsupported controller model: %s"),
|
||||
virDomainControllerModelSCSITypeToString(def->model));
|
||||
if (!(*devstr = qemuBuildControllerSCSIDevStr(domainDef, def, qemuCaps)))
|
||||
return -1;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT:
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST:
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected SCSI controller model %d"),
|
||||
def->model);
|
||||
return -1;
|
||||
}
|
||||
virBufferAsprintf(&buf, ",id=%s", def->info.alias);
|
||||
break;
|
||||
return 0;
|
||||
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL:
|
||||
if (qemuBuildVirtioDevStr(&buf, qemuCaps, VIR_DOMAIN_DEVICE_CONTROLLER, def) < 0) {
|
||||
@ -3070,17 +3103,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (def->queues)
|
||||
virBufferAsprintf(&buf, ",num_queues=%u", def->queues);
|
||||
|
||||
if (def->cmd_per_lun)
|
||||
virBufferAsprintf(&buf, ",cmd_per_lun=%u", def->cmd_per_lun);
|
||||
|
||||
if (def->max_sectors)
|
||||
virBufferAsprintf(&buf, ",max_sectors=%u", def->max_sectors);
|
||||
|
||||
qemuBuildIoEventFdStr(&buf, def->ioeventfd, qemuCaps);
|
||||
|
||||
if (qemuBuildDeviceAddressStr(&buf, domainDef, &def->info) < 0)
|
||||
return -1;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user