ZFS pools in "trouble"
Willem Jan Withagen
wjw at digiware.nl
Sat Mar 14 14:29:52 UTC 2020
On 14-3-2020 13:40, Peter Eriksson wrote:
> That probably corresponds to:
>
> ZPOOL_STATUS_BAD_GUID_SUM /* sum of device guids didn't match */
> (From /usr/src/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h)
>
>
> Which get set in:
> /usr/src/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c
>
> /*
> * Check that the config is complete.
> */
> if (vs->vs_state == VDEV_STATE_CANT_OPEN &&
> vs->vs_aux == VDEV_AUX_BAD_GUID_SUM)
> return (ZPOOL_STATUS_BAD_GUID_SUM);
>
>
> /usr/src/sys # find . -name '*.c' -print0 | xargs -0 fgrep
> VDEV_AUX_BAD_GUID_SUM
> ./cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c:*
> VDEV_AUX_BAD_GUID_SUM. So we pretend to succeed, knowing that we
> ./cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c:return
> (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM, ENXIO));
> ./cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c:return
> (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM,
> ./cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c:case
> VDEV_AUX_BAD_GUID_SUM:
>
>
> error = spa_check_for_missing_logs(spa);
> if (error != 0)
> return (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM, ENXIO));
>
> if (rvd->vdev_guid_sum != spa->spa_uberblock.ub_guid_sum) {
> spa_load_failed(spa, "uberblock guid sum doesn't match
> MOS "
> "guid sum (%llu != %llu)",
> (u_longlong_t)spa->spa_uberblock.ub_guid_sum,
> (u_longlong_t)rvd->vdev_guid_sum);
> return (spa_vdev_err(rvd, VDEV_AUX_BAD_GUID_SUM,
> ENXIO));
> }
>
>
> Missing the logs perhaps?
Right that is the case here, but I was led to believe that a log failure
no longer would spell desaster
on the vdev???
But clearly it does in this case....
--WjW
More information about the freebsd-fs
mailing list