From: Michal Privoznik Date: Mon, 24 Apr 2023 08:51:52 +0000 (+0200) Subject: qemu_domain: Move internals of qemuDomainPrepareHostdev() into a separate function X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6e60e8cb9fa4306f2caaeb7f25cd712a2bc0ab26;p=libvirt.git qemu_domain: Move internals of qemuDomainPrepareHostdev() into a separate function So far, qemuDomainPrepareHostdev() is a NOP for anything but a SCSI hostdev. This will change soon. Therefore, move the SCSI hostdev preparation into a separate function (qemuDomainPrepareHostdevSCSI()) and make qemuDomainPrepareHostdev() call function corresponding to the hostdev type (or nothing if the type doesn't need any preparation). Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 41db98880c..f462476d2a 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11239,54 +11239,52 @@ qemuDomainPrepareDiskSource(virDomainDiskDef *disk, } -int -qemuDomainPrepareHostdev(virDomainHostdevDef *hostdev, - qemuDomainObjPrivate *priv) +static int +qemuDomainPrepareHostdevSCSI(virDomainHostdevDef *hostdev, + qemuDomainObjPrivate *priv) { - if (virHostdevIsSCSIDevice(hostdev)) { - virDomainHostdevSubsysSCSI *scsisrc = &hostdev->source.subsys.u.scsi; - virStorageSource *src = NULL; + virDomainHostdevSubsysSCSI *scsisrc = &hostdev->source.subsys.u.scsi; + virStorageSource *src = NULL; - switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { - case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: - virObjectUnref(scsisrc->u.host.src); - scsisrc->u.host.src = virStorageSourceNew(); - src = scsisrc->u.host.src; + switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: + virObjectUnref(scsisrc->u.host.src); + scsisrc->u.host.src = virStorageSourceNew(); + src = scsisrc->u.host.src; - src->type = VIR_STORAGE_TYPE_BLOCK; + src->type = VIR_STORAGE_TYPE_BLOCK; - break; + break; - case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI: - src = scsisrc->u.iscsi.src; - break; + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI: + src = scsisrc->u.iscsi.src; + break; - case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST: - default: - virReportEnumRangeError(virDomainHostdevSCSIProtocolType, scsisrc->protocol); - return -1; - } + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST: + default: + virReportEnumRangeError(virDomainHostdevSCSIProtocolType, scsisrc->protocol); + return -1; + } - if (src) { - const char *backendalias = hostdev->info->alias; + if (src) { + const char *backendalias = hostdev->info->alias; - src->readonly = hostdev->readonly; - src->id = qemuDomainStorageIDNew(priv); - src->nodestorage = g_strdup_printf("libvirt-%d-backend", src->id); - backendalias = src->nodestorage; + src->readonly = hostdev->readonly; + src->id = qemuDomainStorageIDNew(priv); + src->nodestorage = g_strdup_printf("libvirt-%d-backend", src->id); + backendalias = src->nodestorage; - if (src->auth) { - virSecretUsageType usageType = VIR_SECRET_USAGE_TYPE_ISCSI; - qemuDomainStorageSourcePrivate *srcPriv = qemuDomainStorageSourcePrivateFetch(src); + if (src->auth) { + virSecretUsageType usageType = VIR_SECRET_USAGE_TYPE_ISCSI; + qemuDomainStorageSourcePrivate *srcPriv = qemuDomainStorageSourcePrivateFetch(src); - if (!(srcPriv->secinfo = qemuDomainSecretInfoSetupFromSecret(priv, - backendalias, - NULL, 0, - usageType, - src->auth->username, - &src->auth->seclookupdef))) - return -1; - } + if (!(srcPriv->secinfo = qemuDomainSecretInfoSetupFromSecret(priv, + backendalias, + NULL, 0, + usageType, + src->auth->username, + &src->auth->seclookupdef))) + return -1; } } @@ -11294,6 +11292,28 @@ qemuDomainPrepareHostdev(virDomainHostdevDef *hostdev, } +int +qemuDomainPrepareHostdev(virDomainHostdevDef *hostdev, + qemuDomainObjPrivate *priv) +{ + if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) + return 0; + + switch ((virDomainHostdevSubsysType)hostdev->source.subsys.type) { + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: + return qemuDomainPrepareHostdevSCSI(hostdev, priv); + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: + break; + } + + return 0; +} + + /** * qemuDomainDiskCachemodeFlags: *