diff options
author | Neil Brown <neilb@suse.de> | 2008-07-12 20:27:40 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-07-12 20:27:40 +1000 |
commit | edd8d13c0247b8df5876a94c2d61d74d2cf62c7e (patch) | |
tree | 77b53caceb67a989f19811044ce15a61a76bcd28 /Create.c | |
parent | bfa44e2e7afb88a9f2d6083f8ff31c2d50cc78dc (diff) | |
download | mdadm-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.c | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -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); |