summaryrefslogtreecommitdiffstats
path: root/Incremental.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-02-24 18:45:57 -0700
committerDan Williams <dan.j.williams@intel.com>2009-02-24 18:45:57 -0700
commitfdb482f99b9ad2ef8cd1724902fdfeedaa8796a1 (patch)
tree62774bdd00a49fc06c9fd6d81cec9a4f379e0eaf /Incremental.c
parente12e1d1d6abd79bbc3406a78149db8732c0c8dd6 (diff)
downloadmdadm-fdb482f99b9ad2ef8cd1724902fdfeedaa8796a1.tar.gz
mdadm-fdb482f99b9ad2ef8cd1724902fdfeedaa8796a1.tar.xz
mdadm-fdb482f99b9ad2ef8cd1724902fdfeedaa8796a1.zip
Incremental: honor --no-degraded to delay assembly
Currently Incremental_container is being called after adding each disk. In the imsm case where spares are not tracked in the raid_disks field we can use --no-degraded to block premature assembly. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'Incremental.c')
-rw-r--r--Incremental.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Incremental.c b/Incremental.c
index 0a0dc03..e293999 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -398,6 +398,8 @@ int Incremental(char *devname, int verbose, int runstop,
": container %s now has %d devices\n",
chosen_name, info.array.working_disks);
wait_for(chosen_name);
+ if (runstop < 0)
+ return 0; /* don't try to assemble */
return Incremental(chosen_name, verbose, runstop,
NULL, homehost, autof);
}
@@ -405,7 +407,8 @@ int Incremental(char *devname, int verbose, int runstop,
active_disks = count_active(st, mdfd, &avail, &info);
if (enough(info.array.level, info.array.raid_disks,
info.array.layout, info.array.state & 1,
- avail, active_disks) == 0) {
+ avail, active_disks) == 0 ||
+ (runstop < 0 && active_disks < info.array.raid_disks)) {
free(avail);
if (verbose >= 0)
fprintf(stderr, Name