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 Merge OpenBSM 1.0 alpha 12 import changes into src/sys/bsm. New events 2006-09-25 12:22:07 +00:00
cam Add an xpt_rescan function and a thread that will field 2007-02-23 05:47:36 +00:00
coda coda_vptofh is never defined nor used. 2007-02-02 15:47:28 +00:00
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 Initialize T1 to silent gcc warning. 2006-10-22 02:19:33 +00:00
ddb Use FOREACH_PROC_IN_SYSTEM instead of using its unrolled form. 2007-01-17 15:05:52 +00:00
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 Move vnode-to-file-handle translation from vfs_vptofh to vop_vptofh method. 2007-02-15 22:08:35 +00:00
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 clear/reclaim challenge text when switching auth mode and operating as an ap 2007-02-04 05:49:16 +00:00
netatalk Use privilege PRIV_NET_ADDIFADDR rather than suser() to authorize 2007-02-19 22:40:02 +00:00
netatm Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
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 s,#if INET6,#ifdef INET6, 2006-12-14 17:33:46 +00:00
netipx Build ipx_ip.c only if options IPXIP is defined. No functional change. 2007-02-26 11:55:34 +00:00
netkey
netnatm Factor out my copyrights + licenses from Charles D. Cranor and 2007-01-08 22:30:39 +00:00
netncp Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
netsmb Backing out the wrong fix which could possibly trash the memory if devfs 2007-02-09 17:22:10 +00:00
nfs NFSv4 client: 2006-11-28 19:33:28 +00:00
nfs4client Rename some functions and variables from nfs_* to nfs4_* to avoid 2007-01-25 14:33:13 +00:00
nfsclient Backing out an earlier change. It seems harmless for NFS to miss the "force 2007-02-16 03:46:55 +00:00
nfsserver Move vnode-to-file-handle translation from vfs_vptofh to vop_vptofh method. 2007-02-15 22:08:35 +00:00
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 Cleanup and document the implementation of firmware(9) based on 2007-02-15 17:21:31 +00:00
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 o Add cam to a list of cscope dirs. 2006-11-26 18:27:16 +00:00