freebsd-skq/sys/modules/geom
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
..
geom_apple
geom_bde Don't expect that 'device random' will compile in those files into the 2006-06-09 17:36:50 +00:00
geom_bsd Add geom_bsd_enc.c which we've been wanting to be in geon_bsd. 2005-09-20 11:16:05 +00:00
geom_cache A GEOM cache can speed up read performance by sending fixed size 2006-10-06 08:27:07 +00:00
geom_ccd
geom_concat
geom_eli Connect new GELI files to the build. 2006-06-05 21:42:26 +00:00
geom_fox
geom_gate
geom_gpt
geom_journal Add Makefile for geom_journal kernel module. 2006-10-31 22:21:47 +00:00
geom_label Add NTFS labeling function. 2005-08-26 11:35:10 +00:00
geom_mbr
geom_mirror
geom_multipath First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
geom_nop
geom_pc98
geom_raid3
geom_shsec
geom_stripe
geom_sunlabel
geom_uzip Add -DINVARIANT_SUPPORT -DINVARIANTS 2005-09-29 11:56:16 +00:00
geom_vinum Since we want a vinum geom created anytime the module loads, move 2005-11-24 15:11:41 +00:00
geom_vol_ffs
geom_zero Add a very simple and small GEOM class - ZERO. 2005-07-25 10:03:16 +00:00
Makefile First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
Makefile.inc