diff options
author | Matt Jacob <mjacob@FreeBSD.org> | 2007-02-27 04:01:58 +0000 |
---|---|---|
committer | Matt Jacob <mjacob@FreeBSD.org> | 2007-02-27 04:01:58 +0000 |
commit | e770bc6bf54d42019e4df9dfd94622c80072c0f4 (patch) | |
tree | 3740487c6f9b60010343610543a779a7e9a63d31 /sbin/geom/class/multipath/Makefile | |
parent | 5af924bf6c8d6f687447d1558c750b96518aaeff (diff) | |
download | src-e770bc6bf54d42019e4df9dfd94622c80072c0f4.tar.gz src-e770bc6bf54d42019e4df9dfd94622c80072c0f4.zip |
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
Notes
Notes:
svn path=/head/; revision=167050
Diffstat (limited to 'sbin/geom/class/multipath/Makefile')
-rw-r--r-- | sbin/geom/class/multipath/Makefile | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sbin/geom/class/multipath/Makefile b/sbin/geom/class/multipath/Makefile new file mode 100644 index 000000000000..7b418e1f20e8 --- /dev/null +++ b/sbin/geom/class/multipath/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../misc +CLASS= multipath +NO_MAN=true + + +.include <bsd.lib.mk> + +CFLAGS+= -I${.CURDIR}/../../../../sys |