]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virdomainmomentobjlist: introduce virDomainMomentIsAncestor
authorPavel Hrdina <phrdina@redhat.com>
Mon, 6 Mar 2023 10:26:42 +0000 (11:26 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 22 Aug 2023 14:06:32 +0000 (16:06 +0200)
This new helper will allow us to check if we are able to delete external
snapshot after user did revert to non-leaf snapshot.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/virdomainmomentobjlist.c
src/conf/virdomainmomentobjlist.h
src/libvirt_private.syms

index e5cdd9a14117a247b4f2b2be291f688662da7a7d..ea9850df8cdf569fc9c2d535c18f6b9b120b7be8 100644 (file)
@@ -582,3 +582,20 @@ virDomainMomentFindLeaf(virDomainMomentObjList *list)
         return moment;
     return NULL;
 }
+
+
+/* Check if @moment is descendant of @ancestor. */
+bool
+virDomainMomentIsAncestor(virDomainMomentObj *moment,
+                          virDomainMomentObj *ancestor)
+{
+    if (moment == ancestor)
+        return false;
+
+    for (moment = moment->parent; moment; moment = moment->parent) {
+        if (moment == ancestor)
+            return true;
+    }
+
+    return false;
+}
index d2ab3b46b1fa74498e18443cb8e6dc3198033318..2ea6b181c0a6b777bb06b18343f901a1e2eaba03 100644 (file)
@@ -157,3 +157,7 @@ virDomainMomentCheckCycles(virDomainMomentObjList *list,
 
 virDomainMomentObj *
 virDomainMomentFindLeaf(virDomainMomentObjList *list);
+
+bool
+virDomainMomentIsAncestor(virDomainMomentObj *moment,
+                          virDomainMomentObj *ancestor);
index a75156f097789db64d9079d933769e3a92a0a93d..1cf40ba863a2e37a84a98ec3131c186bcb030d5a 100644 (file)
@@ -1221,6 +1221,7 @@ virDomainMomentDropChildren;
 virDomainMomentDropParent;
 virDomainMomentForEachChild;
 virDomainMomentForEachDescendant;
+virDomainMomentIsAncestor;
 virDomainMomentMoveChildren;
 virDomainMomentObjFree;
 virDomainMomentObjNew;