diff options
author | Brian Behlendorf <[email protected]> | 2014-10-30 13:17:33 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-01-28 11:12:31 -0800 |
commit | 6466b61db6b4def6b077882ebbd4c3e83e917613 (patch) | |
tree | a245c9cd08db4c8fb33fae93580f684e7a650954 | |
parent | a485efc4cd7589ec7993aee4b0746a05f42409d5 (diff) |
Make `zpool import -d|-c` behave consistently
When importing pools with zpool import -aN there is inconsistent
behavior between '-d /dev/disk/by-id' (or another path) and
'-c /etc/zfs/zpool.cache'.
The difference in behavior is caused by zpool_find_import_cached()
returning an empty nvlist_t when there are no pools to import but
zpool_find_import_impl() returns NULL for the same situation. The
behavior of zpool_find_import_cached() is arguably more correct
because it allows returning NULL to be used for an error case and
not an empty set.
This change resolves the issue by updating get_configs() such that
it returns an empty set instead of NULL when no config is found.
The updated behavior will now always return 0 for this case.
$ zpool import -aN; echo $?
no pools available to import
0
$ zpool import -aN -d /var/tmp/; echo $?
no pools available to import
0
$ zpool import -aN -c /etc/zfs/zpool.cache; echo $?
no pools available to import
0
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #2080
-rw-r--r-- | lib/libzfs/libzfs_import.c | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/lib/libzfs/libzfs_import.c b/lib/libzfs/libzfs_import.c index e71cbb86b..301b08883 100644 --- a/lib/libzfs/libzfs_import.c +++ b/lib/libzfs/libzfs_import.c @@ -444,7 +444,6 @@ get_configs(libzfs_handle_t *hdl, pool_list_t *pl, boolean_t active_ok) boolean_t isactive; uint64_t hostid; nvlist_t *nvl; - boolean_t found_one = B_FALSE; boolean_t valid_top_config = B_FALSE; if (nvlist_alloc(&ret, 0, 0) != 0) @@ -813,16 +812,10 @@ add_pool: if (nvlist_add_nvlist(ret, name, config) != 0) goto nomem; - found_one = B_TRUE; nvlist_free(config); config = NULL; } - if (!found_one) { - nvlist_free(ret); - ret = NULL; - } - return (ret); nomem: |