]> xenbits.xensource.com Git - libvirt.git/commitdiff
snapshot: speed up snapshot location
authorEric Blake <eblake@redhat.com>
Wed, 24 Aug 2011 19:38:42 +0000 (13:38 -0600)
committerEric Blake <eblake@redhat.com>
Fri, 2 Sep 2011 22:03:50 +0000 (16:03 -0600)
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.

src/conf/domain_conf.c

index a55ed61785cea2279a1e6c7a249cf7e61c28195f..e031cb4cdc7133bf1e64e5155f2f6a3a328918b8 100644 (file)
@@ -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 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)
+virDomainSnapshotObjPtr
+virDomainSnapshotFindByName(const virDomainSnapshotObjListPtr snapshots,
+                            const char *name)
 {
-    return virHashSearch(snapshots->objs, virDomainSnapshotObjListSearchName, name);
+    return virHashLookup(snapshots->objs, name);
 }
 
 void virDomainSnapshotObjListRemove(virDomainSnapshotObjListPtr snapshots,