]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Split out the master key create and write
authorJohn Ferlan <jferlan@redhat.com>
Mon, 2 May 2016 17:11:24 +0000 (13:11 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 5 May 2016 18:47:50 +0000 (14:47 -0400)
A recent review of related changes noted that we should split the creation
(or generation) of the master key into the qemuProcessPrepareDomain and leave
the writing of the master key for qemuProcessPrepareHost.

Made the adjustment and modified some comments to functions that have
changed calling parameters, but didn't change the intro doc.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_process.c

index eabc375a894ffabc0bf0b4e0e857bd48a69c08e7..6371988622f49d2cf760913a831a3b43c2a987df 100644 (file)
@@ -498,13 +498,14 @@ qemuDomainGetMasterKeyFilePath(const char *libDir)
 
 
 /* qemuDomainWriteMasterKeyFile:
- * @priv: pointer to domain private object
+ * @driver: qemu driver data
+ * @vm: Pointer to the vm object
  *
  * Get the desired path to the masterKey file and store it in the path.
  *
  * Returns 0 on success, -1 on failure with error message indicating failure
  */
-static int
+int
 qemuDomainWriteMasterKeyFile(virQEMUDriverPtr driver,
                              virDomainObjPtr vm)
 {
@@ -513,6 +514,10 @@ qemuDomainWriteMasterKeyFile(virQEMUDriverPtr driver,
     int ret = -1;
     qemuDomainObjPrivatePtr priv = vm->privateData;
 
+    /* Only gets filled in if we have the capability */
+    if (!priv->masterKey)
+        return 0;
+
     if (!(path = qemuDomainGetMasterKeyFilePath(priv->libDir)))
         return -1;
 
@@ -695,7 +700,7 @@ qemuDomainMasterKeyRemove(qemuDomainObjPrivatePtr priv)
 
 
 /* qemuDomainMasterKeyCreate:
- * @priv: Pointer to the domain private object
+ * @vm: Pointer to the domain object
  *
  * As long as the underlying qemu has the secret capability,
  * generate and store 'raw' in a file a random 32-byte key to
@@ -704,8 +709,7 @@ qemuDomainMasterKeyRemove(qemuDomainObjPrivatePtr priv)
  * Returns: 0 on success, -1 w/ error message on failure
  */
 int
-qemuDomainMasterKeyCreate(virQEMUDriverPtr driver,
-                          virDomainObjPtr vm)
+qemuDomainMasterKeyCreate(virDomainObjPtr vm)
 {
     qemuDomainObjPrivatePtr priv = vm->privateData;
 
@@ -715,18 +719,11 @@ qemuDomainMasterKeyCreate(virQEMUDriverPtr driver,
 
     if (!(priv->masterKey =
           qemuDomainGenerateRandomKey(QEMU_DOMAIN_MASTER_KEY_LEN)))
-        goto error;
+        return -1;
 
     priv->masterKeyLen = QEMU_DOMAIN_MASTER_KEY_LEN;
 
-    if (qemuDomainWriteMasterKeyFile(driver, vm) < 0)
-        goto error;
-
     return 0;
-
- error:
-    qemuDomainMasterKeyRemove(priv);
-    return -1;
 }
 
 
index d16a0829943abca0ea88d965ac06e2b844198f20..521ec3a2e0e50c45809ff4ba9055c84eb9e992d2 100644 (file)
@@ -624,8 +624,10 @@ char *qemuDomainGetMasterKeyFilePath(const char *libDir);
 
 int qemuDomainMasterKeyReadFile(qemuDomainObjPrivatePtr priv);
 
-int qemuDomainMasterKeyCreate(virQEMUDriverPtr driver,
-                              virDomainObjPtr vm);
+int qemuDomainWriteMasterKeyFile(virQEMUDriverPtr driver,
+                                 virDomainObjPtr vm);
+
+int qemuDomainMasterKeyCreate(virDomainObjPtr vm);
 
 void qemuDomainMasterKeyRemove(qemuDomainObjPrivatePtr priv);
 
index 348b3920df6d006198e2adc5e0fa02e691971f44..972bc571e519ebff49ce11999b2f1d6469c2de8d 100644 (file)
@@ -5146,6 +5146,10 @@ qemuProcessPrepareDomain(virConnectPtr conn,
             goto cleanup;
     }
 
+    VIR_DEBUG("Create domain masterKey");
+    if (qemuDomainMasterKeyCreate(vm) < 0)
+        goto cleanup;
+
     if (VIR_ALLOC(priv->monConfig) < 0)
         goto cleanup;
 
@@ -5271,8 +5275,8 @@ qemuProcessPrepareHost(virQEMUDriverPtr driver,
         qemuProcessMakeDir(driver, vm, priv->channelTargetDir) < 0)
         goto cleanup;
 
-    VIR_DEBUG("Create domain masterKey");
-    if (qemuDomainMasterKeyCreate(driver, vm) < 0)
+    VIR_DEBUG("Write domain masterKey");
+    if (qemuDomainWriteMasterKeyFile(driver, vm) < 0)
         goto cleanup;
 
     ret = 0;