summaryrefslogtreecommitdiff
path: root/Grow.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-07-10 11:10:54 +1000
committerNeilBrown <neilb@suse.de>2013-07-10 11:10:54 +1000
commita7a0d8a116c11b2208e70fd4dcc8ab920e472b8b (patch)
treed94673f83ff101594347bbc2450698d0dc688493 /Grow.c
parentb4924f46c04262e7e80aac27acc5848066393c52 (diff)
Grow: use mdstat_wait to wait for delayed reshape.
Having a fix time for a wait is clumsy and can make us wait much too long. So use mdstat_wait and keep the mdstat_fd open. This requires an 'mdstat_close' so it doesn't stay open forever. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Grow.c')
-rw-r--r--Grow.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Grow.c b/Grow.c
index 7baa5f8a..84f0a295 100644
--- a/Grow.c
+++ b/Grow.c
@@ -3228,7 +3228,7 @@ started:
do {
struct mdstat_ent *mds, *m;
delayed = 0;
- mds = mdstat_read(0, 0);
+ mds = mdstat_read(1, 0);
for (m = mds; m; m = m->next)
if (strcmp(m->devnm, sra->sys_name) == 0) {
if (m->resync &&
@@ -3248,9 +3248,9 @@ started:
delayed = 0;
}
if (delayed)
- sleep(30 - (delayed-1) * 25);
+ mdstat_wait(30 - (delayed-1) * 25);
} while (delayed);
-
+ mdstat_close();
close(fd);
if (check_env("MDADM_GROW_VERIFY"))
fd = open(devname, O_RDONLY | O_DIRECT);