mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-04-01 20:05:19 +00:00
snapshot: speed up snapshot location
Each snapshot lookup was iterating over the entire hash table, O(n), instead of honing in directly on the hash key, amortized O(1). Besides, fixing this means that virDomainSnapshotFindByName can now be used inside another virHashForeach iteration (without this patch, attempts to lookup a snapshot by name during a hash iteration will fail due to nested iteration). * src/conf/domain_conf.c (virDomainSnapshotFindByName): Simplify. (virDomainSnapshotObjListSearchName): Delete unused function.
This commit is contained in:
parent
d4a965c6a8
commit
a31d65695d
@ -11637,23 +11637,11 @@ int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots)
|
||||
return count;
|
||||
}
|
||||
|
||||
static int virDomainSnapshotObjListSearchName(const void *payload,
|
||||
const void *name ATTRIBUTE_UNUSED,
|
||||
const void *data)
|
||||
virDomainSnapshotObjPtr
|
||||
virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots,
|
||||
const char *name)
|
||||
{
|
||||
virDomainSnapshotObjPtr obj = (virDomainSnapshotObjPtr)payload;
|
||||
int want = 0;
|
||||
|
||||
if (STREQ(obj->def->name, (const char *)data))
|
||||
want = 1;
|
||||
|
||||
return want;
|
||||
}
|
||||
|
||||
virDomainSnapshotObjPtr virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots,
|
||||
const char *name)
|
||||
{
|
||||
return virHashSearch(snapshots->objs, virDomainSnapshotObjListSearchName, name);
|
||||
return virHashLookup(snapshots->objs, name);
|
||||
}
|
||||
|
||||
void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,
|
||||
|
Loading…
x
Reference in New Issue
Block a user