so the array devices with 'standard' names
get created automatically, as this is almost always what is wanted.
missing devices.
- Support --update=devicesize for cases where the underlying device
can change size.
missing devices.
- Support --update=devicesize for cases where the underlying device
can change size.
+ - Default to --auto=yes so the array devices with 'standard' names
+ get created automatically, as this is almost always what is wanted.
Changes Prior to 2.5.6 release
- Fix bug which meant "bitmap=xxx" in mdadm.conf was not handled
Changes Prior to 2.5.6 release
- Fix bug which meant "bitmap=xxx" in mdadm.conf was not handled
}
struct createinfo createinfo = {
}
struct createinfo createinfo = {
+ .autof = 2, /* by default, create devices with standard names */
.symlinks = 1,
#ifdef DEBIAN
.gid = 6, /* disk */
.symlinks = 1,
#ifdef DEBIAN
.gid = 6, /* disk */
The argument can also come immediately after
"-a". e.g. "-ap".
The argument can also come immediately after
"-a". e.g. "-ap".
+If --auto is not given on the command line or in the config file, then
+the default will be
+.BR --auto=yes .
+
If
.I --scan
is also given, then any
If
.I --scan
is also given, then any
-If an
-.B auto
-option is given, either on the command line (--auto) or in the
-configuration file (e.g. auto=part), then
-.I mdadm
-will create the md device if necessary or will re-create it if it
-doesn't look usable as it is.
+If the md device does not exist, then it will be created providing the
+intent is clear. i.e. the name must be in a standard form, or the
+.I --auto
+option must be given to clarify how and whether the device should be
+created.
This can be useful for handling partitioned devices (which don't have
a stable device number - it can change after a reboot) and when using
This can be useful for handling partitioned devices (which don't have
a stable device number - it can change after a reboot) and when using
- if (autof == 2 && stb.st_mode == 0 && !is_standard(dev, NULL)) {
- fprintf(stderr, Name ": --auto=yes requires a 'standard' md device name, not %s\n", dev);
- return -1;
- }
/* check major number is correct */
num = -1;
std = is_standard(dev, &num);
/* check major number is correct */
num = -1;
std = is_standard(dev, &num);
switch(autof) {
case 2: /* only create is_standard names */
if (!std && !stb.st_mode) {
switch(autof) {
case 2: /* only create is_standard names */
if (!std && !stb.st_mode) {
- fprintf(stderr, Name ": --auto=yes requires a 'standard' md device name, not %s\n", dev);
+ fprintf(stderr, Name
+ ": %s does not exist and is not a 'standard' name "
+ "so it cannot be created\n", dev);
return -1;
}
break;
case 3: /* create md, reject std>0 */
if (std > 0) {
return -1;
}
break;
case 3: /* create md, reject std>0 */
if (std > 0) {
- fprintf(stderr, Name ": that --auto option not compatable with device named %s\n", dev);
+ fprintf(stderr, Name ": that --auto option "
+ "not compatable with device named %s\n", dev);
return -1;
}
break;
case 4: /* create mdp, reject std<0 */
if (std < 0) {
return -1;
}
break;
case 4: /* create mdp, reject std<0 */
if (std < 0) {
- fprintf(stderr, Name ": that --auto option not compatable with device named %s\n", dev);
+ fprintf(stderr, Name ": that --auto option "
+ "not compatable with device named %s\n", dev);