summaryrefslogtreecommitdiffstats
path: root/Create.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-07-12 20:27:40 +1000
committerNeil Brown <neilb@suse.de>2008-07-12 20:27:40 +1000
commitedd8d13c0247b8df5876a94c2d61d74d2cf62c7e (patch)
tree77b53caceb67a989f19811044ce15a61a76bcd28 /Create.c
parentbfa44e2e7afb88a9f2d6083f8ff31c2d50cc78dc (diff)
downloadmdadm-edd8d13c0247b8df5876a94c2d61d74d2cf62c7e.tar.gz
mdadm-edd8d13c0247b8df5876a94c2d61d74d2cf62c7e.tar.xz
mdadm-edd8d13c0247b8df5876a94c2d61d74d2cf62c7e.zip
Create arrays via metadata-update
Support creating arrays inside an active ddf container by sending a metadata update over a pipe to mdmon.
Diffstat (limited to 'Create.c')
-rw-r--r--Create.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/Create.c b/Create.c
index fe93238..f4567ca 100644
--- a/Create.c
+++ b/Create.c
@@ -573,12 +573,13 @@ int Create(struct supertype *st, char *mddev, int mdfd,
return 1;
}
if (mdmon_running(st->container_dev)) {
- fprintf(stderr, Name ": mdmon already running "
- "for %s - sorry\n",
- devnum2devname(st->container_dev));
- return 1;
- }
- need_mdmon = 1;
+ if (verbose)
+ fprintf(stderr, Name ": reusing mdmon "
+ "for %s.\n",
+ devnum2devname(st->container_dev));
+ st->update_tail = &st->updates;
+ } else
+ need_mdmon = 1;
}
if ((vers % 100) < 2 ||
sra == NULL ||
@@ -707,8 +708,10 @@ int Create(struct supertype *st, char *mddev, int mdfd,
}
if (dv == moved_disk && dnum != insert_point) break;
}
- if (pass == 1)
+ if (pass == 1) {
st->ss->write_init_super(st);
+ flush_metadata_updates(st);
+ }
}
free(infos);
st->ss->free_super(st);