提交 a31d6569 编写于 作者: E Eric Blake

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.
上级 d4a965c6
...@@ -11637,23 +11637,11 @@ int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots) ...@@ -11637,23 +11637,11 @@ int virDomainSnapshotObjListNum(virDomainSnapshotObjListPtr snapshots)
return count; return count;
} }
static int virDomainSnapshotObjListSearchName(const void *payload, virDomainSnapshotObjPtr
const void *name ATTRIBUTE_UNUSED, virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots,
const void *data) 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, void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册