diff options
author | smh <smh@FreeBSD.org> | 2015-11-05 17:12:41 +0000 |
---|---|---|
committer | smh <smh@FreeBSD.org> | 2015-11-05 17:12:41 +0000 |
commit | 357c5a95401459aa8af4dc417eb6e73394c7e254 (patch) | |
tree | 68939e63436daf51e615113f2cdf35e4da045b17 | |
parent | 7bbb1b6c519474baf628ae6630116ea12302f8c8 (diff) | |
download | FreeBSD-src-357c5a95401459aa8af4dc417eb6e73394c7e254.zip FreeBSD-src-357c5a95401459aa8af4dc417eb6e73394c7e254.tar.gz |
Provide information about bad DVA
Provide information about which vdev has an issue with a bad DVA.
MFC after: 1 week
Sponsored by: Multiplay
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c | 8 |
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 a394546..026dd50 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; } |