mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-05-06 08:49:18 +03:00
Use consistent error message in zpool sub-command
The zpool sub-commands like iostat, list, and status should display consistent message when a given pool is unavailable or no pool is present. This change unifies the default behavior as follows: root@prasad:~# ./zpool list 1 2 no pools available no pools available root@prasad:~# ./zpool iostat 1 2 no pools available no pools available root@prasad:~# ./zpool status 1 2 no pools available no pools available root@prasad:~# ./zpool list tan 1 2 cannot open 'tan': no such pool root@prasad:~# ./zpool iostat tan 1 2 cannot open 'tan': no such pool root@prasad:~# ./zpool status tan 1 2 cannot open 'tan': no such pool Reported-by: Rajshree Thorat <rthorat@stec-inc.com> Signed-off-by: Prasad Joshi <pjoshi@stec-inc.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #306
This commit is contained in:
parent
b59322a0d8
commit
5a52105925
@ -2358,42 +2358,48 @@ zpool_do_iostat(int argc, char **argv)
|
|||||||
pool_list_update(list);
|
pool_list_update(list);
|
||||||
|
|
||||||
if ((npools = pool_list_count(list)) == 0)
|
if ((npools = pool_list_count(list)) == 0)
|
||||||
break;
|
(void) printf(gettext("no pools available\n"));
|
||||||
|
else {
|
||||||
|
/*
|
||||||
|
* Refresh all statistics. This is done as an
|
||||||
|
* explicit step before calculating the maximum name
|
||||||
|
* width, so that any * configuration changes are
|
||||||
|
* properly accounted for.
|
||||||
|
*/
|
||||||
|
(void) pool_list_iter(list, B_FALSE, refresh_iostat,
|
||||||
|
&cb);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Refresh all statistics. This is done as an explicit step
|
* Iterate over all pools to determine the maximum width
|
||||||
* before calculating the maximum name width, so that any
|
* for the pool / device name column across all pools.
|
||||||
* configuration changes are properly accounted for.
|
*/
|
||||||
*/
|
cb.cb_namewidth = 0;
|
||||||
(void) pool_list_iter(list, B_FALSE, refresh_iostat, &cb);
|
(void) pool_list_iter(list, B_FALSE, get_namewidth,
|
||||||
|
&cb);
|
||||||
|
|
||||||
/*
|
if (timestamp_fmt != NODATE)
|
||||||
* Iterate over all pools to determine the maximum width
|
print_timestamp(timestamp_fmt);
|
||||||
* for the pool / device name column across all pools.
|
|
||||||
*/
|
|
||||||
cb.cb_namewidth = 0;
|
|
||||||
(void) pool_list_iter(list, B_FALSE, get_namewidth, &cb);
|
|
||||||
|
|
||||||
if (timestamp_fmt != NODATE)
|
/*
|
||||||
print_timestamp(timestamp_fmt);
|
* If it's the first time, or verbose mode, print the
|
||||||
|
* header.
|
||||||
|
*/
|
||||||
|
if (++cb.cb_iteration == 1 || verbose)
|
||||||
|
print_iostat_header(&cb);
|
||||||
|
|
||||||
/*
|
(void) pool_list_iter(list, B_FALSE, print_iostat, &cb);
|
||||||
* If it's the first time, or verbose mode, print the header.
|
|
||||||
*/
|
|
||||||
if (++cb.cb_iteration == 1 || verbose)
|
|
||||||
print_iostat_header(&cb);
|
|
||||||
|
|
||||||
(void) pool_list_iter(list, B_FALSE, print_iostat, &cb);
|
/*
|
||||||
|
* If there's more than one pool, and we're not in
|
||||||
|
* verbose mode (which prints a separator for us),
|
||||||
|
* then print a separator.
|
||||||
|
*/
|
||||||
|
if (npools > 1 && !verbose)
|
||||||
|
print_iostat_separator(&cb);
|
||||||
|
|
||||||
/*
|
if (verbose)
|
||||||
* If there's more than one pool, and we're not in verbose mode
|
(void) printf("\n");
|
||||||
* (which prints a separator for us), then print a separator.
|
}
|
||||||
*/
|
|
||||||
if (npools > 1 && !verbose)
|
|
||||||
print_iostat_separator(&cb);
|
|
||||||
|
|
||||||
if (verbose)
|
|
||||||
(void) printf("\n");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush the output so that redirection to a file isn't buffered
|
* Flush the output so that redirection to a file isn't buffered
|
||||||
@ -2592,10 +2598,12 @@ zpool_do_list(int argc, char **argv)
|
|||||||
ret = for_each_pool(argc, argv, B_TRUE, &cb.cb_proplist,
|
ret = for_each_pool(argc, argv, B_TRUE, &cb.cb_proplist,
|
||||||
list_callback, &cb);
|
list_callback, &cb);
|
||||||
|
|
||||||
if (argc == 0 && cb.cb_first && !cb.cb_scripted) {
|
if (argc == 0 && cb.cb_first)
|
||||||
(void) printf(gettext("no pools available\n"));
|
(void) printf(gettext("no pools available\n"));
|
||||||
|
else if (argc && cb.cb_first) {
|
||||||
|
/* cannot open the given pool */
|
||||||
zprop_free_list(cb.cb_proplist);
|
zprop_free_list(cb.cb_proplist);
|
||||||
return (0);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interval == 0)
|
if (interval == 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user