diff options
author | Michal Privoznik <mprivozn@redhat.com> | 2023-04-24 10:51:52 +0200 |
---|---|---|
committer | Michal Privoznik <mprivozn@redhat.com> | 2023-04-25 12:36:30 +0200 |
commit | 6e60e8cb9fa4306f2caaeb7f25cd712a2bc0ab26 (patch) | |
tree | 25ec1447c3aec7d43cfbbd3f266496234674b0c7 | |
parent | 3f7039f9e8fae8f43b69f83b80c58866f0507b89 (diff) | |
download | libvirt-6e60e8cb9fa4306f2caaeb7f25cd712a2bc0ab26.tar.gz |
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 <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
-rw-r--r-- | src/qemu/qemu_domain.c | 96 |
1 files changed, 58 insertions, 38 deletions
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: * |