diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 306547e798..ef5f02a23b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6065,20 +6065,14 @@ virDomainHostdevSubsysSCSIDefParseXML(xmlNodePtr sourcenode, unsigned int flags, virDomainXMLOption *xmlopt) { - g_autofree char *protocol = NULL; - - if ((protocol = virXMLPropString(sourcenode, "protocol"))) { - scsisrc->protocol = - virDomainHostdevSubsysSCSIProtocolTypeFromString(protocol); - if (scsisrc->protocol < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Unknown SCSI subsystem protocol '%1$s'"), - protocol); - return -1; - } + if (virXMLPropEnum(sourcenode, "protocol", + virDomainHostdevSubsysSCSIProtocolTypeFromString, + VIR_XML_PROP_NONE, + &scsisrc->protocol) < 0) { + return -1; } - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + switch (scsisrc->protocol) { case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: return virDomainHostdevSubsysSCSIHostDefParseXML(sourcenode, ctxt, scsisrc, flags, xmlopt); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index ca195a52d2..5cce60420f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -273,7 +273,7 @@ typedef enum { } virDomainDeviceSGIO; struct _virDomainHostdevSubsysSCSI { - int protocol; /* enum virDomainHostdevSCSIProtocolType */ + virDomainHostdevSCSIProtocolType protocol; virDomainDeviceSGIO sgio; virTristateBool rawio; union { diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index be5814663c..ccbf41a0f7 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5033,7 +5033,7 @@ qemuBuildHostdevSCSIDetachPrepare(virDomainHostdevDef *hostdev, virStorageSource *src; qemuDomainStorageSourcePrivate *srcpriv; - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + switch (scsisrc->protocol) { case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: src = scsisrc->u.host.src; break; @@ -5068,7 +5068,7 @@ qemuBuildHostdevSCSIAttachPrepare(virDomainHostdevDef *hostdev, g_autoptr(qemuBlockStorageSourceAttachData) ret = g_new0(qemuBlockStorageSourceAttachData, 1); virStorageSource *src = NULL; - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + switch (scsisrc->protocol) { case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: src = scsisrc->u.host.src; break; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e578df624b..069f145d26 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6008,7 +6008,7 @@ qemuDomainDeviceHostdevDefPostParseRestoreBackendAlias(virDomainHostdevDef *host hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) return 0; - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + switch (scsisrc->protocol) { case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: if (!scsisrc->u.host.src) scsisrc->u.host.src = virStorageSourceNew(); @@ -11373,7 +11373,7 @@ qemuDomainPrepareHostdevSCSI(virDomainHostdevDef *hostdev, virStorageSource *src = NULL; g_autofree char *devstr = NULL; - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + switch (scsisrc->protocol) { case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: virObjectUnref(scsisrc->u.host.src); scsisrc->u.host.src = virStorageSourceNew();