Re: [PATCH 4/5] conf: checkpoint: Prepare internals for missing domain definition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 12/2/20 11:13 AM, Peter Krempa wrote:
Coniditonalize code which assumes that the domain definition stored in

s/Coniditonalize/Conditionalize

the checkpoint is present.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---


Reviewed-by: Daniel Henrique Barboza <danielhb413@xxxxxxxxx>


  src/conf/checkpoint_conf.c              | 31 +++++++++++++------------
  tests/qemudomaincheckpointxml2xmltest.c |  5 ----
  2 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/src/conf/checkpoint_conf.c b/src/conf/checkpoint_conf.c
index 73fdb78e7a..2071494d52 100644
--- a/src/conf/checkpoint_conf.c
+++ b/src/conf/checkpoint_conf.c
@@ -475,10 +475,10 @@ virDomainCheckpointDefFormatInternal(virBufferPtr buf,
          virBufferAddLit(buf, "</disks>\n");
      }

-    if (!(flags & VIR_DOMAIN_CHECKPOINT_FORMAT_NO_DOMAIN) &&
-        virDomainDefFormatInternal(def->parent.dom, xmlopt,
-                                   buf, domainflags) < 0)
-        return -1;
+    if (def->parent.dom && !(flags & VIR_DOMAIN_CHECKPOINT_FORMAT_NO_DOMAIN)) {
+        if (virDomainDefFormatInternal(def->parent.dom, xmlopt, buf, domainflags) < 0)
+            return -1;
+    }

      virBufferAdjustIndent(buf, -2);
      virBufferAddLit(buf, "</domaincheckpoint>\n");
@@ -510,23 +510,24 @@ virDomainCheckpointRedefinePrep(virDomainObjPtr vm,
                                  virDomainCheckpointDefPtr def,
                                  bool *update_current)
  {
-    char uuidstr[VIR_UUID_STRING_BUFLEN];
      virDomainMomentObjPtr parent = NULL;

-    virUUIDFormat(vm->def->uuid, uuidstr);
-
      if (virDomainCheckpointCheckCycles(vm->checkpoints, def, vm->def->name) < 0)
          return -1;

-    if (!def->parent.dom ||
-        memcmp(def->parent.dom->uuid, vm->def->uuid, VIR_UUID_BUFLEN)) {
-        virReportError(VIR_ERR_INVALID_ARG,
-                       _("definition for checkpoint %s must use uuid %s"),
-                       def->parent.name, uuidstr);
-        return -1;
+    if (def->parent.dom) {
+        if (memcmp(def->parent.dom->uuid, vm->def->uuid, VIR_UUID_BUFLEN)) {
+            char uuidstr[VIR_UUID_STRING_BUFLEN];
+            virUUIDFormat(vm->def->uuid, uuidstr);
+            virReportError(VIR_ERR_INVALID_ARG,
+                           _("definition for checkpoint %s must use uuid %s"),
+                           def->parent.name, uuidstr);
+            return -1;
+        }
+
+        if (virDomainCheckpointAlignDisks(def) < 0)
+            return -1;
      }
-    if (virDomainCheckpointAlignDisks(def) < 0)
-        return -1;

      if (def->parent.parent_name &&
           (parent = virDomainCheckpointFindByName(vm->checkpoints,
diff --git a/tests/qemudomaincheckpointxml2xmltest.c b/tests/qemudomaincheckpointxml2xmltest.c
index a5a5b59205..8b4b75d753 100644
--- a/tests/qemudomaincheckpointxml2xmltest.c
+++ b/tests/qemudomaincheckpointxml2xmltest.c
@@ -87,11 +87,6 @@ testCompareXMLToXMLFiles(const char *inxml,
          formatflags |= VIR_DOMAIN_CHECKPOINT_FORMAT_SIZE;
      }

-    /* Parsing XML does not populate the domain definition; work
-     * around that by not requesting domain on output */
-    if (!def->parent.dom)
-        formatflags |= VIR_DOMAIN_CHECKPOINT_FORMAT_NO_DOMAIN;
-
      if (!(actual = virDomainCheckpointDefFormat(def,
                                                  driver.xmlopt,
                                                  formatflags)))





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux