Blob Blame History Raw
From da9c0f143d7c917c98b7352be7954e8b2489aa9e Mon Sep 17 00:00:00 2001
Message-Id: <da9c0f143d7c917c98b7352be7954e8b2489aa9e@dist-git>
From: Peter Krempa <pkrempa@redhat.com>
Date: Fri, 3 Apr 2020 14:32:58 +0200
Subject: [PATCH] virDomainCheckpointRedefinePrep: Set 'current' checkpoint if
 there isn't any
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When redefining checkpoints from scratch we'd not set the 'current'
checkpoint if there wasn't any. This meant that the code wasn't ever
able to set a 'current' checkpoint as any other one looks up if the
parent of the redefined checkpoint is current.

Since the backup code then requires the current checkpoint to start the
lookup we'd not be able to perform a backup after restoring the
checkpoint hierarchy.

Reported-by: Eyal Shenitzky <eshenitz@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
(cherry picked from commit 9428c4609c7b23b3afe89566dca9ac237256d3df)

https://bugzilla.redhat.com/show_bug.cgi?id=1819755

Message-Id: <53c1d685b40f0f540eeb4d15a17e308aab2bf648.1585916255.git.pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
---
 src/conf/checkpoint_conf.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/conf/checkpoint_conf.c b/src/conf/checkpoint_conf.c
index 26bcfc16b7..d557fada49 100644
--- a/src/conf/checkpoint_conf.c
+++ b/src/conf/checkpoint_conf.c
@@ -550,6 +550,10 @@ virDomainCheckpointRedefinePrep(virDomainObjPtr vm,
             *update_current = true;
     }
 
+    /* set the first redefined checkpoint as current */
+    if (virDomainCheckpointGetCurrent(vm->checkpoints) == NULL)
+        *update_current = true;
+
     other = virDomainCheckpointFindByName(vm->checkpoints, def->parent.name);
     if (other) {
         otherdef = virDomainCheckpointObjGetDef(other);
-- 
2.26.0