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
© 2016 - 2024 Red Hat, Inc.