/[base]
ViewVC logotype

Revision 319268


Jump to revision: Previous Next
Author: asomers
Date: Tue May 30 22:54:52 2017 UTC (7 years, 1 month ago)
Changed paths: 2
Log Message:
MFC r318189:

vdev_geom may associate multiple vdevs per g_consumer

vdev_geom.c currently uses the g_consumer's private field to point to a
vdev_t. That way, a GEOM event can cause a change to a ZFS vdev. For
example, when you remove a disk, the vdev's status will change to REMOVED.
However, vdev_geom will sometimes attach multiple vdevs to the same GEOM
consumer. If this happens, then geom events will only be propagated to one
of the vdevs.

Fix this by storing a linked list of vdevs in g_consumer's private field.

sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c

* g_consumer.private now stores a linked list of vdev pointers associated
  with the consumer instead of just a single vdev pointer.

* Change vdev_geom_set_physpath's signature to more closely match
  vdev_geom_set_rotation_rate

* Don't bother calling g_access in vdev_geom_set_physpath. It's guaranteed
  that we've already accessed the consumer by the time we get here.

* Don't call vdev_geom_set_physpath in vdev_geom_attach. Instead, call it
  in vdev_geom_open, after we know that the open has succeeded.

PR:		218634
Reviewed by:	gibbs
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D10391


Changed paths

Path Details
Directorystable/10/ modified , props changed
Directorystable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c modified , text changed

  ViewVC Help
Powered by ViewVC 1.1.27