]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
During vdev_geom_open, require that the vdev guids match the device's label
authorAlan Somers <asomers@FreeBSD.org>
Thu, 10 Dec 2015 21:46:21 +0000 (21:46 +0000)
committerAlan Somers <asomers@FreeBSD.org>
Thu, 10 Dec 2015 21:46:21 +0000 (21:46 +0000)
commit62ac7dd2bf95f6e0e16620d6c3f91ec3c83a1402
tree68f76fb5574bdf485b2c21882a05c0a9ac218371
parentb1dc5e6dde5426bf55bdec6445023db8caba4ecf
During vdev_geom_open, require that the vdev guids match the device's label
except during split, add, or create operations. This fixes a bug where the
wrong disk could be returned, and higher layers of ZFS would immediately
eject it again.

sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c:
o When opening by GUID, require both the pool and vdev GUIDs to
  match.  While it is highly unlikely for two vdevs to have the same
  vdev GUIDs, the ZFS storage pool allocator only guarantees they
  are unique within a pool.

o Modify the open behavior to:
  - If we are opening a vdev that hasn't previously been opened,
    open by path without checking GUIDs.
  - Otherwise, open by path and verify GUIDs.
  - If that fails, search all geom providers for a device with
    matching GUIDs.
  - If that fails, return ENOENT.

Submitted by: gibbs, asomers
Reviewed by: smh
MFC after: 4 weeks
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D4486
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c