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