vdev_reopen() during reguid causes vdev to be treated as corrupt
There is a period between the time spa_change_guid() is called and when the
labels with the new guid are synced to disk in which spa_version() and the guid in the vdev labels don't match. If vdev_reopen() is called during this time, it will call vdev_validate() which will mark the vdev as corrupt due to the vdev discrepancy.
This is pretty much guaranteed to happen if you run ztest for more than 30 minutes, which is really annoying.
Updated by Eric Schrock about 7 years ago
- Status changed from In Progress to Resolved
user: George Wilson <email@example.com>
date: Wed Aug 22 08:03:38 2012 -0700
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 <firstname.lastname@example.org>
Reviewed by: Christopher Siden <email@example.com>
Reviewed by: Garrett D'Amore <firstname.lastname@example.org>
Approved by: Eric Schrock <Eric.Schrock@delphix.com>