aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
diff options
context:
space:
mode:
authorSteven Hartland <smh@FreeBSD.org>2015-11-05 17:12:41 +0000
committerSteven Hartland <smh@FreeBSD.org>2015-11-05 17:12:41 +0000
commitd0d400133f27565a3195d3ddff64436d9f8deba0 (patch)
tree68939e63436daf51e615113f2cdf35e4da045b17 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
parent5608c7687f6435c9ea841dcf3458354c8843b20d (diff)
downloadsrc-d0d400133f27565a3195d3ddff64436d9f8deba0.tar.gz
src-d0d400133f27565a3195d3ddff64436d9f8deba0.zip
Provide information about bad DVA
Provide information about which vdev has an issue with a bad DVA. MFC after: 1 week Sponsored by: Multiplay
Notes
Notes: svn path=/head/; revision=290401
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
index a3945463c51a..026dd5015a25 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
@@ -1835,7 +1835,13 @@ dva_get_dsize_sync(spa_t *spa, const dva_t *dva)
ASSERT(spa_config_held(spa, SCL_ALL, RW_READER) != 0);
if (asize != 0 && spa->spa_deflate) {
- vdev_t *vd = vdev_lookup_top(spa, DVA_GET_VDEV(dva));
+ uint64_t vdev = DVA_GET_VDEV(dva);
+ vdev_t *vd = vdev_lookup_top(spa, vdev);
+ if (vd == NULL) {
+ zfs_panic_recover(
+ "dva_get_dsize_sync(): bad DVA %llu:%llu",
+ (u_longlong_t)vdev, (u_longlong_t)asize);
+ }
dsize = (asize >> SPA_MINBLOCKSHIFT) * vd->vdev_deflate_ratio;
}