Change handling of devices names in args
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
This commit is contained in:
parent
a0ef61bfad
commit
0320ea4565
|
@ -16,6 +16,10 @@ Changes Prior to 1.9.0 release
|
|||
- Make "mdadm -Ss" stop stacked devices properly, by reversing the
|
||||
order in which arrays are stopped.
|
||||
- Improve some error messages.
|
||||
- Allow device name to appear before first option, so e.g.
|
||||
mdadm /dev/md0 -A /dev/sd[ab]
|
||||
works.
|
||||
- Assume '-Q' if just a device is given, rather than being silent.
|
||||
|
||||
Changes Prior to 1.8.0 release
|
||||
- Makefile cleanup from Luca Berra <bluca@comedia.it>
|
||||
|
|
2
Query.c
2
Query.c
|
@ -124,7 +124,7 @@ int Query(char *dev)
|
|||
/* array might be active... */
|
||||
mddev = get_md_name(super.md_minor);
|
||||
disc.number = super.this_disk.number;
|
||||
activity = "inactive";
|
||||
activity = "undetected";
|
||||
if (mddev && (fd = open(mddev, O_RDONLY))>=0) {
|
||||
if (md_get_version(fd) >= 9000 &&
|
||||
ioctl(fd, GET_ARRAY_INFO, &array)>= 0) {
|
||||
|
|
37
mdadm.c
37
mdadm.c
|
@ -145,7 +145,8 @@ int main(int argc, char *argv[])
|
|||
case 'a':
|
||||
case 'r':
|
||||
case 'f':
|
||||
case 1 : if (!mode) newmode = MANAGE; break;
|
||||
if (!mode) newmode = MANAGE;
|
||||
break;
|
||||
|
||||
case 'A': newmode = ASSEMBLE; break;
|
||||
case 'B': newmode = BUILD; break;
|
||||
|
@ -186,11 +187,33 @@ int main(int argc, char *argv[])
|
|||
fputs(Help_config, stderr);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/* If first option is a device, don't force the mode yet */
|
||||
if (opt == 1) {
|
||||
if (devs_found == 0) {
|
||||
dv = malloc(sizeof(*dv));
|
||||
if (dv == NULL) {
|
||||
fprintf(stderr, Name ": malloc failed\n");
|
||||
exit(3);
|
||||
}
|
||||
dv->devname = optarg;
|
||||
dv->disposition = devmode;
|
||||
dv->next = NULL;
|
||||
*devlistend = dv;
|
||||
devlistend = &dv->next;
|
||||
|
||||
devs_found++;
|
||||
continue;
|
||||
}
|
||||
/* No mode yet, and this is the second device ... */
|
||||
fprintf(stderr, Name ": An option must be given to set the mode before a second device is listed\n");
|
||||
exit(2);
|
||||
}
|
||||
if (option_index >= 0)
|
||||
fprintf(stderr, "--%s", long_options[option_index].name);
|
||||
fprintf(stderr, Name ": --%s", long_options[option_index].name);
|
||||
else
|
||||
fprintf(stderr, "-%c", opt);
|
||||
fprintf(stderr, " does not set the mode, and so cannot be first.\n");
|
||||
fprintf(stderr, Name ": -%c", opt);
|
||||
fprintf(stderr, " does not set the mode, and so cannot be the first option.\n");
|
||||
exit(2);
|
||||
}
|
||||
|
||||
|
@ -645,6 +668,12 @@ int main(int argc, char *argv[])
|
|||
|
||||
}
|
||||
|
||||
if (!mode && devs_found) {
|
||||
mode = MISC;
|
||||
devmode = 'Q';
|
||||
if (devlist->disposition == 0)
|
||||
devlist->disposition = devmode;
|
||||
}
|
||||
if (!mode) {
|
||||
fputs(Usage, stderr);
|
||||
exit(2);
|
||||
|
|
Loading…
Reference in New Issue