Bug #3102
closedvdev_uberblock_load() and vdev_validate() may read the wrong label
90%
Description
While running 'ztest' we occasionally hit failures that look like this:
Executing zdb -bccsv -U /tank/fs/ztest/zpool.cache ztest
zdb: can't open 'ztest': No such device or address
ztest: '/net/illumos/data/gwilson/dlpx-reguid/proto/root_i386/usr/sbin/i86/zdb
-bccsv -U /tank/fs/ztest/zpool.cache ztest' exit code 1
This happens when we find the best uberblock is on label 0 (updated in txg - 2) but the config associated with label 0 was updated in txg - 1. So the config is newer than the uberblock which should make it invalid but instead we end up using it, causing strange failure conditions.
Updated by Eric Schrock about 11 years ago
- Status changed from In Progress to Resolved
changeset: 13777:b1e53580146d
user: George Wilson <george.wilson@delphix.com>
date: Wed Aug 22 08:03:38 2012 -0700
description:
3090 vdev_reopen() during reguid causes vdev to be treated as corrupt
3102 vdev_uberblock_load() and vdev_validate() may read the wrong label
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Christopher Siden <chris.siden@delphix.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Eric Schrock <Eric.Schrock@delphix.com>