mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-26 20:12:44 +00:00
Added output to zpool online
and offline
I was surprised to discover today that `zpool online` and `zpool offline` don't print any information about why they failed in many cases, they just return 1 with no information about why. Let's improve that where we can without changing the library function. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Allan Jude <allan@klarasystems.com> Signed-off-by: Rich Ercolani <rincebrain@gmail.com> Closes #16244
This commit is contained in:
parent
3c650bec15
commit
acb6e71eda
@ -7966,8 +7966,11 @@ zpool_do_online(int argc, char **argv)
|
||||
|
||||
poolname = argv[0];
|
||||
|
||||
if ((zhp = zpool_open(g_zfs, poolname)) == NULL)
|
||||
if ((zhp = zpool_open(g_zfs, poolname)) == NULL) {
|
||||
(void) fprintf(stderr, gettext("failed to open pool "
|
||||
"\"%s\""), poolname);
|
||||
return (1);
|
||||
}
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
vdev_state_t oldstate;
|
||||
@ -7988,12 +7991,15 @@ zpool_do_online(int argc, char **argv)
|
||||
&l2cache, NULL);
|
||||
if (tgt == NULL) {
|
||||
ret = 1;
|
||||
(void) fprintf(stderr, gettext("couldn't find device "
|
||||
"\"%s\" in pool \"%s\"\n"), argv[i], poolname);
|
||||
continue;
|
||||
}
|
||||
uint_t vsc;
|
||||
oldstate = ((vdev_stat_t *)fnvlist_lookup_uint64_array(tgt,
|
||||
ZPOOL_CONFIG_VDEV_STATS, &vsc))->vs_state;
|
||||
if (zpool_vdev_online(zhp, argv[i], flags, &newstate) == 0) {
|
||||
if ((rc = zpool_vdev_online(zhp, argv[i], flags,
|
||||
&newstate)) == 0) {
|
||||
if (newstate != VDEV_STATE_HEALTHY) {
|
||||
(void) printf(gettext("warning: device '%s' "
|
||||
"onlined, but remains in faulted state\n"),
|
||||
@ -8019,6 +8025,9 @@ zpool_do_online(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
(void) fprintf(stderr, gettext("Failed to online "
|
||||
"\"%s\" in pool \"%s\": %d\n"),
|
||||
argv[i], poolname, rc);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
@ -8103,8 +8112,11 @@ zpool_do_offline(int argc, char **argv)
|
||||
|
||||
poolname = argv[0];
|
||||
|
||||
if ((zhp = zpool_open(g_zfs, poolname)) == NULL)
|
||||
if ((zhp = zpool_open(g_zfs, poolname)) == NULL) {
|
||||
(void) fprintf(stderr, gettext("failed to open pool "
|
||||
"\"%s\""), poolname);
|
||||
return (1);
|
||||
}
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
uint64_t guid = zpool_vdev_path_to_guid(zhp, argv[i]);
|
||||
|
Loading…
Reference in New Issue
Block a user