freebsd-nq/sys
Matt Jacob e770bc6bf5 First cut at GEOM based multipath. This is an active/passive{/passive...}
arrangement that has no intrinsic internal knowledge of whether devices
it is given are truly multipath devices. As such, this is a simplistic
approach, but still a useful one.

The basic approach is to (at present- this will change soon) use camcontrol
to find likely identical devices and and label the trailing sector of the
first one. This label contains both a full UUID and a name. The name is
what is presented in /dev/multipath, but the UUID is used as a true
distinguishor at g_taste time, thus making sure we don't have chaos
on a shared SAN where everyone names their data multipath as "Fred".

The first of N identical devices (and N *may* be 1!) becomes the active
path until a BIO request is failed with EIO or ENXIO. When this occurs,
the active disk is ripped away and the next in a list is picked to
(retry and) continue with.

During g_taste events new disks that meet the match criteria for existing
multipath geoms get added to the tail end of the list.

Thus, this active/passive setup actually does work for devices which
go away and come back, as do (now) mpt(4) and isp(4) SAN based disks.

There is still a lot to do to improve this- like about 5 of the 12
recommendations I've received about it,  but it's been functional enough
for a while that it deserves a broader test base.

Reviewed by: pjd
Sponsored by: IronPort Systems
MFC: 2 months
2007-02-27 04:01:58 +00:00
..
amd64 MFP4: 115094 2007-02-27 02:08:01 +00:00
arm Remove unused header file <machine/katelib.h> 2007-02-26 05:17:47 +00:00
boot Fix the cdboot twiddle display. 2007-02-23 21:07:44 +00:00
bsm
cam Add an xpt_rescan function and a thread that will field 2007-02-23 05:47:36 +00:00
coda
compat MFp4 (110541): 2007-02-25 12:43:07 +00:00
conf First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
contrib o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
crypto
ddb
dev Rework EC I/O approach. Implement burst mode, including proper handling of 2007-02-27 00:14:20 +00:00
fs Check that the error returned by vfs_getopts() is not ENOENT before assuming 2007-02-21 00:30:09 +00:00
gdb
geom First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
gnu
i4b o break newbus api: add a new argument of type driver_filter_t to 2007-02-24 02:28:07 +00:00
i386 MFP4: 115094 2007-02-27 02:08:01 +00:00
ia64 Updated ia64 isa support with the new bus_setup_intr() syntax. 2007-02-24 16:56:22 +00:00
isa o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
kern Revise locking strategy used for UNIX domain sockets in order to improve 2007-02-26 20:47:52 +00:00
libkern
modules First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
net Add three new ioctl(2) commands for bpf(4). 2007-02-26 22:24:14 +00:00
net80211
netatalk Use privilege PRIV_NET_ADDIFADDR rather than suser() to authorize 2007-02-19 22:40:02 +00:00
netatm
netgraph o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
netinet Reap FIN_WAIT_2 connections marked SOCANTRCVMORE faster. This mitigate 2007-02-26 22:25:21 +00:00
netinet6 Fix tinderbox. ip6_mrouter should be defined in raw_ip6.c as it is 2007-02-24 21:09:35 +00:00
netipsec
netipx Build ipx_ip.c only if options IPXIP is defined. No functional change. 2007-02-26 11:55:34 +00:00
netkey
netnatm
netncp
netsmb
nfs
nfs4client
nfsclient Backing out an earlier change. It seems harmless for NFS to miss the "force 2007-02-16 03:46:55 +00:00
nfsserver
opencrypto
pc98 Garbage collect a reference to INTR_FAST. 2007-02-25 14:53:55 +00:00
pccard
pci Convert sis(4) to use its own watchdog procedure. 2007-02-24 14:27:36 +00:00
powerpc Catch up with bus_setup_intr() modification and garbage collect a 2007-02-25 15:04:08 +00:00
rpc
security More unnecessary include reduction. 2007-02-23 14:39:04 +00:00
sparc64 Use uma_set_align(). 2007-02-25 10:52:47 +00:00
sun4v o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
sys Replace spaces with tabs in some places. 2007-02-27 01:48:58 +00:00
tools
ufs Account for di_blocks allocations when IN_SPACECOUNTED is set in an 2007-02-23 20:23:35 +00:00
vm Change the way that unmanaged pages are created. Specifically, 2007-02-25 06:14:58 +00:00
Makefile