Support --wait-clean --scan

Its cumbersome to determine which devices to wait for in a system shutdown
script, so hook up --scan.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Dan Williams 2008-11-26 15:39:50 -07:00 committed by NeilBrown
parent 614825ea82
commit fabbfd48b6
2 changed files with 17 additions and 8 deletions

View File

@ -1081,10 +1081,11 @@ listed, otherwise it will return failure.
.TP
.BR \-\-wait\-clean
For each md device given, arrange for the array to be marked clean as
soon as possible. Also, quiesce resync so that the monitor for external
metadata arrays (mdmon) has an opportunity to checkpoint the resync
position.
For each md device given, or each device in /proc/mdstat if
.B \-\-scan
is given, arrange for the array to be marked clean as soon as possible.
Also, quiesce resync so that the monitor for external metadata arrays
(mdmon) has an opportunity to checkpoint the resync position.
.I mdadm
will return with success if the array uses external metadata and we
successfully waited. For native arrays this returns immediately as the

16
mdadm.c
View File

@ -1213,10 +1213,14 @@ int main(int argc, char *argv[])
SparcAdjust, ss, homehost);
} else {
if (devlist == NULL) {
if (devmode=='D' && scan) {
/* apply --detail to all devices in /proc/mdstat */
if ((devmode=='D' || devmode == Waitclean) && scan) {
/* apply --detail or --wait-clean to
* all devices in /proc/mdstat
*/
struct mdstat_ent *ms = mdstat_read(0, 1);
struct mdstat_ent *e;
int v = verbose>1?0:verbose+1;
for (e=ms ; e ; e=e->next) {
char *name = get_md_name(e->devnum);
@ -1225,8 +1229,12 @@ int main(int argc, char *argv[])
e->dev);
continue;
}
rv |= Detail(name, verbose>1?0:verbose+1,
export, test, homehost);
if (devmode == 'D')
rv |= Detail(name, v,
export, test,
homehost);
else
rv |= WaitClean(name, v);
put_md_name(name);
}
} else if (devmode == 'S' && scan) {