]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFV r329766: 8962 zdb should work on non-idle pools
authorAlexander Motin <mav@FreeBSD.org>
Thu, 22 Feb 2018 00:42:12 +0000 (00:42 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Thu, 22 Feb 2018 00:42:12 +0000 (00:42 +0000)
commit502d18a8f1875ce6bd175e6c46e7c125e0e1847e
treea474ebfba85d13520c73de37df229bf500ea1cbc
parent4f8666989a25fdd997e987981c3f8a5440f5fa8a
parent38fc65e02783418319af282674409119a60ec6c5
MFV r329766: 8962 zdb should work on non-idle pools

illumos/illumos-gate@e144c4e6c90e7d4dccaad6db660ee42b6e7ba04f

Currently `zdb` consistently fails to examine non-idle pools as it fails
during the `spa_load()` process. The main problem seems to be that
`spa_load_verify()` fails as can be seen below:

$ sudo zdb -d -G dcenter
    zdb: can't open 'dcenter': I/O error

ZFS_DBGMSG(zdb):
    spa_open_common: opening dcenter
    spa_load(dcenter): LOADING
    disk vdev '/dev/dsk/c4t11d0s0': best uberblock found for spa dcenter. txg 40824950
    spa_load(dcenter): using uberblock with txg=40824950
    spa_load(dcenter): UNLOADING
    spa_load(dcenter): RELOADING
    spa_load(dcenter): LOADING
    disk vdev '/dev/dsk/c3t10d0s0': best uberblock found for spa dcenter. txg 40824952
    spa_load(dcenter): using uberblock with txg=40824952
    spa_load(dcenter): FAILED: spa_load_verify failed [error=5]
    spa_load(dcenter): UNLOADING

This change makes `spa_load_verify()` a dryrun when ran from `zdb`. This is
done by creating a global flag in zfs and then setting it in `zdb`.

Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Andy Stormont <astormont@racktopsystems.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Author: Pavel Zakharov <pavel.zakharov@delphix.com>
cddl/contrib/opensolaris/cmd/zdb/zdb.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c