freebsd-dev/etc/mtree
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
..
BIND.chroot.dist Create a separate directory for dynamic zones which is owned by the bind 2004-11-04 05:24:29 +00:00
BIND.include.dist Seperate out the optional parts of the include tree that are 2004-09-27 08:16:29 +00:00
BSD.include.dist First cut at GEOM based multipath. This is an active/passive{/passive...} 2007-02-27 04:01:58 +00:00
BSD.local.dist Back out 1.120, it was premature. 2006-11-12 12:02:34 +00:00
BSD.release.dist
BSD.root.dist Add a /media to FreeBSD. /media is a directory designed to contain 2006-05-10 18:53:15 +00:00
BSD.sendmail.dist Scheduled sweep using the README guidelines. 2003-11-29 18:22:01 +00:00
BSD.usr.dist Move npe.4 to a machine specific manpage subdirectory. 2006-12-05 16:57:10 +00:00
BSD.var.dist Add FreeBSD Update 2.0 client code. The build code is in the projects 2006-08-31 09:51:34 +00:00
BSD.x11-4.dist Add missing libdata/ldconfig[32] entries. 2006-03-14 18:23:35 +00:00
BSD.x11.dist Add a mechanism to include files added by ports which contain 2006-01-08 10:15:31 +00:00
Makefile Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
README Sigh, this README is not a shell script. 2002-05-18 12:37:19 +00:00

$FreeBSD$

Note: If you modify these files, please keep hier(7) updated!

These files are used to create empty file hierarchies for building the
system into.  Some notes about working with them are placed here to try
and keep them in good working order.

    a)  The files use 4 space indentation, and other than in the header
        comments, should not contain any tabs.  An indentation of 4 is
        preferable to the standard indentation of 8 because the indentation
        of levels in these files can become quite deep causing the line to
        overflow 80 characters.

        This also matches with the files generated when using the
        mtree -c option, which was implemented that way for the same reason.

    b)  Only directories should be listed here.

    c)  The listing should be kept in filename sorted order.

    d)  Sanity checking changes to these files can be done by following
        this procedure (the sed -e is ugly, but fixing mtree -c to
        not emit the trailing white space would be even uglier):

            mkdir /tmp/MTREE
            mtree -deU -f BSD.X.dist -p /tmp/MTREE
            mtree -cdin -k uname,gname,mode -p /tmp/MTREE | \
		sed -e 's/ *$//' | tail +5 >BSD.X.new
            diff -u BSD.X.dist BSD.X.new
            rm -r /tmp/MTREE

        Note that you will get some differences about /set lines,
        and uname= gname= on certain directory areas, mainly man page
        sections.  This is caused by mtree not having a look ahead
        mechanism for making better selections for these as it
        traverses the hierarchy.

        The BSD.X.new file should NOT be commited, will be missing the
        correct header, and important keywords like ``nochange''.  Simply
        use the diff for a sanity check to make sure things are in the
        correct order and correctly indented.

    e)  Further sanity checking of the system builds with DESTDIR=/someplace
        are more complicated, but can often catch missing entries in these
        files.  I tend to run this more complete sanity check shortly after
        the target date for a new release is announced.

        If you want details on it bug me about it via email to
        rgrimes@FreeBSD.org.