summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Privoznik <mprivozn@redhat.com>2023-04-24 10:51:52 +0200
committerMichal Privoznik <mprivozn@redhat.com>2023-04-25 12:36:30 +0200
commit6e60e8cb9fa4306f2caaeb7f25cd712a2bc0ab26 (patch)
tree25ec1447c3aec7d43cfbbd3f266496234674b0c7
parent3f7039f9e8fae8f43b69f83b80c58866f0507b89 (diff)
downloadlibvirt-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.c96
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:
*