racing condition between vdev label and spa_last_synced_txg in vdev_validate
ztest failed with uncorrectable IO error despite having the fix for #7163. Both sides of the mirror have CANT_OPEN_BAD_LABEL, which also distinguishes it from that issue.
Definitely seems like a racing condition between the vdev_validate and spa_sync:
1. Thread A (spa_sync): vdev label is updated to latest txg
2. Thread B (vdev_validate): vdev label's txg is compared to spa_last_synced_txg and is ahead.
3. Thread A (spa_sync): spa_last_synced_txg is updated to latest txg.
Solution: do not check txg in vdev_validate unless config lock is held.
Updated by Electric Monk over 4 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit d1de72cfa29ab77ff80e2bb0e668a6afa5bccaf0 Author: Pavel Zakharov <firstname.lastname@example.org> Date: 2018-03-19T18:21:36.000Z 9187 racing condition between vdev label and spa_last_synced_txg in vdev_validate Reviewed by: George Wilson <email@example.com> Reviewed by: Matt Ahrens <firstname.lastname@example.org> Approved by: Robert Mustacchi <email@example.com>