]> xenbits.xensource.com Git - people/liuw/freebsd.git/commitdiff
Provide information about bad DVA
authorsmh <smh@FreeBSD.org>
Thu, 5 Nov 2015 17:12:41 +0000 (17:12 +0000)
committersmh <smh@FreeBSD.org>
Thu, 5 Nov 2015 17:12:41 +0000 (17:12 +0000)
Provide information about which vdev has an issue with a bad DVA.

MFC after: 1 week
Sponsored by: Multiplay

sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c

index a3945463c51a8ce6cc847e80dc36ca0282863736..026dd5015a2591f5494072a3984eff9c052984ce 100644 (file)
@@ -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;
        }