The previous optimizations lead to some follow-on cleanups. * src/conf/domain_conf.c (virDomainSnapshotForEachChild) (virDomainSnapshotForEachDescendant): Drop dead parameter. (virDomainSnapshotActOnDescendant) (virDomainSnapshotObjListNumFrom) (virDomainSnapshotObjListGetNamesFrom): Update callers. * src/qemu/qemu_driver.c (qemuDomainSnapshotNumChildren) (qemuDomainSnapshotListChildrenNames, qemuDomainSnapshotDelete): Likewise. * src/conf/domain_conf.h: Update prototypes. --- src/conf/domain_conf.c | 20 ++++++++------------ src/conf/domain_conf.h | 11 ++--------- src/qemu/qemu_driver.c | 12 +++++------- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e77257a..d52a79f 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -12192,7 +12192,6 @@ cleanup: } int virDomainSnapshotObjListGetNamesFrom(virDomainSnapshotObjPtr snapshot, - virDomainSnapshotObjListPtr snapshots, char **const names, int maxnames, unsigned int flags) { @@ -12202,11 +12201,11 @@ int virDomainSnapshotObjListGetNamesFrom(virDomainSnapshotObjPtr snapshot, data.flags = flags & ~VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS; if (flags & VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS) - virDomainSnapshotForEachDescendant(snapshots, snapshot, + virDomainSnapshotForEachDescendant(snapshot, virDomainSnapshotObjListCopyNames, &data); else - virDomainSnapshotForEachChild(snapshots, snapshot, + virDomainSnapshotForEachChild(snapshot, virDomainSnapshotObjListCopyNames, &data); if (data.oom) { @@ -12263,7 +12262,6 @@ int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots, int virDomainSnapshotObjListNumFrom(virDomainSnapshotObjPtr snapshot, - virDomainSnapshotObjListPtr snapshots, unsigned int flags) { struct virDomainSnapshotNumData data = { 0, 0 }; @@ -12271,11 +12269,11 @@ virDomainSnapshotObjListNumFrom(virDomainSnapshotObjPtr snapshot, data.flags = flags & ~VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS; if (flags & VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS) - virDomainSnapshotForEachDescendant(snapshots, snapshot, + virDomainSnapshotForEachDescendant(snapshot, virDomainSnapshotObjListCount, &data); else if (data.flags) - virDomainSnapshotForEachChild(snapshots, snapshot, + virDomainSnapshotForEachChild(snapshot, virDomainSnapshotObjListCount, &data); else data.count = snapshot->nchildren; @@ -12300,8 +12298,7 @@ void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots, * other entries in snapshots. Return the number of children * visited. No particular ordering is guaranteed. */ int -virDomainSnapshotForEachChild(virDomainSnapshotObjListPtr snapshots ATTRIBUTE_UNUSED, - virDomainSnapshotObjPtr snapshot, +virDomainSnapshotForEachChild(virDomainSnapshotObjPtr snapshot, virHashIterator iter, void *data) { @@ -12331,15 +12328,14 @@ virDomainSnapshotActOnDescendant(void *payload, curr->number++; (curr->iter)(payload, name, curr->data); - virDomainSnapshotForEachDescendant(NULL, obj, curr->iter, curr->data); + virDomainSnapshotForEachDescendant(obj, curr->iter, curr->data); } /* Run iter(data) on all descendants of snapshot, while ignoring all * other entries in snapshots. Return the number of descendants * visited. No particular ordering is guaranteed. */ int -virDomainSnapshotForEachDescendant(virDomainSnapshotObjListPtr snapshots ATTRIBUTE_UNUSED, - virDomainSnapshotObjPtr snapshot, +virDomainSnapshotForEachDescendant(virDomainSnapshotObjPtr snapshot, virHashIterator iter, void *data) { @@ -12348,7 +12344,7 @@ virDomainSnapshotForEachDescendant(virDomainSnapshotObjListPtr snapshots ATTRIBU act.number = 0; act.iter = iter; act.data = data; - virDomainSnapshotForEachChild(NULL, snapshot, + virDomainSnapshotForEachChild(snapshot, virDomainSnapshotActOnDescendant, &act); return act.number; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 9b3870a..ce93215 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1464,9 +1464,6 @@ struct _virDomainSnapshotObj { virDomainSnapshotObjPtr sibling; /* NULL if last child of parent */ size_t nchildren; virDomainSnapshotObjPtr first_child; /* NULL if no children */ - - /* Internal use only */ - int mark; /* Used in identifying descendents. */ }; typedef struct _virDomainSnapshotObjList virDomainSnapshotObjList; @@ -1508,22 +1505,18 @@ int virDomainSnapshotObjListGetNames(virDomainSnapshotObjListPtr snapshots, int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots, unsigned int flags); int virDomainSnapshotObjListGetNamesFrom(virDomainSnapshotObjPtr snapshot, - virDomainSnapshotObjListPtr snapshots, char **const names, int maxnames, unsigned int flags); int virDomainSnapshotObjListNumFrom(virDomainSnapshotObjPtr snapshot, - virDomainSnapshotObjListPtr snapshots, unsigned int flags); virDomainSnapshotObjPtr virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots, const char *name); void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots, virDomainSnapshotObjPtr snapshot); -int virDomainSnapshotForEachChild(virDomainSnapshotObjListPtr snapshots, - virDomainSnapshotObjPtr snapshot, +int virDomainSnapshotForEachChild(virDomainSnapshotObjPtr snapshot, virHashIterator iter, void *data); -int virDomainSnapshotForEachDescendant(virDomainSnapshotObjListPtr snapshots, - virDomainSnapshotObjPtr snapshot, +int virDomainSnapshotForEachDescendant(virDomainSnapshotObjPtr snapshot, virHashIterator iter, void *data); int virDomainSnapshotUpdateRelations(virDomainSnapshotObjListPtr snapshots); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 501a3fc..7a134e3 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9502,8 +9502,7 @@ qemuDomainSnapshotListChildrenNames(virDomainSnapshotPtr snapshot, goto cleanup; } - n = virDomainSnapshotObjListGetNamesFrom(snap, &vm->snapshots, - names, nameslen, flags); + n = virDomainSnapshotObjListGetNamesFrom(snap, names, nameslen, flags); cleanup: if (vm) @@ -9546,7 +9545,7 @@ qemuDomainSnapshotNumChildren(virDomainSnapshotPtr snapshot, * VIR_DOMAIN_SNAPSHOT_LIST_METADATA makes no difference to our * answer. */ - n = virDomainSnapshotObjListNumFrom(snap, &vm->snapshots, flags); + n = virDomainSnapshotObjListNumFrom(snap, flags); cleanup: if (vm) @@ -10163,7 +10162,7 @@ static int qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, snap->def->state == VIR_DOMAIN_DISK_SNAPSHOT) external++; if (flags & VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN) - virDomainSnapshotForEachDescendant(&vm->snapshots, snap, + virDomainSnapshotForEachDescendant(snap, qemuDomainSnapshotCountExternal, &external); if (external) { @@ -10184,8 +10183,7 @@ static int qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, rem.metadata_only = metadata_only; rem.err = 0; rem.current = false; - virDomainSnapshotForEachDescendant(&vm->snapshots, - snap, + virDomainSnapshotForEachDescendant(snap, qemuDomainSnapshotDiscardAll, &rem); if (rem.err < 0) @@ -10210,7 +10208,7 @@ static int qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, rep.vm = vm; rep.err = 0; rep.last = NULL; - virDomainSnapshotForEachChild(&vm->snapshots, snap, + virDomainSnapshotForEachChild(snap, qemuDomainSnapshotReparentChildren, &rep); if (rep.err < 0) -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list