summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdadm.89
-rw-r--r--mdadm.c16
2 files changed, 17 insertions, 8 deletions
diff --git a/mdadm.8 b/mdadm.8
index 4322419..539d499 100644
--- a/mdadm.8
+++ b/mdadm.8
@@ -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
diff --git a/mdadm.c b/mdadm.c
index e0f51b7..4101c5b 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -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) {