[PATCH 3/9] qemu: Move 'qemuDomainSnapshotForEachQcow2(Raw)' to qemu_snapshot.c

Peter Krempa posted 9 patches 2 weeks, 4 days ago
[PATCH 3/9] qemu: Move 'qemuDomainSnapshotForEachQcow2(Raw)' to qemu_snapshot.c
Posted by Peter Krempa 2 weeks, 4 days ago
The functions are exclusively used in the snapshot module. Move and
rename them:

  qemuDomainSnapshotForEachQcow2Raw -> qemuSnapshotForEachQcow2Internal
  qemuDomainSnapshotForEachQcow2 -> qemuSnapshotForEachQcow2

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/qemu/qemu_domain.c   | 81 ------------------------------------
 src/qemu/qemu_domain.h   |  5 ---
 src/qemu/qemu_snapshot.c | 89 ++++++++++++++++++++++++++++++++++++++--
 3 files changed, 86 insertions(+), 89 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 5fdd7f9fc0..4c0bfcd172 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -5705,87 +5705,6 @@ qemuDomainSnapshotWriteMetadata(virDomainObj *vm,
 }


-/* The domain is expected to be locked and inactive. Return -1 on normal
- * failure, 1 if we skipped a disk due to try_all.  */
-static int
-qemuDomainSnapshotForEachQcow2Raw(virDomainDef *def,
-                                  virDomainMomentObj *snap,
-                                  const char *op,
-                                  bool try_all,
-                                  int ndisks)
-{
-    virDomainSnapshotDef *snapdef = virDomainSnapshotObjGetDef(snap);
-    size_t i;
-    bool skipped = false;
-
-    for (i = 0; i < ndisks; i++) {
-        g_autoptr(virCommand) cmd = virCommandNewArgList("qemu-img", "snapshot",
-                                                         op, snap->def->name, NULL);
-        int format = virDomainDiskGetFormat(def->disks[i]);
-
-        /* FIXME: we also need to handle LVM here */
-        if (def->disks[i]->device != VIR_DOMAIN_DISK_DEVICE_DISK ||
-            snapdef->disks[i].snapshot != VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL)
-            continue;
-
-        if (!virStorageSourceIsLocalStorage(def->disks[i]->src)) {
-            virReportError(VIR_ERR_OPERATION_INVALID,
-                           _("can't manipulate inactive snapshots of disk '%1$s'"),
-                           def->disks[i]->dst);
-            return -1;
-        }
-
-        if (format > 0 && format != VIR_STORAGE_FILE_QCOW2) {
-            if (try_all) {
-                /* Continue on even in the face of error, since other
-                 * disks in this VM may have the same snapshot name.
-                 */
-                VIR_WARN("skipping snapshot action on %s",
-                         def->disks[i]->dst);
-                skipped = true;
-                continue;
-            } else if (STREQ(op, "-c") && i) {
-                /* We must roll back partial creation by deleting
-                 * all earlier snapshots.  */
-                qemuDomainSnapshotForEachQcow2Raw(def, snap, "-d", false, i);
-            }
-            virReportError(VIR_ERR_OPERATION_INVALID,
-                           _("Disk device '%1$s' does not support snapshotting"),
-                           def->disks[i]->dst);
-            return -1;
-        }
-
-        virCommandAddArg(cmd, virDomainDiskGetSource(def->disks[i]));
-
-        if (virCommandRun(cmd, NULL) < 0) {
-            if (try_all) {
-                VIR_WARN("skipping snapshot action on %s",
-                         def->disks[i]->dst);
-                skipped = true;
-                continue;
-            } else if (STREQ(op, "-c") && i) {
-                /* We must roll back partial creation by deleting
-                 * all earlier snapshots.  */
-                qemuDomainSnapshotForEachQcow2Raw(def, snap, "-d", false, i);
-            }
-            return -1;
-        }
-    }
-
-    return skipped ? 1 : 0;
-}
-
-/* The domain is expected to be locked and inactive. Return -1 on normal
- * failure, 1 if we skipped a disk due to try_all.  */
-int
-qemuDomainSnapshotForEachQcow2(virDomainDef *def,
-                               virDomainMomentObj *snap,
-                               const char *op,
-                               bool try_all)
-{
-    return qemuDomainSnapshotForEachQcow2Raw(def, snap, op, try_all, def->ndisks);
-}
-
 /* Hash iterator callback to discard multiple snapshots.  */
 int qemuDomainMomentDiscardAll(void *payload,
                                const char *name G_GNUC_UNUSED,
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index ad0f4341c0..e810f79599 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -670,11 +670,6 @@ int qemuDomainSnapshotWriteMetadata(virDomainObj *vm,
                                     virDomainXMLOption *xmlopt,
                                     const char *snapshotDir);

-int qemuDomainSnapshotForEachQcow2(virDomainDef *def,
-                                   virDomainMomentObj *snap,
-                                   const char *op,
-                                   bool try_all);
-
 typedef struct _virQEMUMomentRemove virQEMUMomentRemove;
 struct _virQEMUMomentRemove {
     virQEMUDriver *driver;
diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
index f1d5103abe..222afe62e1 100644
--- a/src/qemu/qemu_snapshot.c
+++ b/src/qemu/qemu_snapshot.c
@@ -249,12 +249,95 @@ qemuSnapshotCreateQcow2Files(virDomainDef *def,
 }


+/* The domain is expected to be locked and inactive. Return -1 on normal
+ * failure, 1 if we skipped a disk due to try_all.  */
+static int
+qemuSnapshotForEachQcow2Internal(virDomainDef *def,
+                                 virDomainMomentObj *snap,
+                                 const char *op,
+                                 bool try_all,
+                                 int ndisks)
+{
+    virDomainSnapshotDef *snapdef = virDomainSnapshotObjGetDef(snap);
+    size_t i;
+    bool skipped = false;
+
+    for (i = 0; i < ndisks; i++) {
+        g_autoptr(virCommand) cmd = virCommandNewArgList("qemu-img", "snapshot",
+                                                         op, snap->def->name, NULL);
+        int format = virDomainDiskGetFormat(def->disks[i]);
+
+        /* FIXME: we also need to handle LVM here */
+        if (def->disks[i]->device != VIR_DOMAIN_DISK_DEVICE_DISK ||
+            snapdef->disks[i].snapshot != VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL)
+            continue;
+
+        if (!virStorageSourceIsLocalStorage(def->disks[i]->src)) {
+            virReportError(VIR_ERR_OPERATION_INVALID,
+                           _("can't manipulate inactive snapshots of disk '%1$s'"),
+                           def->disks[i]->dst);
+            return -1;
+        }
+
+        if (format > 0 && format != VIR_STORAGE_FILE_QCOW2) {
+            if (try_all) {
+                /* Continue on even in the face of error, since other
+                 * disks in this VM may have the same snapshot name.
+                 */
+                VIR_WARN("skipping snapshot action on %s",
+                         def->disks[i]->dst);
+                skipped = true;
+                continue;
+            } else if (STREQ(op, "-c") && i) {
+                /* We must roll back partial creation by deleting
+                 * all earlier snapshots.  */
+                qemuSnapshotForEachQcow2Internal(def, snap, "-d", false, i);
+            }
+            virReportError(VIR_ERR_OPERATION_INVALID,
+                           _("Disk device '%1$s' does not support snapshotting"),
+                           def->disks[i]->dst);
+            return -1;
+        }
+
+        virCommandAddArg(cmd, virDomainDiskGetSource(def->disks[i]));
+
+        if (virCommandRun(cmd, NULL) < 0) {
+            if (try_all) {
+                VIR_WARN("skipping snapshot action on %s",
+                         def->disks[i]->dst);
+                skipped = true;
+                continue;
+            } else if (STREQ(op, "-c") && i) {
+                /* We must roll back partial creation by deleting
+                 * all earlier snapshots.  */
+                qemuSnapshotForEachQcow2Internal(def, snap, "-d", false, i);
+            }
+            return -1;
+        }
+    }
+
+    return skipped ? 1 : 0;
+}
+
+
+/* The domain is expected to be locked and inactive. Return -1 on normal
+ * failure, 1 if we skipped a disk due to try_all.  */
+static int
+qemuSnapshotForEachQcow2(virDomainDef *def,
+                         virDomainMomentObj *snap,
+                         const char *op,
+                         bool try_all)
+{
+    return qemuSnapshotForEachQcow2Internal(def, snap, op, try_all, def->ndisks);
+}
+
+
 /* The domain is expected to be locked and inactive. */
 static int
 qemuSnapshotCreateInactiveInternal(virDomainObj *vm,
                                    virDomainMomentObj *snap)
 {
-    return qemuDomainSnapshotForEachQcow2(vm->def, snap, "-c", false);
+    return qemuSnapshotForEachQcow2(vm->def, snap, "-c", false);
 }


@@ -2551,7 +2634,7 @@ qemuSnapshotInternalRevertInactive(virDomainObj *vm,
     }

     /* Try all disks, but report failure if we skipped any.  */
-    if (qemuDomainSnapshotForEachQcow2(def, snap, "-a", true) != 0)
+    if (qemuSnapshotForEachQcow2(def, snap, "-a", true) != 0)
         return -1;

     return 0;
@@ -3919,7 +4002,7 @@ qemuSnapshotDiscardImpl(virDomainObj *vm,
                 if (qemuSnapshotDiscardExternal(vm, snap, externalData) < 0)
                     return -1;
             } else {
-                if (qemuDomainSnapshotForEachQcow2(def, snap, "-d", true) < 0)
+                if (qemuSnapshotForEachQcow2(def, snap, "-d", true) < 0)
                     return -1;
             }
         } else {
-- 
2.47.0