diff options
author | smh <smh@FreeBSD.org> | 2014-12-31 04:54:48 +0000 |
---|---|---|
committer | smh <smh@FreeBSD.org> | 2014-12-31 04:54:48 +0000 |
commit | 6344c4aa26b66fa5a1ad1da8261970406d1f1245 (patch) | |
tree | 5a00f6fa37a3f58c4a4b8389b667742081ef7bbc | |
parent | 128806a8151aa98ab5b9bc844a469b33bbf5aa23 (diff) | |
download | FreeBSD-src-6344c4aa26b66fa5a1ad1da8261970406d1f1245.zip FreeBSD-src-6344c4aa26b66fa5a1ad1da8261970406d1f1245.tar.gz |
Correct zpool list displaying invalid EXPANDSZ for unavailable pool vdevs
When pools are unavailable their vdevs are also unavailable which means
that vdev_max_asize remains at the default zero. This default was being
used to calculate vs_esize resulting in a negative number as vdev_asize >
vdev_max_asize, which caused zpool list -v to display 16.0E for EXPANDSZ
of these vdevs.
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c index 55070ed..dfbb92e 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c @@ -2776,7 +2776,8 @@ vdev_get_stats(vdev_t *vd, vdev_stat_t *vs) vs->vs_rsize = vdev_get_min_asize(vd); if (vd->vdev_ops->vdev_op_leaf) vs->vs_rsize += VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; - vs->vs_esize = vd->vdev_max_asize - vd->vdev_asize; + if (vd->vdev_max_asize != 0) + vs->vs_esize = vd->vdev_max_asize - vd->vdev_asize; vs->vs_configured_ashift = vd->vdev_top != NULL ? vd->vdev_top->vdev_ashift : vd->vdev_ashift; vs->vs_logical_ashift = vd->vdev_logical_ashift; |