summaryrefslogtreecommitdiffstats
path: root/contrib/diff/lib/hard-locale.h
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2016-11-12 23:38:04 +0000
committermav <mav@FreeBSD.org>2016-11-12 23:38:04 +0000
commit23b24d7851fedef579b27b1018e8d102bbd75263 (patch)
treea8dc112e9d29e418d32597bbaabbb8048d638af9 /contrib/diff/lib/hard-locale.h
parente2eba905b0e2276576231d56b62745c1248c0fdc (diff)
downloadFreeBSD-src-23b24d7851fedef579b27b1018e8d102bbd75263.zip
FreeBSD-src-23b24d7851fedef579b27b1018e8d102bbd75263.tar.gz
MFC r308051: Matching GUIDs, handle possible race on vdev detach.
In case of vdev detach, causing top level mirror vdev destruction, leaf vdev changes its GUID to one of the destroyed mirror, that creates race condition when GUID in vdev label may not match one in the pool config. This change replicates logic nuance of vdev_validate() by adding special exception, matching the vdev GUID against the top level vdev GUID. Since this exception is not completely reliable (may give false positives if we fail to erase label on detached vdev), use it only as last resort. Quick way to reproduce this scenario now is detach vdev from a pool with enabled autoextend. During vdev detach autoextend logic tries to reopen remaining vdev, that always fails now since in-memory configuration is already updated, while on-disk labels are not yet.
Diffstat (limited to 'contrib/diff/lib/hard-locale.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud