]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit - contrib/unbound/libunbound/python/examples/async-lookup.py
MFV 331702:
authorAlexander Motin <mav@FreeBSD.org>
Wed, 28 Mar 2018 22:07:31 +0000 (22:07 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Wed, 28 Mar 2018 22:07:31 +0000 (22:07 +0000)
commit2221f0d8aff65a12d7992e58458fa8e263e1d80b
tree32a588460d53e78a015f0858c34d5600d969d9e3
parent0b0c76bc58f1ea92571ef1c9ec7596459426ec31
parent64f15aa65b2472e88fa91e975c82113421d5e196
MFV 331702:
9187 racing condition between vdev label and spa_last_synced_txg in vdev_validate

illumos/illumos-gate@d1de72cfa29ab77ff80e2bb0e668a6afa5bccaf0

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.

Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matt Ahrens <matthew.ahrens@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Pavel Zakharov <pavel.zakharov@delphix.com>
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c