From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868293293810.5821500810202; Fri, 1 Jun 2018 08:51:33 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 78DC830BBBC7; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C134830012B7; Fri, 1 Jun 2018 15:51:29 +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 F038F1800C9D; Fri, 1 Jun 2018 15:51:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpQmc010592 for ; Fri, 1 Jun 2018 11:51:26 -0400 Received: by smtp.corp.redhat.com (Postfix) id 57A122026DFD; Fri, 1 Jun 2018 15:51:26 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id F11A92026DEF for ; Fri, 1 Jun 2018 15:51:25 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:04 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/9] qemu: hotplug: Remove qemuDomainDelDiskSrcTLSObject 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Fri, 01 Jun 2018 15:51:31 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Replace access via wrapper by direct call to monitor API. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_hotplug.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 6564615597..d8ca894519 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -182,15 +182,6 @@ qemuDomainAddDiskSrcTLSObject(virQEMUDriverPtr driver, } -static void -qemuDomainDelDiskSrcTLSObject(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virStorageSourcePtr src) -{ - qemuDomainDelTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE, NULL, src->tl= sAlias); -} - - static int qemuHotplugWaitForTrayEject(virQEMUDriverPtr driver, virDomainObjPtr vm, @@ -529,6 +520,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, ignore_value(qemuMonitorDelObject(priv->mon, unmanagedPrmgrAlias)); if (managedPrmgrAlias) ignore_value(qemuMonitorDelObject(priv->mon, managedPrmgrAlias)); + if (disk->src->tlsAlias) + ignore_value(qemuMonitorDelObject(priv->mon, disk->src->tlsAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) ret =3D -2; virErrorRestore(&orig_err); @@ -536,7 +529,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, virDomainAuditDisk(vm, NULL, disk->src, "attach", false); error: - qemuDomainDelDiskSrcTLSObject(driver, vm, disk->src); ignore_value(qemuHotplugPrepareDiskAccess(driver, vm, disk, NULL, true= )); if (priv->prDaemonRunning && !virDomainDefHasManagedPR(vm->def)) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868303309708.8911567765246; Fri, 1 Jun 2018 08:51:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5284DC04B2F1; Fri, 1 Jun 2018 15:51:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0270A60BE3; Fri, 1 Jun 2018 15:51:41 +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 575F71800FC2; Fri, 1 Jun 2018 15:51:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpRFF010602 for ; Fri, 1 Jun 2018 11:51:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1673D2026DFD; Fri, 1 Jun 2018 15:51:27 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 932862026DEF for ; Fri, 1 Jun 2018 15:51:26 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:05 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/9] qemu: alias: Rename qemuAliasFromDisk to qemuAliasDiskDriveFromDisk 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 01 Jun 2018 15:51:42 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Emphasize that it's for the 'drive' part of the disk. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_alias.c | 4 ++-- src/qemu/qemu_alias.h | 2 +- src/qemu/qemu_block.c | 2 +- src/qemu/qemu_command.c | 4 ++-- src/qemu/qemu_driver.c | 18 +++++++++--------- src/qemu/qemu_hotplug.c | 6 +++--- src/qemu/qemu_migration.c | 6 +++--- src/qemu/qemu_process.c | 2 +- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index 89dec91ed1..989cbb4ba9 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -650,7 +650,7 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCap= sPtr qemuCaps) } -/* qemuAliasFromDisk +/* qemuAliasDiskDriveFromDisk * @disk: Pointer to a disk definition * * Generate and return an alias for the device disk '-drive' @@ -658,7 +658,7 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCap= sPtr qemuCaps) * Returns NULL with error or a string containing the alias */ char * -qemuAliasFromDisk(const virDomainDiskDef *disk) +qemuAliasDiskDriveFromDisk(const virDomainDiskDef *disk) { char *ret; diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h index 51f64624d7..0e2370b737 100644 --- a/src/qemu/qemu_alias.h +++ b/src/qemu/qemu_alias.h @@ -75,7 +75,7 @@ int qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUC= apsPtr qemuCaps); int qemuDomainDeviceAliasIndex(const virDomainDeviceInfo *info, const char *prefix); -char *qemuAliasFromDisk(const virDomainDiskDef *disk); +char *qemuAliasDiskDriveFromDisk(const virDomainDiskDef *disk); const char *qemuAliasDiskDriveSkipPrefix(const char *dev_name); diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index d1c2d756c2..85176925c9 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -297,7 +297,7 @@ qemuBlockDiskDetectNodes(virDomainDiskDefPtr disk, if (src->nodeformat || src->nodestorage) return 0; - if (!(alias =3D qemuAliasFromDisk(disk))) + if (!(alias =3D qemuAliasDiskDriveFromDisk(disk))) goto cleanup; if (!(entry =3D virHashLookup(disktable, alias))) { diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1e30c79d6f..484ac261b0 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1652,7 +1652,7 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, goto error; if (qemuDiskBusNeedsDeviceArg(disk->bus)) { - char *drivealias =3D qemuAliasFromDisk(disk); + char *drivealias =3D qemuAliasDiskDriveFromDisk(disk); if (!drivealias) goto error; @@ -2087,7 +2087,7 @@ qemuBuildDriveDevStr(const virDomainDef *def, virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISK_SHARE_RW)) virBufferAddLit(&opt, ",share-rw=3Don"); - if (!(drivealias =3D qemuAliasFromDisk(disk))) + if (!(drivealias =3D qemuAliasDiskDriveFromDisk(disk))) goto error; virBufferAsprintf(&opt, ",drive=3D%s,id=3D%s", drivealias, disk->info.= alias); VIR_FREE(drivealias); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 05a09eb706..b7c3348550 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -10960,7 +10960,7 @@ qemuDomainBlockResize(virDomainPtr dom, disk->src->format =3D=3D VIR_STORAGE_FILE_QED) size =3D VIR_ROUND_UP(size, 512); - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; qemuDomainObjEnterMonitor(driver, vm); @@ -14928,7 +14928,7 @@ qemuDomainSnapshotCreateSingleDiskActive(virQEMUDri= verPtr driver, const char *formatStr =3D NULL; int ret =3D -1, rc; - if (!(device =3D qemuAliasFromDisk(dd->disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(dd->disk))) goto cleanup; if (qemuGetDriveSourceString(dd->src, NULL, &source) < 0) @@ -16976,7 +16976,7 @@ qemuDomainBlockPullCommon(virQEMUDriverPtr driver, if (!(disk =3D qemuDomainDiskByName(vm->def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; if (qemuDomainDiskBlockJobIsActive(disk)) @@ -17089,7 +17089,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom, if (!(disk =3D qemuDomainDiskByName(vm->def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; if (disk->mirrorState !=3D VIR_DOMAIN_DISK_MIRROR_STATE_NONE && @@ -17320,7 +17320,7 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, if (!(disk =3D qemuDomainDiskByName(vm->def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; qemuDomainObjEnterMonitor(driver, vm); @@ -17452,7 +17452,7 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, if (!(disk =3D qemuDomainDiskByName(vm->def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; if (qemuDomainDiskBlockJobIsActive(disk)) @@ -17832,7 +17832,7 @@ qemuDomainBlockCommit(virDomainPtr dom, if (!(disk =3D qemuDomainDiskByName(vm->def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; if (!disk->src->path) { @@ -18463,7 +18463,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, if (!(disk =3D qemuDomainDiskByName(def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; if (qemuDomainSetBlockIoTuneDefaults(&info, &disk->blkdeviotune, @@ -18636,7 +18636,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, if (!(disk =3D qemuDomainDiskByName(def, path))) goto endjob; - if (!(device =3D qemuAliasFromDisk(disk))) + if (!(device =3D qemuAliasDiskDriveFromDisk(disk))) goto endjob; qemuDomainObjEnterMonitor(driver, vm); ret =3D qemuMonitorGetBlockIoThrottle(priv->mon, device, &reply); diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d8ca894519..62fb652093 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -270,7 +270,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, if (qemuHotplugPrepareDiskAccess(driver, vm, disk, newsrc, false) < 0) goto cleanup; - if (!(driveAlias =3D qemuAliasFromDisk(disk))) + if (!(driveAlias =3D qemuAliasDiskDriveFromDisk(disk))) goto error; qemuDomainObjEnterMonitor(driver, vm); @@ -446,7 +446,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, if (!(drivestr =3D qemuBuildDriveStr(disk, false, priv->qemuCaps))) goto error; - if (!(drivealias =3D qemuAliasFromDisk(disk))) + if (!(drivealias =3D qemuAliasDiskDriveFromDisk(disk))) goto error; if (!(devstr =3D qemuBuildDriveDevStr(vm->def, disk, 0, priv->qemuCaps= ))) @@ -3776,7 +3776,7 @@ qemuDomainRemoveDiskDevice(virQEMUDriverPtr driver, /* build the actual drive id string as the disk->info.alias doesn't * contain the QEMU_DRIVE_HOST_PREFIX that is passed to qemu */ - if (!(drivestr =3D qemuAliasFromDisk(disk))) + if (!(drivestr =3D qemuAliasDiskDriveFromDisk(disk))) return -1; if (diskPriv) { diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 5cf9be56b4..13d131f6b6 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -400,7 +400,7 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver, } VIR_FREE(diskAlias); - if (!(diskAlias =3D qemuAliasFromDisk(disk))) + if (!(diskAlias =3D qemuAliasDiskDriveFromDisk(disk))) goto cleanup; if (qemuDomainObjEnterMonitorAsync(driver, vm, @@ -651,7 +651,7 @@ qemuMigrationSrcNBDCopyCancelOne(virQEMUDriverPtr drive= r, goto cleanup; } - if (!(diskAlias =3D qemuAliasFromDisk(disk))) + if (!(diskAlias =3D qemuAliasDiskDriveFromDisk(disk))) return -1; if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) @@ -951,7 +951,7 @@ qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr driver, if (!qemuMigrationAnyCopyDisk(disk, nmigrate_disks, migrate_disks)) continue; - if (!(diskAlias =3D qemuAliasFromDisk(disk))) + if (!(diskAlias =3D qemuAliasDiskDriveFromDisk(disk))) goto cleanup; qemuBlockJobSyncBegin(disk); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 30cc5904e0..87fc6ffc67 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -2774,7 +2774,7 @@ qemuProcessInitPasswords(virQEMUDriverPtr driver, goto cleanup; VIR_FREE(alias); - if (!(alias =3D qemuAliasFromDisk(vm->def->disks[i]))) + if (!(alias =3D qemuAliasDiskDriveFromDisk(vm->def->disks[i]))) goto cleanup; if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) goto cleanup; --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868294871871.6167419408082; Fri, 1 Jun 2018 08:51:34 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 51E6D309D050; Fri, 1 Jun 2018 15:51:32 +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 778DE60C4E; Fri, 1 Jun 2018 15:51:31 +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 4F7324CA83; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpRQw010607 for ; Fri, 1 Jun 2018 11:51:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id ACE702026DFD; Fri, 1 Jun 2018 15:51:27 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 51F5F2026DEF for ; Fri, 1 Jun 2018 15:51:27 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:06 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/9] qemu: Reuse qemuBlockStorageSourceAttachApply in disk hotplug 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Fri, 01 Jun 2018 15:51:34 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Create a new "Prepare" function and move the drive add code into the new helpers. This will eventually allow to simplify and unify the attaching code for use with blockdev at the same time as providing compatibility with older qemus. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_block.c | 18 ++++++++++++++++++ src/qemu/qemu_block.h | 4 ++++ src/qemu/qemu_command.c | 29 ++++++++++++++++++++++++++++- src/qemu/qemu_command.h | 8 ++++---- src/qemu/qemu_hotplug.c | 26 +++++++++----------------- 5 files changed, 63 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 85176925c9..73aab9d73a 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -24,9 +24,12 @@ #include "viralloc.h" #include "virstring.h" +#include "virlog.h" #define VIR_FROM_THIS VIR_FROM_QEMU +VIR_LOG_INIT("qemu.qemu_block"); + /* qemu declares the buffer for node names as a 32 byte array */ static const size_t qemuBlockNodeNameBufSize =3D 32; @@ -1482,6 +1485,8 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorage= SourceAttachDataPtr data) virJSONValueFree(data->storageProps); virJSONValueFree(data->formatProps); + VIR_FREE(data->driveCmd); + VIR_FREE(data->driveAlias); VIR_FREE(data); } @@ -1563,6 +1568,13 @@ qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon, data->formatAttached =3D true; } + if (data->driveCmd) { + if (qemuMonitorAddDrive(mon, data->driveCmd) < 0) + return -1; + + data->driveAdded =3D true; + } + return 0; } @@ -1591,6 +1603,12 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr = mon, if (data->storageAttached) ignore_value(qemuMonitorBlockdevDel(mon, data->storageNodeName)); + if (data->driveAdded) { + if (qemuMonitorDriveDel(mon, data->driveAlias) < 0) + VIR_WARN("Unable to remove drive %s (%s) after failed " + "qemuMonitorAddDevice", data->driveAlias, data->drive= Cmd); + } + virErrorRestore(&orig_err); } diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index bbaf9ec0f1..5c7791ee72 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -78,6 +78,10 @@ struct qemuBlockStorageSourceAttachData { virJSONValuePtr formatProps; const char *formatNodeName; bool formatAttached; + + char *driveCmd; + char *driveAlias; + bool driveAdded; }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 484ac261b0..84bb857507 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1639,7 +1639,7 @@ qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr d= isk, } -char * +static char * qemuBuildDriveStr(virDomainDiskDefPtr disk, bool bootable, virQEMUCapsPtr qemuCaps) @@ -10436,3 +10436,30 @@ qemuBuildHotpluggableCPUProps(const virDomainVcpuD= ef *vcpu) virJSONValueFree(ret); return NULL; } + + +/** + * qemuBuildStorageSourceAttachPrepareDrive: + * @disk: disk object to prepare + * @qemuCaps: qemu capabilities object + * + * Prepare qemuBlockStorageSourceAttachDataPtr for use with the old approa= ch + * using -drive/drive_add. See qemuBlockStorageSourceAttachPrepareBlockdev. + */ +qemuBlockStorageSourceAttachDataPtr +qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDefPtr disk, + virQEMUCapsPtr qemuCaps) +{ + qemuBlockStorageSourceAttachDataPtr data =3D NULL; + + if (VIR_ALLOC(data) < 0) + return NULL; + + if (!(data->driveCmd =3D qemuBuildDriveStr(disk, false, qemuCaps)) || + !(data->driveAlias =3D qemuAliasDiskDriveFromDisk(disk))) { + qemuBlockStorageSourceAttachDataFree(data); + return NULL; + } + + return data; +} diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index b7580b4796..04f6245bc7 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -28,6 +28,7 @@ # include "domain_conf.h" # include "vircommand.h" # include "capabilities.h" +# include "qemu_block.h" # include "qemu_conf.h" # include "qemu_domain.h" # include "qemu_domain_address.h" @@ -102,10 +103,9 @@ char *qemuBuildNicDevStr(virDomainDefPtr def, char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk); -/* Both legacy & current support */ -char *qemuBuildDriveStr(virDomainDiskDefPtr disk, - bool bootable, - virQEMUCapsPtr qemuCaps); +qemuBlockStorageSourceAttachDataPtr +qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDefPtr disk, + virQEMUCapsPtr qemuCaps); /* Current, best practice */ char *qemuBuildDriveDevStr(const virDomainDef *def, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 62fb652093..ece9a82562 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -35,6 +35,7 @@ #include "qemu_interface.h" #include "qemu_process.h" #include "qemu_security.h" +#include "qemu_block.h" #include "domain_audit.h" #include "netdev_bandwidth_conf.h" #include "domain_nwfilter.h" @@ -390,15 +391,13 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, { int ret =3D -1; qemuDomainObjPrivatePtr priv =3D vm->privateData; + qemuBlockStorageSourceAttachDataPtr data =3D NULL; virErrorPtr orig_err; char *devstr =3D NULL; - char *drivestr =3D NULL; - char *drivealias =3D NULL; char *unmanagedPrmgrAlias =3D NULL; char *managedPrmgrAlias =3D NULL; char *encobjAlias =3D NULL; char *secobjAlias =3D NULL; - bool driveAdded =3D false; virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); virJSONValuePtr secobjProps =3D NULL; virJSONValuePtr encobjProps =3D NULL; @@ -439,14 +438,11 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, !(unmanagedPrmgrProps =3D qemuBuildPRManagerInfoProps(disk->src))) goto error; - if (disk->src->haveTLS =3D=3D VIR_TRISTATE_BOOL_YES && - qemuDomainAddDiskSrcTLSObject(driver, vm, disk->src) < 0) - goto error; - - if (!(drivestr =3D qemuBuildDriveStr(disk, false, priv->qemuCaps))) + if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps))) goto error; - if (!(drivealias =3D qemuAliasDiskDriveFromDisk(disk))) + if (disk->src->haveTLS =3D=3D VIR_TRISTATE_BOOL_YES && + qemuDomainAddDiskSrcTLSObject(driver, vm, disk->src) < 0) goto error; if (!(devstr =3D qemuBuildDriveDevStr(vm->def, disk, 0, priv->qemuCaps= ))) @@ -473,9 +469,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, qemuMonitorAddObject(priv->mon, &unmanagedPrmgrProps, &unmanagedPr= mgrAlias) < 0) goto exit_monitor; - if (qemuMonitorAddDrive(priv->mon, drivestr) < 0) + if (qemuBlockStorageSourceAttachApply(priv->mon, data) < 0) goto exit_monitor; - driveAdded =3D true; if (qemuMonitorAddDevice(priv->mon, devstr) < 0) goto exit_monitor; @@ -491,6 +486,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, ret =3D 0; cleanup: + qemuBlockStorageSourceAttachDataFree(data); virJSONValueFree(managedPrmgrProps); virJSONValueFree(unmanagedPrmgrProps); virJSONValueFree(encobjProps); @@ -500,18 +496,14 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, VIR_FREE(unmanagedPrmgrAlias); VIR_FREE(secobjAlias); VIR_FREE(encobjAlias); - VIR_FREE(drivealias); - VIR_FREE(drivestr); VIR_FREE(devstr); virObjectUnref(cfg); return ret; exit_monitor: + qemuBlockStorageSourceAttachRollback(priv->mon, data); + virErrorPreserveLast(&orig_err); - if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) { - VIR_WARN("Unable to remove drive %s (%s) after failed " - "qemuMonitorAddDevice", drivealias, drivestr); - } if (secobjAlias) ignore_value(qemuMonitorDelObject(priv->mon, secobjAlias)); if (encobjAlias) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868304718643.3650264853429; Fri, 1 Jun 2018 08:51:44 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E7DAA300374D; Fri, 1 Jun 2018 15:51:42 +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 92A492010CB5; Fri, 1 Jun 2018 15:51:42 +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 CCE734CA85; Fri, 1 Jun 2018 15:51:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpS2M010618 for ; Fri, 1 Jun 2018 11:51:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 506E12026DFD; Fri, 1 Jun 2018 15:51:28 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id E90DC2026DEF for ; Fri, 1 Jun 2018 15:51:27 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:07 +0200 Message-Id: <74c94cdefe7f941181b9ca11a21937b0dcb1bdd4.1527868025.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 4/9] qemu: hotplug: Extract hotplug of PR into qemuBlockStorageSourceAttachApply 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.25 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Fri, 01 Jun 2018 15:51:43 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Introduce a new setup function for all the related configuration and move the setup and attachment of the PR code. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_block.c | 8 ++++++++ src/qemu/qemu_block.h | 3 +++ src/qemu/qemu_command.c | 21 +++++++++++++++++++++ src/qemu/qemu_command.h | 3 +++ src/qemu/qemu_hotplug.c | 16 ++-------------- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 73aab9d73a..2bc8120f5f 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1485,6 +1485,7 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorage= SourceAttachDataPtr data) virJSONValueFree(data->storageProps); virJSONValueFree(data->formatProps); + virJSONValueFree(data->prmgrProps); VIR_FREE(data->driveCmd); VIR_FREE(data->driveAlias); VIR_FREE(data); @@ -1548,6 +1549,10 @@ qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon, { int rv; + if (data->prmgrProps && + qemuMonitorAddObject(mon, &data->prmgrProps, &data->prmgrAlias) < = 0) + return -1; + if (data->storageProps) { rv =3D qemuMonitorBlockdevAdd(mon, data->storageProps); data->storageProps =3D NULL; @@ -1609,6 +1614,9 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr m= on, "qemuMonitorAddDevice", data->driveAlias, data->drive= Cmd); } + if (data->prmgrAlias) + ignore_value(qemuMonitorDelObject(mon, data->prmgrAlias)); + virErrorRestore(&orig_err); } diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index 5c7791ee72..e5064574a9 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -71,6 +71,9 @@ qemuBlockStorageSourceGetBlockdevProps(virStorageSourcePt= r src); typedef struct qemuBlockStorageSourceAttachData qemuBlockStorageSourceAtta= chData; typedef qemuBlockStorageSourceAttachData *qemuBlockStorageSourceAttachData= Ptr; struct qemuBlockStorageSourceAttachData { + virJSONValuePtr prmgrProps; + char *prmgrAlias; + virJSONValuePtr storageProps; const char *storageNodeName; bool storageAttached; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 84bb857507..af97069770 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10463,3 +10463,24 @@ qemuBuildStorageSourceAttachPrepareDrive(virDomain= DiskDefPtr disk, return data; } + + +/** + * qemuBuildStorageSourceAttachPrepareCommon: + * @src: storage source + * @data: already initialized data for disk source addition + * + * Prepare data for configuration associated with the disk source such as + * secrets/TLS/pr objects etc ... + */ +int +qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, + qemuBlockStorageSourceAttachData= Ptr data) +{ + if (src->pr && + !virStoragePRDefIsManaged(src->pr) && + !(data->prmgrProps =3D qemuBuildPRManagerInfoProps(src))) + return -1; + + return 0; +} diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 04f6245bc7..711fce9648 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -106,6 +106,9 @@ char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk= ); qemuBlockStorageSourceAttachDataPtr qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDefPtr disk, virQEMUCapsPtr qemuCaps); +int +qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, + qemuBlockStorageSourceAttachData= Ptr data); /* Current, best practice */ char *qemuBuildDriveDevStr(const virDomainDef *def, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index ece9a82562..7ea5a531f3 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -394,14 +394,12 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, qemuBlockStorageSourceAttachDataPtr data =3D NULL; virErrorPtr orig_err; char *devstr =3D NULL; - char *unmanagedPrmgrAlias =3D NULL; char *managedPrmgrAlias =3D NULL; char *encobjAlias =3D NULL; char *secobjAlias =3D NULL; virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); virJSONValuePtr secobjProps =3D NULL; virJSONValuePtr encobjProps =3D NULL; - virJSONValuePtr unmanagedPrmgrProps =3D NULL; virJSONValuePtr managedPrmgrProps =3D NULL; qemuDomainStorageSourcePrivatePtr srcPriv; qemuDomainSecretInfoPtr secinfo =3D NULL; @@ -433,12 +431,10 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, if (qemuDomainDiskAttachManagedPR(vm, disk, &managedPrmgrProps) < 0) goto error; - if (disk->src->pr && - !virStoragePRDefIsManaged(disk->src->pr) && - !(unmanagedPrmgrProps =3D qemuBuildPRManagerInfoProps(disk->src))) + if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps))) goto error; - if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps))) + if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, data) < 0) goto error; if (disk->src->haveTLS =3D=3D VIR_TRISTATE_BOOL_YES && @@ -465,10 +461,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, qemuMonitorAddObject(priv->mon, &managedPrmgrProps, &managedPrmgrA= lias) < 0) goto exit_monitor; - if (unmanagedPrmgrProps && - qemuMonitorAddObject(priv->mon, &unmanagedPrmgrProps, &unmanagedPr= mgrAlias) < 0) - goto exit_monitor; - if (qemuBlockStorageSourceAttachApply(priv->mon, data) < 0) goto exit_monitor; @@ -488,12 +480,10 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, cleanup: qemuBlockStorageSourceAttachDataFree(data); virJSONValueFree(managedPrmgrProps); - virJSONValueFree(unmanagedPrmgrProps); virJSONValueFree(encobjProps); virJSONValueFree(secobjProps); qemuDomainSecretDiskDestroy(disk); VIR_FREE(managedPrmgrAlias); - VIR_FREE(unmanagedPrmgrAlias); VIR_FREE(secobjAlias); VIR_FREE(encobjAlias); VIR_FREE(devstr); @@ -508,8 +498,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, ignore_value(qemuMonitorDelObject(priv->mon, secobjAlias)); if (encobjAlias) ignore_value(qemuMonitorDelObject(priv->mon, encobjAlias)); - if (unmanagedPrmgrAlias) - ignore_value(qemuMonitorDelObject(priv->mon, unmanagedPrmgrAlias)); if (managedPrmgrAlias) ignore_value(qemuMonitorDelObject(priv->mon, managedPrmgrAlias)); if (disk->src->tlsAlias) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 152786831348441.460799696087975; Fri, 1 Jun 2018 08:51:53 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 764E58051A; Fri, 1 Jun 2018 15:51:50 +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 0A1BE2010CB5; Fri, 1 Jun 2018 15:51:50 +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 5BE584CA87; Fri, 1 Jun 2018 15:51:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpT6w010627 for ; Fri, 1 Jun 2018 11:51:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id E6DA72026DFD; Fri, 1 Jun 2018 15:51:28 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8C3E62026DEF for ; Fri, 1 Jun 2018 15:51:28 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:08 +0200 Message-Id: <3a66eea63798e8c75298b5898e37eb2da9005d9a.1527868025.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 5/9] qemu: hotplug: Extract hotplug of secrets into qemuBlockStorageSourceAttachApply 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.25 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 01 Jun 2018 15:51:51 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_block.c | 21 +++++++++++++++++++++ src/qemu/qemu_block.h | 6 ++++++ src/qemu/qemu_command.c | 13 +++++++++++++ src/qemu/qemu_hotplug.c | 37 ------------------------------------- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 2bc8120f5f..b6b1316ea5 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1486,6 +1486,10 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorag= eSourceAttachDataPtr data) virJSONValueFree(data->storageProps); virJSONValueFree(data->formatProps); virJSONValueFree(data->prmgrProps); + virJSONValueFree(data->authsecretProps); + virJSONValueFree(data->encryptsecretProps); + VIR_FREE(data->authsecretAlias); + VIR_FREE(data->encryptsecretAlias); VIR_FREE(data->driveCmd); VIR_FREE(data->driveAlias); VIR_FREE(data); @@ -1553,6 +1557,16 @@ qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon, qemuMonitorAddObject(mon, &data->prmgrProps, &data->prmgrAlias) < = 0) return -1; + if (data->authsecretProps && + qemuMonitorAddObject(mon, &data->authsecretProps, + &data->authsecretAlias) < 0) + return -1; + + if (data->encryptsecretProps && + qemuMonitorAddObject(mon, &data->encryptsecretProps, + &data->encryptsecretAlias) < 0) + return -1; + if (data->storageProps) { rv =3D qemuMonitorBlockdevAdd(mon, data->storageProps); data->storageProps =3D NULL; @@ -1617,6 +1631,13 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr = mon, if (data->prmgrAlias) ignore_value(qemuMonitorDelObject(mon, data->prmgrAlias)); + if (data->authsecretAlias) + ignore_value(qemuMonitorDelObject(mon, data->authsecretAlias)); + + if (data->encryptsecretAlias) + ignore_value(qemuMonitorDelObject(mon, data->encryptsecretAlias)); + + virErrorRestore(&orig_err); } diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index e5064574a9..4ffb42dfd6 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -85,6 +85,12 @@ struct qemuBlockStorageSourceAttachData { char *driveCmd; char *driveAlias; bool driveAdded; + + virJSONValuePtr authsecretProps; + char *authsecretAlias; + + virJSONValuePtr encryptsecretProps; + char *encryptsecretAlias; }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index af97069770..e11ae8b874 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10477,10 +10477,23 @@ int qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, qemuBlockStorageSourceAttachData= Ptr data) { + qemuDomainStorageSourcePrivatePtr srcpriv =3D QEMU_DOMAIN_STORAGE_SOUR= CE_PRIVATE(src); + if (src->pr && !virStoragePRDefIsManaged(src->pr) && !(data->prmgrProps =3D qemuBuildPRManagerInfoProps(src))) return -1; + if (srcpriv) { + if (srcpriv->secinfo && + srcpriv->secinfo->type =3D=3D VIR_DOMAIN_SECRET_INFO_TYPE_AES = && + qemuBuildSecretInfoProps(srcpriv->secinfo, &data->authsecretPr= ops) < 0) + return -1; + + if (srcpriv->encinfo && + qemuBuildSecretInfoProps(srcpriv->encinfo, &data->encryptsecre= tProps) < 0) + return -1; + } + return 0; } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 7ea5a531f3..d4db3d2bba 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -395,15 +395,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, virErrorPtr orig_err; char *devstr =3D NULL; char *managedPrmgrAlias =3D NULL; - char *encobjAlias =3D NULL; - char *secobjAlias =3D NULL; virQEMUDriverConfigPtr cfg =3D virQEMUDriverGetConfig(driver); - virJSONValuePtr secobjProps =3D NULL; - virJSONValuePtr encobjProps =3D NULL; virJSONValuePtr managedPrmgrProps =3D NULL; - qemuDomainStorageSourcePrivatePtr srcPriv; - qemuDomainSecretInfoPtr secinfo =3D NULL; - qemuDomainSecretInfoPtr encinfo =3D NULL; if (qemuHotplugPrepareDiskAccess(driver, vm, disk, NULL, false) < 0) goto cleanup; @@ -414,20 +407,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0) goto error; - srcPriv =3D QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src); - if (srcPriv) { - secinfo =3D srcPriv->secinfo; - encinfo =3D srcPriv->encinfo; - } - - if (secinfo && secinfo->type =3D=3D VIR_DOMAIN_SECRET_INFO_TYPE_AES) { - if (qemuBuildSecretInfoProps(secinfo, &secobjProps) < 0) - goto error; - } - - if (encinfo && qemuBuildSecretInfoProps(encinfo, &encobjProps) < 0) - goto error; - if (qemuDomainDiskAttachManagedPR(vm, disk, &managedPrmgrProps) < 0) goto error; @@ -449,14 +428,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, qemuDomainObjEnterMonitor(driver, vm); - if (secobjProps && - qemuMonitorAddObject(priv->mon, &secobjProps, &secobjAlias) < 0) - goto exit_monitor; - - if (encobjProps && - qemuMonitorAddObject(priv->mon, &encobjProps, &encobjAlias) < 0) - goto exit_monitor; - if (managedPrmgrProps && qemuMonitorAddObject(priv->mon, &managedPrmgrProps, &managedPrmgrA= lias) < 0) goto exit_monitor; @@ -480,12 +451,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, cleanup: qemuBlockStorageSourceAttachDataFree(data); virJSONValueFree(managedPrmgrProps); - virJSONValueFree(encobjProps); - virJSONValueFree(secobjProps); qemuDomainSecretDiskDestroy(disk); VIR_FREE(managedPrmgrAlias); - VIR_FREE(secobjAlias); - VIR_FREE(encobjAlias); VIR_FREE(devstr); virObjectUnref(cfg); return ret; @@ -494,10 +461,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, qemuBlockStorageSourceAttachRollback(priv->mon, data); virErrorPreserveLast(&orig_err); - if (secobjAlias) - ignore_value(qemuMonitorDelObject(priv->mon, secobjAlias)); - if (encobjAlias) - ignore_value(qemuMonitorDelObject(priv->mon, encobjAlias)); if (managedPrmgrAlias) ignore_value(qemuMonitorDelObject(priv->mon, managedPrmgrAlias)); if (disk->src->tlsAlias) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868303600886.8007384675146; Fri, 1 Jun 2018 08:51:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E338216D; Fri, 1 Jun 2018 15:51:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A69741779C; Fri, 1 Jun 2018 15:51:41 +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 283D01800FC1; Fri, 1 Jun 2018 15:51:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpTdN010633 for ; Fri, 1 Jun 2018 11:51:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id 894DD2026DFD; Fri, 1 Jun 2018 15:51:29 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2E4AF2026DEF for ; Fri, 1 Jun 2018 15:51:29 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:09 +0200 Message-Id: <06578320c88fba19924015b12f4f5158a5f8a66d.1527868025.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 6/9] qemu: hotplug: Extract hotplug of TLS into qemuBlockStorageSourceAttachApply 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 01 Jun 2018 15:51:42 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_block.c | 9 +++++++++ src/qemu/qemu_block.h | 3 +++ src/qemu/qemu_command.c | 9 ++++++++- src/qemu/qemu_command.h | 3 ++- src/qemu/qemu_hotplug.c | 37 +------------------------------------ 5 files changed, 23 insertions(+), 38 deletions(-) diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index b6b1316ea5..8053f08f6d 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -1488,6 +1488,8 @@ qemuBlockStorageSourceAttachDataFree(qemuBlockStorage= SourceAttachDataPtr data) virJSONValueFree(data->prmgrProps); virJSONValueFree(data->authsecretProps); virJSONValueFree(data->encryptsecretProps); + virJSONValueFree(data->tlsProps); + VIR_FREE(data->tlsAlias); VIR_FREE(data->authsecretAlias); VIR_FREE(data->encryptsecretAlias); VIR_FREE(data->driveCmd); @@ -1567,6 +1569,10 @@ qemuBlockStorageSourceAttachApply(qemuMonitorPtr mon, &data->encryptsecretAlias) < 0) return -1; + if (data->tlsProps && + qemuMonitorAddObject(mon, &data->tlsProps, &data->tlsAlias) < 0) + return -1; + if (data->storageProps) { rv =3D qemuMonitorBlockdevAdd(mon, data->storageProps); data->storageProps =3D NULL; @@ -1637,6 +1643,9 @@ qemuBlockStorageSourceAttachRollback(qemuMonitorPtr m= on, if (data->encryptsecretAlias) ignore_value(qemuMonitorDelObject(mon, data->encryptsecretAlias)); + if (data->tlsAlias) + ignore_value(qemuMonitorDelObject(mon, data->tlsAlias)); + virErrorRestore(&orig_err); } diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h index 4ffb42dfd6..418b5064b5 100644 --- a/src/qemu/qemu_block.h +++ b/src/qemu/qemu_block.h @@ -91,6 +91,9 @@ struct qemuBlockStorageSourceAttachData { virJSONValuePtr encryptsecretProps; char *encryptsecretAlias; + + virJSONValuePtr tlsProps; + char *tlsAlias; }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e11ae8b874..87b043d3f3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10469,13 +10469,15 @@ qemuBuildStorageSourceAttachPrepareDrive(virDomai= nDiskDefPtr disk, * qemuBuildStorageSourceAttachPrepareCommon: * @src: storage source * @data: already initialized data for disk source addition + * @qemuCaps: qemu capabilities object * * Prepare data for configuration associated with the disk source such as * secrets/TLS/pr objects etc ... */ int qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, - qemuBlockStorageSourceAttachData= Ptr data) + qemuBlockStorageSourceAttachData= Ptr data, + virQEMUCapsPtr qemuCaps) { qemuDomainStorageSourcePrivatePtr srcpriv =3D QEMU_DOMAIN_STORAGE_SOUR= CE_PRIVATE(src); @@ -10495,5 +10497,10 @@ qemuBuildStorageSourceAttachPrepareCommon(virStora= geSourcePtr src, return -1; } + if (src->haveTLS =3D=3D VIR_TRISTATE_BOOL_YES && + qemuBuildTLSx509BackendProps(src->tlsCertdir, false, true, src->tl= sAlias, + NULL, qemuCaps, &data->tlsProps) < 0) + return -1; + return 0; } diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 711fce9648..0c2fdff807 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -108,7 +108,8 @@ qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskD= efPtr disk, virQEMUCapsPtr qemuCaps); int qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, - qemuBlockStorageSourceAttachData= Ptr data); + qemuBlockStorageSourceAttachData= Ptr data, + virQEMUCapsPtr qemuCaps); /* Current, best practice */ char *qemuBuildDriveDevStr(const virDomainDef *def, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d4db3d2bba..d7c59b49c3 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -154,35 +154,6 @@ qemuHotplugPrepareDiskAccess(virQEMUDriverPtr driver, } -static int -qemuDomainAddDiskSrcTLSObject(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virStorageSourcePtr src) -{ - int ret =3D -1; - qemuDomainObjPrivatePtr priv =3D vm->privateData; - virJSONValuePtr tlsProps =3D NULL; - - if (qemuDomainGetTLSObjects(priv->qemuCaps, NULL, - src->tlsCertdir, - false, true, - src->tlsAlias, - &tlsProps, NULL) < 0) - goto cleanup; - - if (qemuDomainAddTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE, - NULL, &tlsProps) < 0) - goto cleanup; - - ret =3D 0; - - cleanup: - virJSONValueFree(tlsProps); - - return ret; -} - - static int qemuHotplugWaitForTrayEject(virQEMUDriverPtr driver, virDomainObjPtr vm, @@ -413,11 +384,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps))) goto error; - if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, data) < 0) - goto error; - - if (disk->src->haveTLS =3D=3D VIR_TRISTATE_BOOL_YES && - qemuDomainAddDiskSrcTLSObject(driver, vm, disk->src) < 0) + if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, data, priv->q= emuCaps) < 0) goto error; if (!(devstr =3D qemuBuildDriveDevStr(vm->def, disk, 0, priv->qemuCaps= ))) @@ -463,8 +430,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, virErrorPreserveLast(&orig_err); if (managedPrmgrAlias) ignore_value(qemuMonitorDelObject(priv->mon, managedPrmgrAlias)); - if (disk->src->tlsAlias) - ignore_value(qemuMonitorDelObject(priv->mon, disk->src->tlsAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) ret =3D -2; virErrorRestore(&orig_err); --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868320690473.61799116335123; Fri, 1 Jun 2018 08:52:00 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 02B99356F9; Fri, 1 Jun 2018 15:51:59 +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 A6ECD600D1; Fri, 1 Jun 2018 15:51:58 +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 13EDA4CA84; Fri, 1 Jun 2018 15:51:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpUfp010643 for ; Fri, 1 Jun 2018 11:51:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2B1952026DFD; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id C4CE22026DEF for ; Fri, 1 Jun 2018 15:51:29 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:10 +0200 Message-Id: <17b46c1b7e772073ce3cf496d059b8e89aa252f5.1527868025.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 7/9] qemu: command: Rename qemuBuildDiskDriveCommandLine 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 01 Jun 2018 15:51:59 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" It prepares all disk so use the plural form. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_command.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 87b043d3f3..118a412ffa 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2231,9 +2231,9 @@ qemuBuildDiskUnmanagedPRCommandLine(virCommandPtr cmd, static int -qemuBuildDiskDriveCommandLine(virCommandPtr cmd, - const virDomainDef *def, - virQEMUCapsPtr qemuCaps) +qemuBuildDisksCommandLine(virCommandPtr cmd, + const virDomainDef *def, + virQEMUCapsPtr qemuCaps) { size_t i; unsigned int bootCD =3D 0; @@ -10096,7 +10096,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, if (qemuBuildHubCommandLine(cmd, def, qemuCaps) < 0) goto error; - if (qemuBuildDiskDriveCommandLine(cmd, def, qemuCaps) < 0) + if (qemuBuildDisksCommandLine(cmd, def, qemuCaps) < 0) goto error; if (qemuBuildFSDevCommandLine(cmd, def, qemuCaps) < 0) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868313021277.3284951536009; Fri, 1 Jun 2018 08:51:53 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7B58F3001FBB; Fri, 1 Jun 2018 15:51:51 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3F00030012B7; Fri, 1 Jun 2018 15:51:51 +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 A38E7180BA82; Fri, 1 Jun 2018 15:51:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpUew010648 for ; Fri, 1 Jun 2018 11:51:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id C19222026DFD; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 66AB32026DEF for ; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:11 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 8/9] qemu: command: Extract setup of one disk's command line 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Fri, 01 Jun 2018 15:51:52 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_command.c | 106 ++++++++++++++++++++++++++++----------------= ---- 1 file changed, 62 insertions(+), 44 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 118a412ffa..9fabfdcfef 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2230,6 +2230,64 @@ qemuBuildDiskUnmanagedPRCommandLine(virCommandPtr cm= d, } +static int +qemuBuildDiskCommandLine(virCommandPtr cmd, + const virDomainDef *def, + virDomainDiskDefPtr disk, + virQEMUCapsPtr qemuCaps, + unsigned int bootindex, + bool driveBoot) +{ + char *optstr; + qemuDomainStorageSourcePrivatePtr srcPriv =3D QEMU_DOMAIN_STORAGE_SOUR= CE_PRIVATE(disk->src); + qemuDomainSecretInfoPtr secinfo =3D NULL; + qemuDomainSecretInfoPtr encinfo =3D NULL; + + if (srcPriv) { + secinfo =3D srcPriv->secinfo; + encinfo =3D srcPriv->encinfo; + } + + if (qemuBuildDiskUnmanagedPRCommandLine(cmd, disk->src) < 0) + return -1; + + if (qemuBuildDiskSecinfoCommandLine(cmd, secinfo) < 0) + return -1; + + if (qemuBuildDiskSecinfoCommandLine(cmd, encinfo) < 0) + return -1; + + if (qemuBuildDiskSrcTLSx509CommandLine(cmd, disk->src, qemuCaps) < 0) + return -1; + + virCommandAddArg(cmd, "-drive"); + + if (!(optstr =3D qemuBuildDriveStr(disk, driveBoot, qemuCaps))) + return -1; + + virCommandAddArg(cmd, optstr); + VIR_FREE(optstr); + + if (qemuDiskBusNeedsDeviceArg(disk->bus)) { + if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_FDC) { + if (qemuBulildFloppyCommandLineOptions(cmd, def, disk, + bootindex) < 0) + return -1; + } else { + virCommandAddArg(cmd, "-device"); + + if (!(optstr =3D qemuBuildDriveDevStr(def, disk, bootindex, + qemuCaps))) + return -1; + virCommandAddArg(cmd, optstr); + VIR_FREE(optstr); + } + } + + return 0; +} + + static int qemuBuildDisksCommandLine(virCommandPtr cmd, const virDomainDef *def, @@ -2260,18 +2318,9 @@ qemuBuildDisksCommandLine(virCommandPtr cmd, } for (i =3D 0; i < def->ndisks; i++) { - char *optstr; + virDomainDiskDefPtr disk =3D def->disks[i]; unsigned int bootindex =3D 0; bool driveBoot =3D false; - virDomainDiskDefPtr disk =3D def->disks[i]; - qemuDomainStorageSourcePrivatePtr srcPriv =3D QEMU_DOMAIN_STORAGE_= SOURCE_PRIVATE(disk->src); - qemuDomainSecretInfoPtr secinfo =3D NULL; - qemuDomainSecretInfoPtr encinfo =3D NULL; - - if (srcPriv) { - secinfo =3D srcPriv->secinfo; - encinfo =3D srcPriv->encinfo; - } if (disk->info.bootIndex) { bootindex =3D disk->info.bootIndex; @@ -2297,42 +2346,11 @@ qemuBuildDisksCommandLine(virCommandPtr cmd, } } - if (qemuBuildDiskUnmanagedPRCommandLine(cmd, disk->src) < 0) - return -1; - - if (qemuBuildDiskSecinfoCommandLine(cmd, secinfo) < 0) - return -1; - - if (qemuBuildDiskSecinfoCommandLine(cmd, encinfo) < 0) - return -1; - - if (qemuBuildDiskSrcTLSx509CommandLine(cmd, disk->src, qemuCaps) <= 0) + if (qemuBuildDiskCommandLine(cmd, def, disk, qemuCaps, + bootindex, driveBoot) < 0) return -1; - - virCommandAddArg(cmd, "-drive"); - - if (!(optstr =3D qemuBuildDriveStr(disk, driveBoot, qemuCaps))) - return -1; - - virCommandAddArg(cmd, optstr); - VIR_FREE(optstr); - - if (qemuDiskBusNeedsDeviceArg(disk->bus)) { - if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_FDC) { - if (qemuBulildFloppyCommandLineOptions(cmd, def, disk, - bootindex) < 0) - return -1; - } else { - virCommandAddArg(cmd, "-device"); - - if (!(optstr =3D qemuBuildDriveDevStr(def, disk, bootindex, - qemuCaps))) - return -1; - virCommandAddArg(cmd, optstr); - VIR_FREE(optstr); - } - } } + return 0; } --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 06:46:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1527868323323872.7646458699317; Fri, 1 Jun 2018 08:52:03 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7260F2CE951; Fri, 1 Jun 2018 15:52:01 +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 12896600D1; Fri, 1 Jun 2018 15:52:01 +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 8A57B4CA8B; Fri, 1 Jun 2018 15:52:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w51FpV06010653 for ; Fri, 1 Jun 2018 11:51:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id 63A412026980; Fri, 1 Jun 2018 15:51:31 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 08B592026DEF for ; Fri, 1 Jun 2018 15:51:30 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 1 Jun 2018 17:51:12 +0200 Message-Id: <9b24b5ea0227cce23295be92aebb63360125e65c.1527868025.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 9/9] qemu: command: Refactor disk commandline formatting 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 01 Jun 2018 15:52:02 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Now that we have one place that sets up all disk-related objects to qemuBlockStorageSourceAttachDataPtr we can easily reuse the data in the command-line formatter by implementing a worker which will convert the data. A huge advantage is that it will be way easier to integrate this with -blockdev later on. Signed-off-by: Peter Krempa Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_command.c | 94 +++++++++++++++++++--------------------------= ---- src/qemu/qemu_command.h | 3 +- src/qemu/qemu_hotplug.c | 3 +- 3 files changed, 40 insertions(+), 60 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9fabfdcfef..e7d34703d0 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -761,24 +761,6 @@ qemuBuildTLSx509CommandLine(virCommandPtr cmd, } -/* qemuBuildDiskSrcTLSx509CommandLine: - * - * Returns 0 on success, -1 w/ error on some sort of failure. - */ -static int -qemuBuildDiskSrcTLSx509CommandLine(virCommandPtr cmd, - virStorageSourcePtr src, - virQEMUCapsPtr qemuCaps) -{ - if (src->haveTLS !=3D VIR_TRISTATE_BOOL_YES) - return 0; - - return qemuBuildTLSx509CommandLine(cmd, src->tlsCertdir, - false, true, - NULL, src->tlsAlias, qemuCaps); -} - - static char * qemuBuildNetworkDriveURI(virStorageSourcePtr src, qemuDomainSecretInfoPtr secinfo) @@ -2202,31 +2184,40 @@ qemuBulildFloppyCommandLineOptions(virCommandPtr cm= d, static int -qemuBuildDiskUnmanagedPRCommandLine(virCommandPtr cmd, - virStorageSourcePtr src) +qemuBuildObjectCommandline(virCommandPtr cmd, + virJSONValuePtr objProps) { virBuffer buf =3D VIR_BUFFER_INITIALIZER; - virJSONValuePtr props =3D NULL; - int ret =3D -1; - if (!src->pr || - virStoragePRDefIsManaged(src->pr)) + if (!objProps) return 0; - if (!(props =3D qemuBuildPRManagerInfoProps(src))) + if (virQEMUBuildObjectCommandlineFromJSON(&buf, objProps) < 0) { + virBufferFreeAndReset(&buf); return -1; - - if (virQEMUBuildObjectCommandlineFromJSON(&buf, props) < 0) - goto cleanup; + } virCommandAddArg(cmd, "-object"); virCommandAddArgBuffer(cmd, &buf); - ret =3D 0; - cleanup: - virBufferFreeAndReset(&buf); - virJSONValueFree(props); - return ret; + return 0; +} + + +static int +qemuBuildBlockStorageSourceAttachDataCommandline(virCommandPtr cmd, + qemuBlockStorageSourceAtt= achDataPtr data) +{ + if (qemuBuildObjectCommandline(cmd, data->prmgrProps) < 0 || + qemuBuildObjectCommandline(cmd, data->authsecretProps) < 0 || + qemuBuildObjectCommandline(cmd, data->encryptsecretProps) < 0 || + qemuBuildObjectCommandline(cmd, data->tlsProps) < 0) + return -1; + + if (data->driveCmd) + virCommandAddArgList(cmd, "-drive", data->driveCmd, NULL); + + return 0; } @@ -2238,35 +2229,20 @@ qemuBuildDiskCommandLine(virCommandPtr cmd, unsigned int bootindex, bool driveBoot) { + qemuBlockStorageSourceAttachDataPtr data =3D NULL; char *optstr; - qemuDomainStorageSourcePrivatePtr srcPriv =3D QEMU_DOMAIN_STORAGE_SOUR= CE_PRIVATE(disk->src); - qemuDomainSecretInfoPtr secinfo =3D NULL; - qemuDomainSecretInfoPtr encinfo =3D NULL; - - if (srcPriv) { - secinfo =3D srcPriv->secinfo; - encinfo =3D srcPriv->encinfo; - } - - if (qemuBuildDiskUnmanagedPRCommandLine(cmd, disk->src) < 0) - return -1; - - if (qemuBuildDiskSecinfoCommandLine(cmd, secinfo) < 0) - return -1; - - if (qemuBuildDiskSecinfoCommandLine(cmd, encinfo) < 0) - return -1; - if (qemuBuildDiskSrcTLSx509CommandLine(cmd, disk->src, qemuCaps) < 0) + if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, qemuCaps, + driveBoot))) return -1; - virCommandAddArg(cmd, "-drive"); - - if (!(optstr =3D qemuBuildDriveStr(disk, driveBoot, qemuCaps))) + if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, data, qemuCap= s) < 0 || + qemuBuildBlockStorageSourceAttachDataCommandline(cmd, data) < 0) { + qemuBlockStorageSourceAttachDataFree(data); return -1; + } - virCommandAddArg(cmd, optstr); - VIR_FREE(optstr); + qemuBlockStorageSourceAttachDataFree(data); if (qemuDiskBusNeedsDeviceArg(disk->bus)) { if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_FDC) { @@ -10460,20 +10436,22 @@ qemuBuildHotpluggableCPUProps(const virDomainVcpu= Def *vcpu) * qemuBuildStorageSourceAttachPrepareDrive: * @disk: disk object to prepare * @qemuCaps: qemu capabilities object + * @driveBoot: bootable flag for disks which don't have -device part * * Prepare qemuBlockStorageSourceAttachDataPtr for use with the old approa= ch * using -drive/drive_add. See qemuBlockStorageSourceAttachPrepareBlockdev. */ qemuBlockStorageSourceAttachDataPtr qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDefPtr disk, - virQEMUCapsPtr qemuCaps) + virQEMUCapsPtr qemuCaps, + bool driveBoot) { qemuBlockStorageSourceAttachDataPtr data =3D NULL; if (VIR_ALLOC(data) < 0) return NULL; - if (!(data->driveCmd =3D qemuBuildDriveStr(disk, false, qemuCaps)) || + if (!(data->driveCmd =3D qemuBuildDriveStr(disk, driveBoot, qemuCaps))= || !(data->driveAlias =3D qemuAliasDiskDriveFromDisk(disk))) { qemuBlockStorageSourceAttachDataFree(data); return NULL; diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 0c2fdff807..3a13c3d5f8 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -105,7 +105,8 @@ char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk= ); qemuBlockStorageSourceAttachDataPtr qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDefPtr disk, - virQEMUCapsPtr qemuCaps); + virQEMUCapsPtr qemuCaps, + bool driveBoot); int qemuBuildStorageSourceAttachPrepareCommon(virStorageSourcePtr src, qemuBlockStorageSourceAttachData= Ptr data, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d7c59b49c3..7c4e9766d7 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -381,7 +381,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver, if (qemuDomainDiskAttachManagedPR(vm, disk, &managedPrmgrProps) < 0) goto error; - if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps))) + if (!(data =3D qemuBuildStorageSourceAttachPrepareDrive(disk, priv->qe= muCaps, + false))) goto error; if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, data, priv->q= emuCaps) < 0) --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list