mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Introduce qemuDomainGetSCSIControllerModel
Rename and rework qemuDomainSetSCSIControllerModel since we're really not setting the SCSI controller model. Instead the code is either returning the existing SCSI controller model value, the default value based on the capabilities, or -1 with the error set.
This commit is contained in:
parent
6ae6ffd88e
commit
fadfb4f9b3
@ -2723,7 +2723,8 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
|||||||
*devstr = NULL;
|
*devstr = NULL;
|
||||||
|
|
||||||
if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
||||||
if ((qemuDomainSetSCSIControllerModel(domainDef, qemuCaps, &model)) < 0)
|
model = qemuDomainGetSCSIControllerModel(domainDef, def, qemuCaps);
|
||||||
|
if (model < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!qemuBuildCheckSCSIControllerModel(qemuCaps, model))
|
if (!qemuBuildCheckSCSIControllerModel(qemuCaps, model))
|
||||||
|
@ -42,35 +42,33 @@ VIR_LOG_INIT("qemu.qemu_domain_address");
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @def: Domain definition
|
* @def: Domain definition
|
||||||
|
* @cont: Domain controller def
|
||||||
* @qemuCaps: qemu capabilities
|
* @qemuCaps: qemu capabilities
|
||||||
* @model: model to either return or adjust
|
|
||||||
*
|
*
|
||||||
* If the @model is already defined, return it immediately; otherwise,
|
* If the controller model is already defined, return it immediately;
|
||||||
* based on the @qemuCaps set the @model value to the default value.
|
* otherwise, based on the @qemuCaps return a default model value.
|
||||||
*
|
*
|
||||||
* Returns @model on success, -1 on failure with error set.
|
* Returns model on success, -1 on failure with error set.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
qemuDomainSetSCSIControllerModel(const virDomainDef *def,
|
qemuDomainGetSCSIControllerModel(const virDomainDef *def,
|
||||||
virQEMUCapsPtr qemuCaps,
|
const virDomainControllerDef *cont,
|
||||||
int *model)
|
virQEMUCapsPtr qemuCaps)
|
||||||
{
|
{
|
||||||
if (*model > 0)
|
if (cont->model > 0)
|
||||||
return 0;
|
return cont->model;
|
||||||
|
|
||||||
if (qemuDomainIsPSeries(def)) {
|
if (qemuDomainIsPSeries(def))
|
||||||
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
|
return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
|
||||||
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
|
else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI))
|
||||||
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
|
return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
|
||||||
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_SCSI)) {
|
else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_SCSI))
|
||||||
*model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
|
return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Unable to determine model for scsi controller"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Unable to determine model for SCSI controller idx=%d"),
|
||||||
|
cont->idx);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,7 +88,6 @@ qemuDomainFindSCSIControllerModel(const virDomainDef *def,
|
|||||||
virQEMUCapsPtr qemuCaps)
|
virQEMUCapsPtr qemuCaps)
|
||||||
{
|
{
|
||||||
virDomainControllerDefPtr cont;
|
virDomainControllerDefPtr cont;
|
||||||
int model;
|
|
||||||
|
|
||||||
if (!(cont = virDomainDeviceFindSCSIController(def, info))) {
|
if (!(cont = virDomainDeviceFindSCSIController(def, info))) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -99,9 +96,7 @@ qemuDomainFindSCSIControllerModel(const virDomainDef *def,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
model = cont->model;
|
return qemuDomainGetSCSIControllerModel(def, cont, qemuCaps);
|
||||||
ignore_value(qemuDomainSetSCSIControllerModel(def, qemuCaps, &model));
|
|
||||||
return model;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -227,9 +222,9 @@ qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def,
|
|||||||
for (i = 0; i < def->ncontrollers; i++) {
|
for (i = 0; i < def->ncontrollers; i++) {
|
||||||
virDomainControllerDefPtr cont = def->controllers[i];
|
virDomainControllerDefPtr cont = def->controllers[i];
|
||||||
|
|
||||||
model = cont->model;
|
|
||||||
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
|
||||||
if (qemuDomainSetSCSIControllerModel(def, qemuCaps, &model) < 0)
|
model = qemuDomainGetSCSIControllerModel(def, cont, qemuCaps);
|
||||||
|
if (model < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@
|
|||||||
# include "qemu_conf.h"
|
# include "qemu_conf.h"
|
||||||
# include "qemu_capabilities.h"
|
# include "qemu_capabilities.h"
|
||||||
|
|
||||||
int qemuDomainSetSCSIControllerModel(const virDomainDef *def,
|
int qemuDomainGetSCSIControllerModel(const virDomainDef *def,
|
||||||
virQEMUCapsPtr qemuCaps,
|
const virDomainControllerDef *cont,
|
||||||
int *model);
|
virQEMUCapsPtr qemuCaps);
|
||||||
|
|
||||||
int qemuDomainFindSCSIControllerModel(const virDomainDef *def,
|
int qemuDomainFindSCSIControllerModel(const virDomainDef *def,
|
||||||
virDomainDeviceInfoPtr info,
|
virDomainDeviceInfoPtr info,
|
||||||
|
Loading…
Reference in New Issue
Block a user