From nobody Mon Feb 9 06:50:55 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1599835100; cv=none; d=zohomail.com; s=zohoarc; b=mtpZUR963oGG939L6mwNiP/Hczc/XvyOUC1CsJKrmrvppTXq9Q12N4aRIzNiijilUAJ5ZE147uhP8+m6Vm0yqwhpSWwaaPkA8wOzyhMbVSlQ986LqaaKRW87DQTrhPRyqJ0oj5NfD/Yds0NTqVVaq+rQXaUcI6IF6HzwS4zLzdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599835100; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fvJyj5aJAZgNBirmt+6oTdd+XyM/kkSxvvOc3MzfmPg=; b=GenBrYV2oE3+/MngDD+eF5//nQAd7p1XWWQ6bNe91rkip1qmsAtZtgAtaTgAmXIttuW6Ry+wA+i2UOsVZ/JKVyrTsHwc0hRwOcklmOldwslmloNTihVlw7zKNTB7Rv+03s8B5EvwjTScvikUe4C45bzdedgLjZLerqmbxSLYK+4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1599835100170563.4269778101334; Fri, 11 Sep 2020 07:38:20 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-137-Lo8qIFPWO7e4Uks9iMgm6Q-1; Fri, 11 Sep 2020 10:38:16 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 94F5C81C463; Fri, 11 Sep 2020 14:38:10 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 730CA8FCA3; Fri, 11 Sep 2020 14:38:10 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4063D92311; Fri, 11 Sep 2020 14:38:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 08BEbufw002427 for ; Fri, 11 Sep 2020 10:37:56 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2BF4A8FCA3; Fri, 11 Sep 2020 14:37:56 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.40.208.92]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9F2A78FCA1 for ; Fri, 11 Sep 2020 14:37:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1599835099; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fvJyj5aJAZgNBirmt+6oTdd+XyM/kkSxvvOc3MzfmPg=; b=JDqEx/c5FFu/SZ6pAeFQ+ke+KhOEmNK9IZM1tU7D8k6sNDYrRW4cA3DeqoQ1GCCwTBaVb9 9wVVQdHgN5+ob+SyrIn8askFeCvc+oBi5aaqbwCoBL7BpsbiPSyfocD5dZn5tejpJ/4PJr 5mKPrhXmPuLe8l+Y65LaX0MkA9z1JfU= X-MC-Unique: Lo8qIFPWO7e4Uks9iMgm6Q-1 From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 12/17] qemu: domain: Extract preparation of hostdev specific data to a separate function Date: Fri, 11 Sep 2020 16:37:30 +0200 Message-Id: <07365fdfcda8b84e6c94f626d23363169a77ae66.1599834862.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Historically we've prepared secrets for all objects in one place. This doesn't make much sense and it's semantically more appealing to prepare everything for a single device type in one place. Move the setup of the (iSCSI|SCSI) hostdev secrets into a new function which will be used to setup other things as well in the future. This is a similar approach we do for disks. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_domain.c | 59 ++++++++++++++++++++++++++++++++++++----- src/qemu/qemu_domain.h | 4 +++ src/qemu/qemu_hotplug.c | 2 +- src/qemu/qemu_process.c | 21 +++++++++++++++ 4 files changed, 78 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 89f2c2c09b..1289201764 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1596,13 +1596,7 @@ qemuDomainSecretPrepare(virQEMUDriverPtr driver, g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); size_t i; - /* disk secrets are prepared when preparing disks */ - - for (i =3D 0; i < vm->def->nhostdevs; i++) { - if (qemuDomainSecretHostdevPrepare(priv, - vm->def->hostdevs[i]) < 0) - return -1; - } + /* disk and hostdev secrets are prepared when preparing internal data = */ for (i =3D 0; i < vm->def->nserials; i++) { if (qemuDomainSecretChardevPrepare(cfg, priv, @@ -10455,6 +10449,57 @@ qemuDomainPrepareDiskSource(virDomainDiskDefPtr di= sk, } +int +qemuDomainPrepareHostdev(virDomainHostdevDefPtr hostdev, + qemuDomainObjPrivatePtr priv) +{ + if (virHostdevIsSCSIDevice(hostdev)) { + virDomainHostdevSubsysSCSIPtr scsisrc =3D &hostdev->source.subsys.= u.scsi; + virStorageSourcePtr src =3D NULL; + + switch ((virDomainHostdevSCSIProtocolType) scsisrc->protocol) { + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE: + break; + + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI: + src =3D scsisrc->u.iscsi.src; + break; + + case VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST: + default: + virReportEnumRangeError(virDomainHostdevSCSIProtocolType, scsi= src->protocol); + return -1; + } + + if (src) { + if (src->auth) { + bool iscsiHasPS =3D virQEMUCapsGet(priv->qemuCaps, QEMU_CA= PS_ISCSI_PASSWORD_SECRET); + virSecretUsageType usageType =3D VIR_SECRET_USAGE_TYPE_ISC= SI; + qemuDomainStorageSourcePrivatePtr srcPriv =3D qemuDomainSt= orageSourcePrivateFetch(src); + + if (!qemuDomainSupportsEncryptedSecret(priv) || !iscsiHasP= S) { + srcPriv->secinfo =3D qemuDomainSecretInfoNewPlain(usag= eType, + src->a= uth->username, + &src->= auth->seclookupdef); + } else { + srcPriv->secinfo =3D qemuDomainSecretAESSetupFromSecre= t(priv, + = hostdev->info->alias, + = NULL, + = usageType, + = src->auth->username, + = &src->auth->seclookupdef); + } + + if (!srcPriv->secinfo) + return -1; + } + } + } + + return 0; +} + + /** * qemuDomainDiskCachemodeFlags: * diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index adba79aded..6abd896119 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -970,6 +970,10 @@ qemuDomainDiskCachemodeFlags(int cachemode, bool *direct, bool *noflush); +int +qemuDomainPrepareHostdev(virDomainHostdevDefPtr hostdev, + qemuDomainObjPrivatePtr priv); + char * qemuDomainGetManagedPRSocketPath(qemuDomainObjPrivatePtr priv); bool qemuDomainDefHasManagedPR(virDomainObjPtr vm); diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index e2c6e14c2e..f20b8e9a56 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2604,7 +2604,7 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr drive= r, if (qemuAssignDeviceHostdevAlias(vm->def, &hostdev->info->alias, -1) <= 0) goto cleanup; - if (qemuDomainSecretHostdevPrepare(priv, hostdev) < 0) + if (qemuDomainPrepareHostdev(hostdev, priv) < 0) goto cleanup; if (!(data =3D qemuBuildHostdevSCSIAttachPrepare(hostdev, &backendalia= s, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index dd60fb0ddf..79e72aaf2a 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6213,6 +6213,23 @@ qemuProcessPrepareDomainStorage(virQEMUDriverPtr dri= ver, } +static int +qemuProcessPrepareDomainHostdevs(virDomainObjPtr vm, + qemuDomainObjPrivatePtr priv) +{ + size_t i; + + for (i =3D 0; i < vm->def->nhostdevs; i++) { + virDomainHostdevDefPtr hostdev =3D vm->def->hostdevs[i]; + + if (qemuDomainPrepareHostdev(hostdev, priv) < 0) + return -1; + } + + return 0; +} + + static void qemuProcessPrepareAllowReboot(virDomainObjPtr vm) { @@ -6315,6 +6332,10 @@ qemuProcessPrepareDomain(virQEMUDriverPtr driver, if (qemuProcessPrepareDomainStorage(driver, vm, priv, cfg, flags) < 0) return -1; + VIR_DEBUG("Setting up host devices"); + if (qemuProcessPrepareDomainHostdevs(vm, priv) < 0) + return -1; + VIR_DEBUG("Prepare chardev source backends for TLS"); qemuDomainPrepareChardevSource(vm->def, cfg); --=20 2.26.2