[libvirt] [PATCH 4/9] virsh: Add wrapper for virDomainSnapshotFree

Peter Krempa pkrempa at redhat.com
Tue Apr 11 15:53:50 UTC 2017


Similarly to virshDomainFree add a wrapper for the snapshot object
freeing function.
---
 tools/virsh-snapshot.c | 48 ++++++++++++++++++------------------------------
 tools/virsh-util.c     | 10 ++++++++++
 tools/virsh-util.h     |  3 +++
 3 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c
index 5af9a7d7a..24cd4abd9 100644
--- a/tools/virsh-snapshot.c
+++ b/tools/virsh-snapshot.c
@@ -106,8 +106,7 @@ virshSnapshotCreate(vshControl *ctl, virDomainPtr dom, const char *buffer,
  cleanup:
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xml);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     VIR_FREE(doc);
     return ret;
 }
@@ -601,10 +600,8 @@ cmdSnapshotEdit(vshControl *ctl, const vshCmd *cmd)
  cleanup:
     if (!ret && name)
         vshError(ctl, _("Failed to update %s"), name);
-    if (edited)
-        virDomainSnapshotFree(edited);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(edited);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);
     return ret;
 }
@@ -681,7 +678,7 @@ cmdSnapshotCurrent(vshControl *ctl, const vshCmd *cmd)
         if (!(snapshot2 = virDomainSnapshotCreateXML(dom, xml, flags)))
             goto cleanup;

-        virDomainSnapshotFree(snapshot2);
+        virshDomainSnapshotFree(snapshot2);
         vshPrintExtra(ctl, _("Snapshot %s set as current"), snapshotname);
         ret = true;
         goto cleanup;
@@ -717,8 +714,7 @@ cmdSnapshotCurrent(vshControl *ctl, const vshCmd *cmd)
     if (!ret)
         vshReportError(ctl);
     VIR_FREE(xml);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);

     return ret;
@@ -777,8 +773,7 @@ virshGetSnapshotParent(vshControl *ctl, virDomainSnapshotPtr snapshot,
     } else {
         vshResetLibvirtError();
     }
-    if (parent)
-        virDomainSnapshotFree(parent);
+    virshDomainSnapshotFree(parent);
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xmldoc);
     VIR_FREE(xml);
@@ -906,7 +901,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd)
         if (other) {
             if (STREQ(name, virDomainSnapshotGetName(other)))
                 current = 1;
-            virDomainSnapshotFree(other);
+            virshDomainSnapshotFree(other);
         }
     }
     vshPrint(ctl, "%-15s %s\n", _("Current:"),
@@ -1005,8 +1000,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd)
     xmlFreeDoc(xmldoc);
     VIR_FREE(doc);
     VIR_FREE(parent);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);
     return ret;
 }
@@ -1031,8 +1025,7 @@ virshSnapshotListFree(virshSnapshotListPtr snaplist)
         return;
     if (snaplist->snaps) {
         for (i = 0; i < snaplist->nsnaps; i++) {
-            if (snaplist->snaps[i].snap)
-                virDomainSnapshotFree(snaplist->snaps[i].snap);
+            virshDomainSnapshotFree(snaplist->snaps[i].snap);
             VIR_FREE(snaplist->snaps[i].parent);
         }
         VIR_FREE(snaplist->snaps);
@@ -1270,7 +1263,7 @@ virshSnapshotListCollect(vshControl *ctl, virDomainPtr dom,
                            STRNEQ_NULLABLE(fromname,
                                            snaplist->snaps[i].parent)))) ||
                 (roots && snaplist->snaps[i].parent)) {
-                virDomainSnapshotFree(snaplist->snaps[i].snap);
+                virshDomainSnapshotFree(snaplist->snaps[i].snap);
                 snaplist->snaps[i].snap = NULL;
                 VIR_FREE(snaplist->snaps[i].parent);
                 deleted++;
@@ -1298,7 +1291,7 @@ virshSnapshotListCollect(vshControl *ctl, virDomainPtr dom,
         for (i = 0; i < count; i++) {
             if (i == start_index || !snaplist->snaps[i].parent) {
                 VIR_FREE(names[i]);
-                virDomainSnapshotFree(snaplist->snaps[i].snap);
+                virshDomainSnapshotFree(snaplist->snaps[i].snap);
                 snaplist->snaps[i].snap = NULL;
                 VIR_FREE(snaplist->snaps[i].parent);
                 deleted++;
@@ -1336,7 +1329,7 @@ virshSnapshotListCollect(vshControl *ctl, virDomainPtr dom,
                 if (!found_parent) {
                     changed = true;
                     VIR_FREE(names[i]);
-                    virDomainSnapshotFree(snaplist->snaps[i].snap);
+                    virshDomainSnapshotFree(snaplist->snaps[i].snap);
                     snaplist->snaps[i].snap = NULL;
                     VIR_FREE(snaplist->snaps[i].parent);
                     deleted++;
@@ -1359,7 +1352,7 @@ virshSnapshotListCollect(vshControl *ctl, virDomainPtr dom,
             case 1:
                 break;
             case 0:
-                virDomainSnapshotFree(snaplist->snaps[i].snap);
+                virshDomainSnapshotFree(snaplist->snaps[i].snap);
                 snaplist->snaps[i].snap = NULL;
                 VIR_FREE(snaplist->snaps[i].parent);
                 deleted++;
@@ -1641,8 +1634,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
     virshSnapshotListFree(snaplist);
     VIR_FREE(parent_snap);
     VIR_FREE(state);
-    if (start)
-        virDomainSnapshotFree(start);
+    virshDomainSnapshotFree(start);
     xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xml);
     VIR_FREE(doc);
@@ -1708,8 +1700,7 @@ cmdSnapshotDumpXML(vshControl *ctl, const vshCmd *cmd)

  cleanup:
     VIR_FREE(xml);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);

     return ret;
@@ -1768,8 +1759,7 @@ cmdSnapshotParent(vshControl *ctl, const vshCmd *cmd)

  cleanup:
     VIR_FREE(parent);
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);

     return ret;
@@ -1853,8 +1843,7 @@ cmdDomainSnapshotRevert(vshControl *ctl, const vshCmd *cmd)
     ret = true;

  cleanup:
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);

     return ret;
@@ -1935,8 +1924,7 @@ cmdSnapshotDelete(vshControl *ctl, const vshCmd *cmd)
     ret = true;

  cleanup:
-    if (snapshot)
-        virDomainSnapshotFree(snapshot);
+    virshDomainSnapshotFree(snapshot);
     virshDomainFree(dom);

     return ret;
diff --git a/tools/virsh-util.c b/tools/virsh-util.c
index 5fdb40855..e225d3332 100644
--- a/tools/virsh-util.c
+++ b/tools/virsh-util.c
@@ -160,3 +160,13 @@ virshDomainFree(virDomainPtr dom)

     virDomainFree(dom); /* sc_prohibit_obj_free_apis_in_virsh */
 }
+
+
+void
+virshDomainSnapshotFree(virDomainSnapshotPtr snap)
+{
+    if (!snap)
+        return;
+
+    virDomainSnapshotFree(snap); /* sc_prohibit_obj_free_apis_in_virsh */
+}
diff --git a/tools/virsh-util.h b/tools/virsh-util.h
index 78f7a0ea9..2b5aedfba 100644
--- a/tools/virsh-util.h
+++ b/tools/virsh-util.h
@@ -41,6 +41,9 @@ virshCommandOptDomain(vshControl *ctl,
 void
 virshDomainFree(virDomainPtr dom);

+void
+virshDomainSnapshotFree(virDomainSnapshotPtr snap);
+
 int
 virshDomainState(vshControl *ctl,
                  virDomainPtr dom,
-- 
2.12.2




More information about the libvir-list mailing list