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
..
2004-08-30 03:35:17 +00:00
2006-10-15 14:22:14 +00:00
2006-07-27 19:12:49 +00:00
2006-03-11 08:42:08 +00:00
2005-02-25 06:59:56 +00:00
2004-08-16 15:24:03 +00:00
2006-03-16 15:18:17 +00:00
2006-03-16 15:18:17 +00:00
2004-09-04 03:32:15 +00:00
2005-10-18 06:11:08 +00:00
2004-10-13 05:41:09 +00:00
2006-02-26 17:51:22 +00:00
2005-10-05 05:26:03 +00:00
2006-07-27 19:12:49 +00:00
2006-11-11 15:02:04 +00:00
2006-02-17 10:52:59 +00:00
2004-12-29 08:44:30 +00:00
2006-09-22 22:11:29 +00:00
2006-08-26 18:40:25 +00:00
2006-03-12 19:06:06 +00:00
2006-12-13 02:37:48 +00:00
2005-02-03 23:01:01 +00:00
2005-09-20 06:48:55 +00:00
2005-05-10 12:02:18 +00:00
2006-10-29 17:23:54 +00:00
2006-06-18 05:04:42 +00:00
2005-03-14 16:04:27 +00:00
2005-09-19 10:14:05 +00:00
2006-07-25 00:45:55 +00:00
2005-02-09 08:35:24 +00:00
2006-02-18 23:49:28 +00:00
2005-08-10 04:01:21 +00:00
2006-11-26 22:23:30 +00:00