Illumos 5438 - zfs_blkptr_verify should continue after zfs_panic_recover

5438 zfs_blkptr_verify should continue after zfs_panic_recover
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george@delphix.com>
Reviewed by: Xin LI <delphij@freebsd.org>
Approved by: Dan McDonald <danmcd@omniti.com>

References:
  https://www.illumos.org/issues/5438
  https://github.com/illumos/illumos-gate/commit/5897eb4

Ported-by: kernelOfTruth kerneloftruth@gmail.com
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
Justin Gibbs 2016-01-09 18:29:05 +01:00 committed by Brian Behlendorf
parent fc581e0507
commit ee3a23b84e

View File

@ -679,18 +679,20 @@ zfs_blkptr_verify(spa_t *spa, const blkptr_t *bp)
zfs_panic_recover("blkptr at %p DVA %u has invalid " zfs_panic_recover("blkptr at %p DVA %u has invalid "
"VDEV %llu", "VDEV %llu",
bp, i, (longlong_t)vdevid); bp, i, (longlong_t)vdevid);
continue;
} }
vd = spa->spa_root_vdev->vdev_child[vdevid]; vd = spa->spa_root_vdev->vdev_child[vdevid];
if (vd == NULL) { if (vd == NULL) {
zfs_panic_recover("blkptr at %p DVA %u has invalid " zfs_panic_recover("blkptr at %p DVA %u has invalid "
"VDEV %llu", "VDEV %llu",
bp, i, (longlong_t)vdevid); bp, i, (longlong_t)vdevid);
continue;
} }
if (vd->vdev_ops == &vdev_hole_ops) { if (vd->vdev_ops == &vdev_hole_ops) {
zfs_panic_recover("blkptr at %p DVA %u has hole " zfs_panic_recover("blkptr at %p DVA %u has hole "
"VDEV %llu", "VDEV %llu",
bp, i, (longlong_t)vdevid); bp, i, (longlong_t)vdevid);
continue;
} }
if (vd->vdev_ops == &vdev_missing_ops) { if (vd->vdev_ops == &vdev_missing_ops) {
/* /*