]> git.proxmox.com Git - mirror_zfs.git/commit
OpenZFS 9187 - racing condition between vdev label and spa_last_synced_txg in vdev_va...
authorPavel Zakharov <pavel.zakharov@delphix.com>
Wed, 19 Oct 2016 21:46:08 +0000 (17:46 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 14 May 2018 18:28:09 +0000 (14:28 -0400)
commita11c7aaec9c10f22f3259545e2697005cfd19863
tree424c4681d9ffb85cd86bf5a011c8b0b446ccb9ba
parentb669ab83bb3636e86b8fda271ee1549f2692d03a
OpenZFS 9187 - 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.

Authored by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matt Ahrens <matthew.ahrens@delphix.com>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Approved by: Robert Mustacchi <rm@joyent.com>
Ported-by: Brian Behlendorf <behlendorf1@llnl.gov>
OpenZFS-issue: https://illumos.org/issues/9187
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/805fda72
Closes #7529
module/zfs/vdev.c