]> granicus.if.org Git - zfs/commitdiff
Illumos 5135 - zpool_find_import_cached() can use fnvlist_*
authorMatthew Ahrens <mahrens@delphix.com>
Fri, 12 Sep 2014 16:26:53 +0000 (18:26 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 23 Sep 2014 18:44:29 +0000 (11:44 -0700)
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: Max Grossman <max.grossman@delphix.com>
Reviewed by: Richard Elling <richard.elling@gmail.com>
Approved by: Dan McDonald <danmcd@omniti.com>

References:
  https://www.illumos.org/issues/5135
  https://github.com/illumos/illumos-gate/commit/b18d6b0

Ported by: Turbo Fredriksson <turbo@bayour.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2693

lib/libzfs/libzfs_import.c

index 8afe77af398b7ce5f49300a61e40f2e26f2ff37d..e71cbb86b2fa0620cbfd3abbac0f26117aee056c 100644 (file)
@@ -1312,21 +1312,15 @@ zpool_find_import_cached(libzfs_handle_t *hdl, const char *cachefile,
 
        elem = NULL;
        while ((elem = nvlist_next_nvpair(raw, elem)) != NULL) {
-               verify(nvpair_value_nvlist(elem, &src) == 0);
+               src = fnvpair_value_nvlist(elem);
 
-               verify(nvlist_lookup_string(src, ZPOOL_CONFIG_POOL_NAME,
-                   &name) == 0);
+               name = fnvlist_lookup_string(src, ZPOOL_CONFIG_POOL_NAME);
                if (poolname != NULL && strcmp(poolname, name) != 0)
                        continue;
 
-               verify(nvlist_lookup_uint64(src, ZPOOL_CONFIG_POOL_GUID,
-                   &this_guid) == 0);
-               if (guid != 0) {
-                       verify(nvlist_lookup_uint64(src, ZPOOL_CONFIG_POOL_GUID,
-                           &this_guid) == 0);
-                       if (guid != this_guid)
-                               continue;
-               }
+               this_guid = fnvlist_lookup_uint64(src, ZPOOL_CONFIG_POOL_GUID);
+               if (guid != 0 && guid != this_guid)
+                       continue;
 
                if (pool_active(hdl, name, this_guid, &active) != 0) {
                        nvlist_free(raw);