diff options
author | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:19 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:19 +1000 |
commit | 598f0d58ac3544e25f90f2d34337e15764f4d877 (patch) | |
tree | 9cfe332da8c0deee87065a14014a2904ee991902 /Create.c | |
parent | a19c88b83db3cc25affb75fe2d5531c964379d96 (diff) | |
download | mdadm-598f0d58ac3544e25f90f2d34337e15764f4d877.tar.gz mdadm-598f0d58ac3544e25f90f2d34337e15764f4d877.tar.xz mdadm-598f0d58ac3544e25f90f2d34337e15764f4d877.zip |
Can now mostly assemble DDF arrays
Diffstat (limited to 'Create.c')
-rw-r--r-- | Create.c | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -637,6 +637,7 @@ int Create(struct supertype *st, char *mddev, int mdfd, rv = 0; if (st->ss->external) { + st->ss->getinfo_super_n(st, &info); rv = sysfs_add_disk(sra, fd, &info); close(fd); } else { @@ -666,12 +667,27 @@ int Create(struct supertype *st, char *mddev, int mdfd, /* No need to start */ ; else if (runstop == 1 || subdevs >= raiddisks) { - mdu_param_t param; - if (ioctl(mdfd, RUN_ARRAY, ¶m)) { - fprintf(stderr, Name ": RUN_ARRAY failed: %s\n", - strerror(errno)); - Manage_runstop(mddev, mdfd, -1, 0); - return 1; + if (st->ss->external) { + switch(level) { + case LEVEL_LINEAR: + case LEVEL_MULTIPATH: + case 0: + sysfs_set_str(sra, NULL, "array_state", + "active"); + break; + default: + sysfs_set_str(sra, NULL, "array_state", + "readonly"); + break; + } + } else { + mdu_param_t param; + if (ioctl(mdfd, RUN_ARRAY, ¶m)) { + fprintf(stderr, Name ": RUN_ARRAY failed: %s\n", + strerror(errno)); + Manage_runstop(mddev, mdfd, -1, 0); + return 1; + } } if (verbose >= 0) fprintf(stderr, Name ": array %s started.\n", mddev); |