int
virDomainSnapshotRedefineValidate(virDomainSnapshotDefPtr def,
const unsigned char *domain_uuid,
- virDomainSnapshotObjPtr other,
+ virDomainMomentObjPtr other,
virDomainXMLOptionPtr xmlopt,
unsigned int flags)
{
}
bool
-virDomainSnapshotIsExternal(virDomainSnapshotObjPtr snap)
+virDomainSnapshotIsExternal(virDomainMomentObjPtr snap)
{
virDomainSnapshotDefPtr def = virDomainSnapshotObjGetDef(snap);
virDomainSnapshotRedefinePrep(virDomainPtr domain,
virDomainObjPtr vm,
virDomainSnapshotDefPtr *defptr,
- virDomainSnapshotObjPtr *snap,
+ virDomainMomentObjPtr *snap,
virDomainXMLOptionPtr xmlopt,
bool *update_current,
unsigned int flags)
{
virDomainSnapshotDefPtr def = *defptr;
- virDomainSnapshotObjPtr other;
+ virDomainMomentObjPtr other;
virDomainSnapshotDefPtr otherdef;
bool check_if_stolen;
/* Drop and rebuild the parent relationship, but keep all
* child relations by reusing snap. */
- virDomainSnapshotDropParent(other);
+ virDomainMomentDropParent(other);
virDomainSnapshotDefFree(otherdef);
other->def = &(*defptr)->common;
*defptr = NULL;
bool require_match);
bool virDomainSnapshotDefIsExternal(virDomainSnapshotDefPtr def);
-bool virDomainSnapshotIsExternal(virDomainSnapshotObjPtr snap);
+bool virDomainSnapshotIsExternal(virDomainMomentObjPtr snap);
int virDomainSnapshotRedefinePrep(virDomainPtr domain,
virDomainObjPtr vm,
virDomainSnapshotDefPtr *def,
- virDomainSnapshotObjPtr *snap,
+ virDomainMomentObjPtr *snap,
virDomainXMLOptionPtr xmlopt,
bool *update_current,
unsigned int flags);
int virDomainSnapshotRedefineValidate(virDomainSnapshotDefPtr def,
const unsigned char *domain_uuid,
- virDomainSnapshotObjPtr other,
+ virDomainMomentObjPtr other,
virDomainXMLOptionPtr xmlopt,
unsigned int flags);
typedef struct _virDomainMomentDef virDomainMomentDef;
typedef virDomainMomentDef *virDomainMomentDefPtr;
+typedef struct _virDomainMomentObj virDomainMomentObj;
+typedef virDomainMomentObj *virDomainMomentObjPtr;
+
typedef struct _virDomainNVRAMDef virDomainNVRAMDef;
typedef virDomainNVRAMDef *virDomainNVRAMDefPtr;
typedef struct _virDomainSnapshotDef virDomainSnapshotDef;
typedef virDomainSnapshotDef *virDomainSnapshotDefPtr;
-typedef struct _virDomainSnapshotObj virDomainSnapshotObj;
-typedef virDomainSnapshotObj *virDomainSnapshotObjPtr;
-
typedef struct _virDomainSnapshotObjList virDomainSnapshotObjList;
typedef virDomainSnapshotObjList *virDomainSnapshotObjListPtr;
VIR_LOG_INIT("conf.virdomainsnapshotobj");
-/* Run iter(data) on all direct children of snapshot, while ignoring all
- * other entries in snapshots. Return the number of children
+/* Run iter(data) on all direct children of moment, while ignoring all
+ * other entries in moments. Return the number of children
* visited. No particular ordering is guaranteed. */
int
-virDomainSnapshotForEachChild(virDomainSnapshotObjPtr snapshot,
- virHashIterator iter,
- void *data)
+virDomainMomentForEachChild(virDomainMomentObjPtr moment,
+ virHashIterator iter,
+ void *data)
{
- virDomainSnapshotObjPtr child = snapshot->first_child;
+ virDomainMomentObjPtr child = moment->first_child;
while (child) {
- virDomainSnapshotObjPtr next = child->sibling;
+ virDomainMomentObjPtr next = child->sibling;
(iter)(child, child->def->name, data);
child = next;
}
- return snapshot->nchildren;
+ return moment->nchildren;
}
-struct snapshot_act_on_descendant {
+struct moment_act_on_descendant {
int number;
virHashIterator iter;
void *data;
};
static int
-virDomainSnapshotActOnDescendant(void *payload,
- const void *name,
- void *data)
+virDomainMomentActOnDescendant(void *payload,
+ const void *name,
+ void *data)
{
- virDomainSnapshotObjPtr obj = payload;
- struct snapshot_act_on_descendant *curr = data;
+ virDomainMomentObjPtr obj = payload;
+ struct moment_act_on_descendant *curr = data;
(curr->iter)(payload, name, curr->data);
- curr->number += 1 + virDomainSnapshotForEachDescendant(obj,
+ curr->number += 1 + virDomainMomentForEachDescendant(obj,
curr->iter,
curr->data);
return 0;
}
-/* Run iter(data) on all descendants of snapshot, while ignoring all
- * other entries in snapshots. Return the number of descendants
+/* Run iter(data) on all descendants of moment, while ignoring all
+ * other entries in moments. Return the number of descendants
* visited. The visit is guaranteed to be topological, but no
* particular order between siblings is guaranteed. */
int
-virDomainSnapshotForEachDescendant(virDomainSnapshotObjPtr snapshot,
- virHashIterator iter,
- void *data)
+virDomainMomentForEachDescendant(virDomainMomentObjPtr moment,
+ virHashIterator iter,
+ void *data)
{
- struct snapshot_act_on_descendant act;
+ struct moment_act_on_descendant act;
act.number = 0;
act.iter = iter;
act.data = data;
- virDomainSnapshotForEachChild(snapshot,
- virDomainSnapshotActOnDescendant, &act);
+ virDomainMomentForEachChild(moment,
+ virDomainMomentActOnDescendant, &act);
return act.number;
}
-/* Prepare to reparent or delete snapshot, by removing it from its
+/* Prepare to reparent or delete moment, by removing it from its
* current listed parent. Note that when bulk removing all children
* of a parent, it is faster to just 0 the count rather than calling
* this function on each child. */
void
-virDomainSnapshotDropParent(virDomainSnapshotObjPtr snapshot)
+virDomainMomentDropParent(virDomainMomentObjPtr moment)
{
- virDomainSnapshotObjPtr prev = NULL;
- virDomainSnapshotObjPtr curr = NULL;
+ virDomainMomentObjPtr prev = NULL;
+ virDomainMomentObjPtr curr = NULL;
- snapshot->parent->nchildren--;
- curr = snapshot->parent->first_child;
- while (curr != snapshot) {
+ moment->parent->nchildren--;
+ curr = moment->parent->first_child;
+ while (curr != moment) {
if (!curr) {
VIR_WARN("inconsistent snapshot relations");
return;
curr = curr->sibling;
}
if (prev)
- prev->sibling = snapshot->sibling;
+ prev->sibling = moment->sibling;
else
- snapshot->parent->first_child = snapshot->sibling;
- snapshot->parent = NULL;
- snapshot->sibling = NULL;
+ moment->parent->first_child = moment->sibling;
+ moment->parent = NULL;
+ moment->sibling = NULL;
}
-/* Update @snapshot to no longer have children. */
+/* Update @moment to no longer have children. */
void
-virDomainSnapshotDropChildren(virDomainSnapshotObjPtr snapshot)
+virDomainMomentDropChildren(virDomainMomentObjPtr moment)
{
- snapshot->nchildren = 0;
- snapshot->first_child = NULL;
+ moment->nchildren = 0;
+ moment->first_child = NULL;
}
-/* Add @snapshot to @parent's list of children. */
+/* Add @moment to @parent's list of children. */
void
-virDomainSnapshotSetParent(virDomainSnapshotObjPtr snapshot,
- virDomainSnapshotObjPtr parent)
+virDomainMomentSetParent(virDomainMomentObjPtr moment,
+ virDomainMomentObjPtr parent)
{
- snapshot->parent = parent;
+ moment->parent = parent;
parent->nchildren++;
- snapshot->sibling = parent->first_child;
- parent->first_child = snapshot;
+ moment->sibling = parent->first_child;
+ parent->first_child = moment;
}
/* Take all children of @from and convert them into children of @to. */
void
-virDomainSnapshotMoveChildren(virDomainSnapshotObjPtr from,
- virDomainSnapshotObjPtr to)
+virDomainMomentMoveChildren(virDomainMomentObjPtr from,
+ virDomainMomentObjPtr to)
{
- virDomainSnapshotObjPtr child;
- virDomainSnapshotObjPtr last;
+ virDomainMomentObjPtr child;
+ virDomainMomentObjPtr last;
if (!from->first_child)
return;
# include "virconftypes.h"
# include "virhash.h"
-struct _virDomainSnapshotObj {
+struct _virDomainMomentObj {
virDomainMomentDefPtr def; /* non-NULL except for metaroot */
- virDomainSnapshotObjPtr parent; /* non-NULL except for metaroot, before
- virDomainSnapshotUpdateRelations, or
- after virDomainSnapshotDropParent */
- virDomainSnapshotObjPtr sibling; /* NULL if last child of parent */
+ virDomainMomentObjPtr parent; /* non-NULL except for metaroot, before
+ virDomainSnapshotUpdateRelations, or
+ after virDomainMomentDropParent */
+ virDomainMomentObjPtr sibling; /* NULL if last child of parent */
size_t nchildren;
- virDomainSnapshotObjPtr first_child; /* NULL if no children */
+ virDomainMomentObjPtr first_child; /* NULL if no children */
};
-int virDomainSnapshotForEachChild(virDomainSnapshotObjPtr snapshot,
- virHashIterator iter,
- void *data);
-int virDomainSnapshotForEachDescendant(virDomainSnapshotObjPtr snapshot,
- virHashIterator iter,
- void *data);
-void virDomainSnapshotDropParent(virDomainSnapshotObjPtr snapshot);
-void virDomainSnapshotDropChildren(virDomainSnapshotObjPtr snapshot);
-void virDomainSnapshotMoveChildren(virDomainSnapshotObjPtr from,
- virDomainSnapshotObjPtr to);
-void virDomainSnapshotSetParent(virDomainSnapshotObjPtr snapshot,
- virDomainSnapshotObjPtr parent);
+int virDomainMomentForEachChild(virDomainMomentObjPtr moment,
+ virHashIterator iter,
+ void *data);
+int virDomainMomentForEachDescendant(virDomainMomentObjPtr moment,
+ virHashIterator iter,
+ void *data);
+void virDomainMomentDropParent(virDomainMomentObjPtr moment);
+void virDomainMomentDropChildren(virDomainMomentObjPtr moment);
+void virDomainMomentMoveChildren(virDomainMomentObjPtr from,
+ virDomainMomentObjPtr to);
+void virDomainMomentSetParent(virDomainMomentObjPtr moment,
+ virDomainMomentObjPtr parent);
#endif /* LIBVIRT_VIRDOMAINSNAPSHOTOBJ_H */
VIR_LOG_INIT("conf.virdomainsnapshotobjlist");
struct _virDomainSnapshotObjList {
- /* name string -> virDomainSnapshotObj mapping
+ /* name string -> virDomainMomentObj mapping
* for O(1), lockless lookup-by-name */
virHashTable *objs;
- virDomainSnapshotObj metaroot; /* Special parent of all root snapshots */
- virDomainSnapshotObjPtr current; /* The current snapshot, if any */
+ virDomainMomentObj metaroot; /* Special parent of all root snapshots */
+ virDomainMomentObjPtr current; /* The current snapshot, if any */
};
int n;
size_t i;
int keepBlanksDefault = xmlKeepBlanksDefault(0);
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
VIR_AUTOFREE(xmlNodePtr *) nodes = NULL;
VIR_AUTOFREE(char *) current = NULL;
const void *name ATTRIBUTE_UNUSED,
void *opaque)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
struct virDomainSnapshotFormatData *data = opaque;
return virDomainSnapshotDefFormatInternal(data->buf, data->uuidstr,
virDomainSnapshotObjGetDef(snap),
/* Snapshot Obj functions */
-static virDomainSnapshotObjPtr virDomainSnapshotObjNew(void)
+static virDomainMomentObjPtr virDomainMomentObjNew(void)
{
- virDomainSnapshotObjPtr snapshot;
+ virDomainMomentObjPtr snapshot;
if (VIR_ALLOC(snapshot) < 0)
return NULL;
return snapshot;
}
-static void virDomainSnapshotObjFree(virDomainSnapshotObjPtr snapshot)
+static void virDomainMomentObjFree(virDomainMomentObjPtr snapshot)
{
if (!snapshot)
return;
VIR_FREE(snapshot);
}
-virDomainSnapshotObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotDefPtr def)
+virDomainMomentObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots,
+ virDomainSnapshotDefPtr def)
{
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
if (virHashLookup(snapshots->objs, def->common.name) != NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
return NULL;
}
- if (!(snap = virDomainSnapshotObjNew()))
+ if (!(snap = virDomainMomentObjNew()))
return NULL;
if (virHashAddEntry(snapshots->objs, snap->def->name, snap) < 0) {
/* Snapshot Obj List functions */
static bool
-virDomainSnapshotFilter(virDomainSnapshotObjPtr obj,
+virDomainSnapshotFilter(virDomainMomentObjPtr obj,
unsigned int flags)
{
virDomainSnapshotDefPtr def = virDomainSnapshotObjGetDef(obj);
virDomainSnapshotObjListDataFree(void *payload,
const void *name ATTRIBUTE_UNUSED)
{
- virDomainSnapshotObjPtr obj = payload;
+ virDomainMomentObjPtr obj = payload;
- virDomainSnapshotObjFree(obj);
+ virDomainMomentObjFree(obj);
}
virDomainSnapshotObjListPtr
}
-struct virDomainSnapshotNameData {
+struct virDomainMomentNameData {
char **const names;
int maxnames;
unsigned int flags;
int count;
bool error;
- virDomainSnapshotObjListFilter filter;
+ virDomainMomentObjListFilter filter;
};
-static int virDomainSnapshotObjListCopyNames(void *payload,
- const void *name ATTRIBUTE_UNUSED,
- void *opaque)
+static int virDomainMomentObjListCopyNames(void *payload,
+ const void *name ATTRIBUTE_UNUSED,
+ void *opaque)
{
- virDomainSnapshotObjPtr obj = payload;
- struct virDomainSnapshotNameData *data = opaque;
+ virDomainMomentObjPtr obj = payload;
+ struct virDomainMomentNameData *data = opaque;
if (data->error)
return 0;
int
virDomainSnapshotObjListGetNames(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
char **const names,
int maxnames,
unsigned int flags)
{
- struct virDomainSnapshotNameData data = { names, maxnames, flags, 0,
- false, virDomainSnapshotFilter };
+ struct virDomainMomentNameData data = { names, maxnames, flags, 0,
+ false, virDomainSnapshotFilter };
size_t i;
if (!from) {
* simpler full hashtable visit or counter will do. */
if (from->def || (names &&
(flags & VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL)))
- virDomainSnapshotForEachDescendant(from,
- virDomainSnapshotObjListCopyNames,
- &data);
+ virDomainMomentForEachDescendant(from,
+ virDomainMomentObjListCopyNames,
+ &data);
else if (names || data.flags)
- virHashForEach(snapshots->objs, virDomainSnapshotObjListCopyNames,
+ virHashForEach(snapshots->objs, virDomainMomentObjListCopyNames,
&data);
else
data.count = virHashSize(snapshots->objs);
} else if (names || data.flags) {
- virDomainSnapshotForEachChild(from,
- virDomainSnapshotObjListCopyNames, &data);
+ virDomainMomentForEachChild(from,
+ virDomainMomentObjListCopyNames, &data);
} else {
data.count = from->nchildren;
}
int
virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
unsigned int flags)
{
return virDomainSnapshotObjListGetNames(snapshots, from, NULL, 0, flags);
}
-virDomainSnapshotObjPtr
+virDomainMomentObjPtr
virDomainSnapshotFindByName(virDomainSnapshotObjListPtr snapshots,
const char *name)
{
/* Return the current snapshot, or NULL */
-virDomainSnapshotObjPtr
+virDomainMomentObjPtr
virDomainSnapshotGetCurrent(virDomainSnapshotObjListPtr snapshots)
{
return snapshots->current;
/* Update the current snapshot, using NULL if no current remains */
void
virDomainSnapshotSetCurrent(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr snapshot)
+ virDomainMomentObjPtr snapshot)
{
snapshots->current = snapshot;
}
/* Remove snapshot from the list; return true if it was current */
bool
virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr snapshot)
+ virDomainMomentObjPtr snapshot)
{
bool ret = snapshots->current == snapshot;
virHashRemoveEntry(snapshots->objs, snapshot->def->name);
virDomainSnapshotObjListRemoveAll(virDomainSnapshotObjListPtr snapshots)
{
virHashRemoveAll(snapshots->objs);
- virDomainSnapshotDropChildren(&snapshots->metaroot);
+ virDomainMomentDropChildren(&snapshots->metaroot);
}
* wire up the hierarchical relations for the given snapshot. The error
* indicator gets set if a parent is missing or a requested parent would
* cause a circular parent chain. */
-struct snapshot_set_relation {
+struct moment_set_relation {
virDomainSnapshotObjListPtr snapshots;
int err;
};
static int
-virDomainSnapshotSetRelations(void *payload,
- const void *name ATTRIBUTE_UNUSED,
- void *data)
+virDomainMomentSetRelations(void *payload,
+ const void *name ATTRIBUTE_UNUSED,
+ void *data)
{
- virDomainSnapshotObjPtr obj = payload;
- struct snapshot_set_relation *curr = data;
- virDomainSnapshotObjPtr tmp;
- virDomainSnapshotObjPtr parent;
+ virDomainMomentObjPtr obj = payload;
+ struct moment_set_relation *curr = data;
+ virDomainMomentObjPtr tmp;
+ virDomainMomentObjPtr parent;
parent = virDomainSnapshotFindByName(curr->snapshots, obj->def->parent);
if (!parent) {
tmp = tmp->parent;
}
}
- virDomainSnapshotSetParent(obj, parent);
+ virDomainMomentSetParent(obj, parent);
return 0;
}
int
virDomainSnapshotUpdateRelations(virDomainSnapshotObjListPtr snapshots)
{
- struct snapshot_set_relation act = { snapshots, 0 };
+ struct moment_set_relation act = { snapshots, 0 };
- virDomainSnapshotDropChildren(&snapshots->metaroot);
- virHashForEach(snapshots->objs, virDomainSnapshotSetRelations, &act);
+ virDomainMomentDropChildren(&snapshots->metaroot);
+ virHashForEach(snapshots->objs, virDomainMomentSetRelations, &act);
if (act.err)
snapshots->current = NULL;
return act.err;
int
virDomainListSnapshots(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
virDomainPtr dom,
virDomainSnapshotPtr **snaps,
unsigned int flags)
# include "virdomainsnapshotobj.h"
# include "virbuffer.h"
-/* Filter that returns true if a given snapshot matches the filter flags */
-typedef bool (*virDomainSnapshotObjListFilter)(virDomainSnapshotObjPtr obj,
- unsigned int flags);
+/* Filter that returns true if a given moment matches the filter flags */
+typedef bool (*virDomainMomentObjListFilter)(virDomainMomentObjPtr obj,
+ unsigned int flags);
virDomainSnapshotObjListPtr virDomainSnapshotObjListNew(void);
void virDomainSnapshotObjListFree(virDomainSnapshotObjListPtr snapshots);
virDomainXMLOptionPtr xmlopt,
unsigned int flags);
-virDomainSnapshotObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotDefPtr def);
+virDomainMomentObjPtr virDomainSnapshotAssignDef(virDomainSnapshotObjListPtr snapshots,
+ virDomainSnapshotDefPtr def);
int virDomainSnapshotObjListGetNames(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
char **const names, int maxnames,
unsigned int flags);
int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
unsigned int flags);
-virDomainSnapshotObjPtr virDomainSnapshotFindByName(virDomainSnapshotObjListPtr snapshots,
- const char *name);
+virDomainMomentObjPtr virDomainSnapshotFindByName(virDomainSnapshotObjListPtr snapshots,
+ const char *name);
int virDomainSnapshotObjListSize(virDomainSnapshotObjListPtr snapshots);
-virDomainSnapshotObjPtr virDomainSnapshotGetCurrent(virDomainSnapshotObjListPtr snapshots);
+virDomainMomentObjPtr virDomainSnapshotGetCurrent(virDomainSnapshotObjListPtr snapshots);
const char *virDomainSnapshotGetCurrentName(virDomainSnapshotObjListPtr snapshots);
bool virDomainSnapshotIsCurrentName(virDomainSnapshotObjListPtr snapshots,
const char *name);
void virDomainSnapshotSetCurrent(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr snapshot);
+ virDomainMomentObjPtr snapshot);
bool virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr snapshot);
+ virDomainMomentObjPtr snapshot);
void virDomainSnapshotObjListRemoveAll(virDomainSnapshotObjListPtr snapshots);
int virDomainSnapshotForEach(virDomainSnapshotObjListPtr snapshots,
virHashIterator iter,
VIR_DOMAIN_SNAPSHOT_FILTERS_LOCATION)
int virDomainListSnapshots(virDomainSnapshotObjListPtr snapshots,
- virDomainSnapshotObjPtr from,
+ virDomainMomentObjPtr from,
virDomainPtr dom,
virDomainSnapshotPtr **snaps,
unsigned int flags);
/* Access the snapshot-specific definition from a given list member. */
static inline virDomainSnapshotDefPtr
-virDomainSnapshotObjGetDef(virDomainSnapshotObjPtr obj)
+virDomainSnapshotObjGetDef(virDomainMomentObjPtr obj)
{
return (virDomainSnapshotDefPtr) obj->def;
}
# conf/virdomainsnapshotobj.h
-virDomainSnapshotDropChildren;
-virDomainSnapshotDropParent;
-virDomainSnapshotForEachChild;
-virDomainSnapshotForEachDescendant;
-virDomainSnapshotMoveChildren;
-virDomainSnapshotSetParent;
+virDomainMomentDropChildren;
+virDomainMomentDropParent;
+virDomainMomentForEachChild;
+virDomainMomentForEachDescendant;
+virDomainMomentMoveChildren;
+virDomainMomentSetParent;
# conf/virdomainsnapshotobjlist.h
virSecurityManagerPtr secManager,
virDomainObjPtr vm,
const char *migrateURI,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
bool standalone,
bool enableFips,
virSecurityManagerPtr secManager,
virDomainObjPtr vm,
const char *migrateURI,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
bool standalone,
bool enableFips,
int
qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt,
const char *snapshotDir)
int
qemuDomainSnapshotForEachQcow2(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
const char *op,
bool try_all)
{
int
qemuDomainSnapshotDiscard(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
bool update_parent,
bool metadata_only)
{
char *snapFile = NULL;
int ret = -1;
qemuDomainObjPrivatePtr priv;
- virDomainSnapshotObjPtr parentsnap = NULL;
+ virDomainMomentObjPtr parentsnap = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
if (!metadata_only) {
if (unlink(snapFile) < 0)
VIR_WARN("Failed to unlink %s", snapFile);
if (update_parent)
- virDomainSnapshotDropParent(snap);
+ virDomainMomentDropParent(snap);
virDomainSnapshotObjListRemove(vm->snapshots, snap);
ret = 0;
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
virQEMUSnapRemovePtr curr = data;
int err;
const char *qemuFindQemuImgBinary(virQEMUDriverPtr driver);
int qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt,
const char *snapshotDir);
int qemuDomainSnapshotForEachQcow2(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
const char *op,
bool try_all);
int qemuDomainSnapshotDiscard(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
bool update_current,
bool metadata_only);
/* Looks up snapshot object from VM and name */
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
qemuSnapObjFromName(virDomainObjPtr vm,
const char *name)
{
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
snap = virDomainSnapshotFindByName(vm->snapshots, name);
if (!snap)
virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT,
/* Looks up snapshot object from VM and snapshotPtr */
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
qemuSnapObjFromSnapshot(virDomainObjPtr vm,
virDomainSnapshotPtr snapshot)
{
char *xmlStr;
char *fullpath;
virDomainSnapshotDefPtr def = NULL;
- virDomainSnapshotObjPtr snap = NULL;
- virDomainSnapshotObjPtr current = NULL;
+ virDomainMomentObjPtr snap = NULL;
+ virDomainMomentObjPtr current = NULL;
bool cur;
unsigned int flags = (VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE |
VIR_DOMAIN_SNAPSHOT_PARSE_DISKS |
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
int *count = data;
if (virDomainSnapshotIsExternal(snap))
static int
qemuDomainSnapshotCreateInactiveInternal(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap)
+ virDomainMomentObjPtr snap)
{
return qemuDomainSnapshotForEachQcow2(driver, vm, snap, "-c", false);
}
static int
qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
bool reuse)
{
size_t i;
static int
qemuDomainSnapshotCreateActiveInternal(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
unsigned int flags)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
static qemuDomainSnapshotDiskDataPtr
qemuDomainSnapshotDiskDataCollect(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
bool reuse)
{
size_t i;
static int
qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
unsigned int flags,
qemuDomainAsyncJob asyncJob)
{
static int
qemuDomainSnapshotCreateActiveExternal(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap,
+ virDomainMomentObjPtr snap,
unsigned int flags)
{
virObjectEventPtr event;
virQEMUDriverPtr driver = domain->conn->privateData;
virDomainObjPtr vm = NULL;
char *xml = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr snapshot = NULL;
virDomainSnapshotDefPtr def = NULL;
- virDomainSnapshotObjPtr current = NULL;
+ virDomainMomentObjPtr current = NULL;
bool update_current = true;
bool redefine = flags & VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE;
unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
- virDomainSnapshotObjPtr other = NULL;
+ virDomainMomentObjPtr other = NULL;
int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL;
bool align_match = true;
virQEMUDriverConfigPtr cfg = NULL;
} else {
other = virDomainSnapshotFindByName(vm->snapshots,
snap->def->parent);
- virDomainSnapshotSetParent(snap, other);
+ virDomainMomentSetParent(snap, other);
}
} else if (snap) {
virDomainSnapshotObjListRemove(vm->snapshots, snap);
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr snapshot = NULL;
virCheckFlags(0, NULL);
unsigned int flags)
{
virDomainObjPtr vm;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr parent = NULL;
virCheckFlags(0, NULL);
virQEMUDriverPtr driver = snapshot->domain->conn->privateData;
virDomainObjPtr vm = NULL;
char *xml = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virCheckFlags(VIR_DOMAIN_SNAPSHOT_XML_SECURE, NULL);
{
virDomainObjPtr vm = NULL;
int ret = -1;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virCheckFlags(0, -1);
{
virDomainObjPtr vm = NULL;
int ret = -1;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virCheckFlags(0, -1);
static int
qemuDomainSnapshotRevertInactive(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- virDomainSnapshotObjPtr snap)
+ virDomainMomentObjPtr snap)
{
/* Try all disks, but report failure if we skipped any. */
int ret = qemuDomainSnapshotForEachQcow2(driver, vm, snap, "-a", true);
virQEMUDriverPtr driver = snapshot->domain->conn->privateData;
virDomainObjPtr vm = NULL;
int ret = -1;
- virDomainSnapshotObjPtr snap = NULL;
- virDomainSnapshotObjPtr current = NULL;
+ virDomainMomentObjPtr snap = NULL;
+ virDomainMomentObjPtr current = NULL;
virDomainSnapshotDefPtr snapdef;
virObjectEventPtr event = NULL;
virObjectEventPtr event2 = NULL;
typedef virQEMUSnapReparent *virQEMUSnapReparentPtr;
struct _virQEMUSnapReparent {
virQEMUDriverConfigPtr cfg;
- virDomainSnapshotObjPtr parent;
+ virDomainMomentObjPtr parent;
virDomainObjPtr vm;
virCapsPtr caps;
virDomainXMLOptionPtr xmlopt;
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
virQEMUSnapReparentPtr rep = data;
if (rep->err < 0)
virQEMUDriverPtr driver = snapshot->domain->conn->privateData;
virDomainObjPtr vm = NULL;
int ret = -1;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virQEMUSnapRemove rem;
virQEMUSnapReparent rep;
bool metadata_only = !!(flags & VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY);
external++;
if (flags & (VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN |
VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY))
- virDomainSnapshotForEachDescendant(snap,
- qemuDomainSnapshotCountExternal,
- &external);
+ virDomainMomentForEachDescendant(snap,
+ qemuDomainSnapshotCountExternal,
+ &external);
if (external) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("deletion of %d external disk snapshots not "
rem.metadata_only = metadata_only;
rem.err = 0;
rem.current = false;
- virDomainSnapshotForEachDescendant(snap,
- qemuDomainSnapshotDiscardAll,
- &rem);
+ virDomainMomentForEachDescendant(snap,
+ qemuDomainSnapshotDiscardAll,
+ &rem);
if (rem.err < 0)
goto endjob;
if (rem.current) {
rep.err = 0;
rep.caps = driver->caps;
rep.xmlopt = driver->xmlopt;
- virDomainSnapshotForEachChild(snap,
- qemuDomainSnapshotReparentChildren,
- &rep);
+ virDomainMomentForEachChild(snap,
+ qemuDomainSnapshotReparentChildren,
+ &rep);
if (rep.err < 0)
goto endjob;
- virDomainSnapshotMoveChildren(snap, snap->parent);
+ virDomainMomentMoveChildren(snap, snap->parent);
}
if (flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY) {
- virDomainSnapshotDropChildren(snap);
+ virDomainMomentDropChildren(snap);
ret = 0;
} else {
ret = qemuDomainSnapshotDiscard(driver, vm, snap, true, metadata_only);
virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob,
qemuProcessIncomingDefPtr incoming,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
unsigned int flags)
{
const char *migrateFrom,
int migrateFd,
const char *migratePath,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
unsigned int flags)
{
const char *migrateFrom,
int stdin_fd,
const char *stdin_path,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
unsigned int flags);
virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob,
qemuProcessIncomingDefPtr incoming,
- virDomainSnapshotObjPtr snapshot,
+ virDomainMomentObjPtr snapshot,
virNetDevVPortProfileOp vmop,
unsigned int flags);
bool cur;
for (i = 0; i < nsdata->num_snap_nodes; i++) {
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotDefPtr def;
xmlNodePtr node = testParseXMLDocFromFile(nodes[i], file,
"domainsnapshot");
* Snapshot APIs
*/
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
testSnapObjFromName(virDomainObjPtr vm,
const char *name)
{
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
snap = virDomainSnapshotFindByName(vm->snapshots, name);
if (!snap)
virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT,
return snap;
}
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
testSnapObjFromSnapshot(virDomainObjPtr vm,
virDomainSnapshotPtr snapshot)
{
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
int n = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS |
unsigned int flags)
{
virDomainObjPtr vm;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr snapshot = NULL;
virCheckFlags(0, NULL);
unsigned int flags)
{
virDomainObjPtr vm;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr parent = NULL;
virCheckFlags(0, NULL);
{
virDomainObjPtr vm;
virDomainSnapshotPtr snapshot = NULL;
- virDomainSnapshotObjPtr current;
+ virDomainMomentObjPtr current;
virCheckFlags(0, NULL);
{
virDomainObjPtr vm = NULL;
char *xml = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
char uuidstr[VIR_UUID_STRING_BUFLEN];
testDriverPtr privconn = snapshot->domain->conn->privateData;
testDriverPtr privconn = domain->conn->privateData;
virDomainObjPtr vm = NULL;
virDomainSnapshotDefPtr def = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virDomainSnapshotPtr snapshot = NULL;
virObjectEventPtr event = NULL;
bool update_current = true;
cleanup:
if (vm) {
if (snapshot) {
- virDomainSnapshotObjPtr other;
+ virDomainMomentObjPtr other;
if (update_current)
virDomainSnapshotSetCurrent(vm->snapshots, snap);
other = virDomainSnapshotFindByName(vm->snapshots,
snap->def->parent);
- virDomainSnapshotSetParent(snap, other);
+ virDomainMomentSetParent(snap, other);
}
virDomainObjEndAPI(&vm);
}
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
testSnapRemoveDataPtr curr = data;
curr->current |= virDomainSnapshotObjListRemove(curr->vm->snapshots, snap);
typedef struct _testSnapReparentData testSnapReparentData;
typedef testSnapReparentData *testSnapReparentDataPtr;
struct _testSnapReparentData {
- virDomainSnapshotObjPtr parent;
+ virDomainMomentObjPtr parent;
virDomainObjPtr vm;
int err;
};
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snap = payload;
+ virDomainMomentObjPtr snap = payload;
testSnapReparentDataPtr rep = data;
if (rep->err < 0)
unsigned int flags)
{
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
- virDomainSnapshotObjPtr parentsnap = NULL;
+ virDomainMomentObjPtr snap = NULL;
+ virDomainMomentObjPtr parentsnap = NULL;
int ret = -1;
virCheckFlags(VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN |
testSnapRemoveData rem;
rem.vm = vm;
rem.current = false;
- virDomainSnapshotForEachDescendant(snap,
- testDomainSnapshotDiscardAll,
- &rem);
+ virDomainMomentForEachDescendant(snap,
+ testDomainSnapshotDiscardAll,
+ &rem);
if (rem.current)
virDomainSnapshotSetCurrent(vm->snapshots, snap);
} else if (snap->nchildren) {
rep.parent = snap->parent;
rep.vm = vm;
rep.err = 0;
- virDomainSnapshotForEachChild(snap,
- testDomainSnapshotReparentChildren,
- &rep);
+ virDomainMomentForEachChild(snap,
+ testDomainSnapshotReparentChildren,
+ &rep);
if (rep.err < 0)
goto cleanup;
- virDomainSnapshotMoveChildren(snap, snap->parent);
+ virDomainMomentMoveChildren(snap, snap->parent);
}
if (flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY) {
- virDomainSnapshotDropChildren(snap);
+ virDomainMomentDropChildren(snap);
} else {
- virDomainSnapshotDropParent(snap);
+ virDomainMomentDropParent(snap);
if (snap == virDomainSnapshotGetCurrent(vm->snapshots)) {
if (snap->def->parent) {
parentsnap = virDomainSnapshotFindByName(vm->snapshots,
{
testDriverPtr privconn = snapshot->domain->conn->privateData;
virDomainObjPtr vm = NULL;
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
virObjectEventPtr event = NULL;
virObjectEventPtr event2 = NULL;
virDomainDefPtr config = NULL;
return ret;
}
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
vzSnapObjFromName(virDomainSnapshotObjListPtr snapshots, const char *name)
{
- virDomainSnapshotObjPtr snap = NULL;
+ virDomainMomentObjPtr snap = NULL;
snap = virDomainSnapshotFindByName(snapshots, name);
if (!snap)
virReportError(VIR_ERR_NO_DOMAIN_SNAPSHOT,
return snap;
}
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
vzSnapObjFromSnapshot(virDomainSnapshotObjListPtr snapshots,
virDomainSnapshotPtr snapshot)
{
const void *name ATTRIBUTE_UNUSED,
void *data)
{
- virDomainSnapshotObjPtr snapshot = payload;
- virDomainSnapshotObjPtr *current = data;
+ virDomainMomentObjPtr snapshot = payload;
+ virDomainMomentObjPtr *current = data;
if (snapshot->def->current)
*current = snapshot;
return 0;
}
-static virDomainSnapshotObjPtr
+static virDomainMomentObjPtr
vzFindCurrentSnapshot(virDomainSnapshotObjListPtr snapshots)
{
- virDomainSnapshotObjPtr current = NULL;
+ virDomainMomentObjPtr current = NULL;
virDomainSnapshotForEach(snapshots, vzCurrentSnapshotIterator, ¤t);
return current;
{
virDomainObjPtr dom;
char *xml = NULL;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virDomainSnapshotObjListPtr snapshots = NULL;
vzConnPtr privconn = snapshot->domain->conn->privateData;
vzDomainSnapshotNumChildren(virDomainSnapshotPtr snapshot, unsigned int flags)
{
virDomainObjPtr dom;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotObjListPtr snapshots = NULL;
int n = -1;
unsigned int flags)
{
virDomainObjPtr dom;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotObjListPtr snapshots = NULL;
int n = -1;
unsigned int flags)
{
virDomainObjPtr dom;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotObjListPtr snapshots = NULL;
int n = -1;
unsigned int flags)
{
virDomainObjPtr dom;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotPtr snapshot = NULL;
virDomainSnapshotObjListPtr snapshots = NULL;
vzDomainSnapshotGetParent(virDomainSnapshotPtr snapshot, unsigned int flags)
{
virDomainObjPtr dom;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotPtr parent = NULL;
virDomainSnapshotObjListPtr snapshots = NULL;
virDomainObjPtr dom;
virDomainSnapshotPtr snapshot = NULL;
virDomainSnapshotObjListPtr snapshots = NULL;
- virDomainSnapshotObjPtr current;
+ virDomainMomentObjPtr current;
virCheckFlags(0, NULL);
virDomainObjPtr dom;
int ret = -1;
virDomainSnapshotObjListPtr snapshots = NULL;
- virDomainSnapshotObjPtr current;
+ virDomainMomentObjPtr current;
virCheckFlags(0, -1);
{
virDomainObjPtr dom;
int ret = -1;
- virDomainSnapshotObjPtr snap;
+ virDomainMomentObjPtr snap;
virDomainSnapshotObjListPtr snapshots = NULL;
virCheckFlags(0, -1);
vzDriverPtr driver = privconn->driver;
unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS;
virDomainSnapshotObjListPtr snapshots = NULL;
- virDomainSnapshotObjPtr current;
+ virDomainMomentObjPtr current;
bool job = false;
virCheckFlags(0, NULL);
xmlNodePtr root;
xmlNodePtr *nodes = NULL;
virDomainSnapshotDefPtr def = NULL;
- virDomainSnapshotObjPtr snapshot;
- virDomainSnapshotObjPtr current = NULL;
+ virDomainMomentObjPtr snapshot;
+ virDomainMomentObjPtr current = NULL;
virDomainSnapshotObjListPtr snapshots = NULL;
char *xmlstr = NULL;
int n;