Alternatively, a
.B device
-line can contain either of both of the words
+line can contain either or both of the words
.B containers
and
.BR partitions .
.I mdadm
to look for assembled CONTAINER arrays and included them as a source
for assembling further arrays.
-.PP
+
The word
.I partitions
will cause
.br
DEV /dev/sd*
.br
-DEVICE /dev/discs/disc*/disc
+DEVICE /dev/disk/by-path/pci*
.br
DEVICE partitions
If no device name is given,
.I mdadm
will use various heuristics to determine an appropriate name.
-.PP
+
Subsequent words identify the array, or identify the array as a member
of a group. If multiple identities are given,
then a component device must match ALL identities to be considered a
match. Each identity word has a tag, and equals sign, and some value.
The tags are:
-
.RS 4
.TP
.B uuid=
.TP
.B spares=
The value is a number of spare devices to expect the array to have.
+The sole use of this keyword and value is as follows:
.B mdadm \-\-monitor
will report an array if it is found to have fewer than this number of
spares when
value given can be either a path name in /dev, or a UUID of the
container array.
-.IP
+.TP
.B member=
Specify that this array is a member array of some container. Each
type of container has some way to enumerate member arrays, often a
simple sequence number. The value identifies which member of a
-container the array is. It will usually accompany a 'container=' word.
+container the array is. It will usually accompany a "container=" word.
.RE
.TP
The
.B homehost
line gives a default value for the
-.B --homehost=
-option to mdadm. There should be exactly one other word on the line.
+.B \-\-homehost=
+option to mdadm. There should normally be only one other word on the line.
It should either be a host name, or one of the special words
-.B <system>
+.BR <system>,
+.B <none>
and
.BR <ignore> .
If
.B <system>
is given, then the
.BR gethostname ( 2 )
-systemcall is used to get the host name.
+systemcall is used to get the host name. This is the default.
If
.B <ignore>
is given, then a flag is set so that when arrays are being
-auto-assemble the checking of the recorded
+auto-assembled the checking of the recorded
.I homehost
is disabled.
+If
+.B <ignore>
+is given it is also possible to give an explicit name which will be
+used when creating arrays. This is the only case when there can be
+more that one other word on the
+.B HOMEHOST
+line.
+
+If
+.B <none>
+is given, then the default of using
+.BR gethostname ( 2 )
+is over-ridden and no homehost name is assumed.
When arrays are created, this host name will be stored in the
metadata. When arrays are assembled using auto-assembly, arrays which
do not record the correct homehost name in their metadata will be
-assembled using a 'foreign' name. A 'foreign' name alway ends with a
-digit string (possibly preceded by an underscore) to differentiate it
+assembled using a "foreign" name. A "foreign" name alway ends with a
+digit string preceded by an underscore to differentiate it
from any possible local name. e.g.
.B /dev/md/1_1
or
-.BR /dev/md/home0 .
+.BR /dev/md/home_0 .
.TP
.B AUTO
A list of names of metadata format can be given, each preceded by a
plus or minus sign. Also the word
+.I homehost
+is allowed as is
+.I all
+preceded by plus or minus sign.
.I all
-preceded by plus or minus is allowed and is usually last.
+is usually last.
When
.I mdadm
-is auto-assembling an array, with via
-.I --assemble
+is auto-assembling an array, either via
+.I \-\-assemble
or
-.I --incremental
+.I \-\-incremental
and it finds metadata of a given type, it checks that metadata type
against those listed in this line. The first match wins, where
.I all
auto assembly is disallowed. If no match is found, the auto assembly
is allowed.
+If the metadata indicates that the array was created for
+.I this
+host, and the word
+.I homehost
+appears before any other match, then the array is treated as a valid
+candidate for auto-assembly.
+
This can be used to disable all auto-assembly (so that only arrays
explicitly listed in mdadm.conf or on the command line are assembled),
or to disable assembly of certain metadata types which might be
-handled by other software.
+handled by other software. It can also be used to disable assembly of
+all foreign arrays - normally such arrays are assembled but given a
+non-deterministic name in
+.BR /dev/md/ .
The known metadata types are
.BR 0.90 ,
.BR ddf ,
.BR imsm .
+.TP
+.B POLICY
+This is used to specify what automatic behavior is allowed on devices
+newly appearing in the system and provides a way of marking spares that can
+be moved to other arrays as well as the migration domains.
+.I Domain
+can be defined through
+.I policy
+line by specifying a domain name for a number of paths from
+.BR /dev/disk/by-path/ .
+A device may belong to several domains. The domain of an array is a union
+of domains of all devices in that array. A spare can be automatically
+moved from one array to another if the set of the destination array's
+.I domains
+ppcontains all the
+.I domains
+of the new disk or if both arrays have the same
+.IR spare-group .
+
+To update hot plug configuration it is necessary to execute
+.B mdadm \-\-udev\-rules
+command after changing the config file
+
+Key words used in the
+.I POLICY
+line and supported values are:
+
+.RS 7
+.TP
+.B domain=
+any arbitrary string
+.TP
+.B metadata=
+0.9 1.x ddf or imsm
+.TP
+.B path=
+file glob matching anything from
+.B /dev/disk/by-path
+.TP
+.B type=
+either
+.B disk
+or
+.BR part .
+.TP
+.B action=
+include, re-add, spare, spare-same-slot, or force-spare
+.B auto=
+yes, no, or homehost.
+
+.P
+The
+.I action
+item determines the automatic behavior allowed for devices matching the
+.I path
+and
+.I type
+in the same line. If a device matches several lines with different
+.I actions
+then the most permissive will apply. The ordering of policy lines
+is irrelevant to the end result.
+.TP
+.B include
+allows adding a disk to an array if metadata on that disk matches that array
+.TP
+.B re\-add
+will include the device in the array if it appears to be a current member
+or a member that was recently removed and the array has a
+write-intent-bitmap to allow the
+.B re\-add
+functionality.
+.TP
+.B spare
+as above and additionally: if the device is bare it can
+become a spare if there is any array that it is a candidate for based
+on domains and metadata.
+.TP
+.B spare\-same\-slot
+as above and additionally if given slot was used by an array that went
+degraded recently and the device plugged in has no metadata then it will
+be automatically added to that array (or it's container)
+.TP
+.B force\-spare
+as above and the disk will become a spare in remaining cases
+.RE
+
.SH EXAMPLE
DEVICE /dev/sd[bcdjkl]1
.br
ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b
.br
auto=part
-
+.br
+POLICY domain=domain1 metadata=imsm path=pci-0000:00:1f.2-scsi-*
+.br
+ action=spare
+.br
+POLICY domain=domain1 metadata=imsm path=pci-0000:04:00.0-scsi-[01]*
+.br
+ action=include
+.br
+# One domain comprising of devices attached to specified paths is defined.
+.br
+# Bare device matching first path will be made an imsm spare on hot plug.
+.br
+# If more than one array is created on devices belonging to domain1 and
+.br
+# one of them becomes degraded, then any imsm spare matching any path for
+.br
+# given domain name can be migrated.
+.br
MAILADDR root@mydomain.tld
.br
PROGRAM /usr/sbin/handle\-mdadm\-events
.br
HOMEHOST <system>
.br
-AUTO +1.x -all
+AUTO +1.x homehost \-all
.SH SEE ALSO
.BR mdadm (8),