diff options
author | gibbs <gibbs@FreeBSD.org> | 2011-07-18 03:00:59 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 2011-07-18 03:00:59 +0000 |
commit | da7ee096965f766e81ea6f096dec8c067eba301e (patch) | |
tree | 97719ff6d34db2b829827483a4de542fe8c2c88b /cddl/contrib/opensolaris/cmd/zpool | |
parent | 122ada4e73084e51013b07a37b42b2bd1862ada7 (diff) | |
download | FreeBSD-src-da7ee096965f766e81ea6f096dec8c067eba301e.zip FreeBSD-src-da7ee096965f766e81ea6f096dec8c067eba301e.tar.gz |
Correct reporting of missing leaf vdevs so that the GUID required to
perform pool actions is always displayed.
cddl/contrib/opensolaris/cmd/zpool/zpool_main.c:
The "zpool status" command reports the "last seen at"
device node path when the vdev name is being reported
by GUID. Augment this code to assume a GUID is reported
when a device goes missing after initial boot in addition
to the previous behavior of doing this for devices that
aren't seen at boot.
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c:
In zpool_vdev_name(), report recently missing devices
by GUID. There is no guarantee they will return at
their previous location.
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/zpool')
-rw-r--r-- | cddl/contrib/opensolaris/cmd/zpool/zpool_main.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c index 5e63bcd..4a3c8cc 100644 --- a/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c +++ b/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c @@ -1084,10 +1084,11 @@ print_status_config(zpool_handle_t *zhp, const char *name, nvlist_t *nv, } if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, - ¬present) == 0) { + ¬present) == 0 || + vs->vs_state <= VDEV_STATE_CANT_OPEN) { char *path; - verify(nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0); - (void) printf(" was %s", path); + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) + (void) printf(" was %s", path); } else if (vs->vs_aux != 0) { (void) printf(" "); |