]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Relocate qemuDomainSecretInfoPtr to qemuDomainStorageSourcePrivate
authorJohn Ferlan <jferlan@redhat.com>
Thu, 5 Oct 2017 13:22:13 +0000 (09:22 -0400)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 19 Oct 2017 16:20:30 +0000 (18:20 +0200)
Since the secret information is really virStorageSource specific
piece of data, let's manage the privateData from there instead of
at the Disk level.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_hotplug.c

index 40d9eeffd219ec3e68c19490036ee7abd751998b..7c511263be2af8a38768b6c664e180611b333b43 100644 (file)
@@ -1362,7 +1362,8 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk,
 {
     int actualType = virStorageSourceGetActualType(disk->src);
     qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-    qemuDomainSecretInfoPtr secinfo = diskPriv->secinfo;
+    qemuDomainStorageSourcePrivatePtr srcpriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
+    qemuDomainSecretInfoPtr secinfo = srcpriv->secinfo;
     qemuDomainSecretInfoPtr encinfo = diskPriv->encinfo;
     virJSONValuePtr srcprops = NULL;
     char *source = NULL;
@@ -2239,7 +2240,8 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd,
         bool driveBoot = false;
         virDomainDiskDefPtr disk = def->disks[i];
         qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-        qemuDomainSecretInfoPtr secinfo = diskPriv->secinfo;
+        qemuDomainStorageSourcePrivatePtr srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
+        qemuDomainSecretInfoPtr secinfo = srcPriv->secinfo;
         qemuDomainSecretInfoPtr encinfo = diskPriv->encinfo;
 
         if (disk->info.bootIndex) {
index c4983ec2216ed9f766a3143961549885eb8c5d7d..bf41f19f055a5ecaeb82f479cfd9a39a68be40ff 100644 (file)
@@ -927,7 +927,6 @@ qemuDomainDiskPrivateDispose(void *obj)
 {
     qemuDomainDiskPrivatePtr priv = obj;
 
-    qemuDomainSecretInfoFree(&priv->secinfo);
     qemuDomainSecretInfoFree(&priv->encinfo);
 }
 
@@ -1344,9 +1343,10 @@ void
 qemuDomainSecretDiskDestroy(virDomainDiskDefPtr disk)
 {
     qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
+    qemuDomainStorageSourcePrivatePtr srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
 
-    if (diskPriv && diskPriv->secinfo)
-        qemuDomainSecretInfoFree(&diskPriv->secinfo);
+    if (srcPriv && srcPriv->secinfo)
+        qemuDomainSecretInfoFree(&srcPriv->secinfo);
 
     if (diskPriv && diskPriv->encinfo)
         qemuDomainSecretInfoFree(&diskPriv->encinfo);
@@ -1395,6 +1395,12 @@ qemuDomainSecretDiskPrepare(virConnectPtr conn,
 {
     virStorageSourcePtr src = disk->src;
     qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
+    qemuDomainStorageSourcePrivatePtr srcPriv;
+
+    if (!(disk->src->privateData = qemuDomainStorageSourcePrivateNew()))
+        return -1;
+
+    srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
 
     if (qemuDomainSecretDiskCapable(src)) {
         virSecretUsageType usageType = VIR_SECRET_USAGE_TYPE_ISCSI;
@@ -1402,7 +1408,7 @@ qemuDomainSecretDiskPrepare(virConnectPtr conn,
         if (src->protocol == VIR_STORAGE_NET_PROTOCOL_RBD)
             usageType = VIR_SECRET_USAGE_TYPE_CEPH;
 
-        if (!(diskPriv->secinfo =
+        if (!(srcPriv->secinfo =
               qemuDomainSecretInfoNew(conn, priv, disk->info.alias,
                                       usageType, src->auth->username,
                                       &src->auth->seclookupdef, false)))
index 2e1515fa15e7771f2d8a01e6eb804f96ff022760..30e0a5d8d4816763412f2dc45e1591d4ad7b0b29 100644 (file)
@@ -349,10 +349,6 @@ struct _qemuDomainDiskPrivate {
 
     bool migrating; /* the disk is being migrated */
 
-    /* for storage devices using auth/secret
-     * NB: *not* to be written to qemu domain object XML */
-    qemuDomainSecretInfoPtr secinfo;
-
     /* for storage devices using encryption/secret
      * Can have both <auth> and <encryption> for some disks
      * NB:*not* to be written to qemu domain object XML */
index 574b3e8f87adf1fb368e8c7c2c9e4d1643c56768..44e48ab14bacf216195ef03d58e905c998b73c89 100644 (file)
@@ -258,6 +258,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
     char *driveAlias = NULL;
     qemuDomainObjPrivatePtr priv = vm->privateData;
     qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
+    qemuDomainStorageSourcePrivatePtr srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
     const char *format = NULL;
     char *sourcestr = NULL;
 
@@ -299,7 +300,7 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
     }
 
     if (!virStorageSourceIsEmpty(newsrc)) {
-        if (qemuGetDriveSourceString(newsrc, diskPriv->secinfo, &sourcestr) < 0)
+        if (qemuGetDriveSourceString(newsrc, srcPriv->secinfo, &sourcestr) < 0)
             goto error;
 
         if (virStorageSourceGetActualType(newsrc) != VIR_STORAGE_TYPE_DIR) {
@@ -370,6 +371,7 @@ qemuDomainAttachDiskGeneric(virConnectPtr conn,
     virJSONValuePtr secobjProps = NULL;
     virJSONValuePtr encobjProps = NULL;
     qemuDomainDiskPrivatePtr diskPriv;
+    qemuDomainStorageSourcePrivatePtr srcPriv;
     qemuDomainSecretInfoPtr secinfo;
     qemuDomainSecretInfoPtr encinfo;
 
@@ -383,7 +385,8 @@ qemuDomainAttachDiskGeneric(virConnectPtr conn,
         goto error;
 
     diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-    secinfo = diskPriv->secinfo;
+    srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(disk->src);
+    secinfo = srcPriv->secinfo;
     if (secinfo && secinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES) {
         if (qemuBuildSecretInfoProps(secinfo, &secobjProps) < 0)
             goto error;