ztest: ztest_reguid test and ztest_fault_inject don't place nice together
zfs - Zettabyte File System
Analysis by George Wilson:
I have seen cases where the deadman timer will fire and when looking at the pool I see that the guids don't match on all devices. I suspect that a guid change occurred just as ztest_fault_inject() changed the vdev to either a closed state or not writeable. This would have caused us to skip over writing the label for that device. When the device later is reopened it will fail to join the pool because the guid does not match.
To address this we prevent ztest_fault_inject from manipulating the leaf vdev's state whenever we're going to change the guid. This will ensure that all labels get updated when the guid change runs. We also prevent spa_guid_change() and vdev_offline() from racing with each other.
Updated by Christopher Siden over 5 years ago
- Status changed from In Progress to Closed
commit 2c1e2b4 Author: George Wilson <email@example.com> Date: Wed Aug 7 11:24:34 2013 3949 ztest fault injection should avoid resilvering devices 3950 ztest: deadman fires when we're doing a scan 3951 ztest hang when running dedup test 3952 ztest: ztest_reguid test and ztest_fault_inject don't place nice together Reviewed by: Matthew Ahrens <firstname.lastname@example.org> Reviewed by: Adam Leventhal <email@example.com> Approved by: Richard Lowe <firstname.lastname@example.org>