diff options
author | Neil Brown <neilb@suse.de> | 2005-08-04 04:41:12 +0000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2005-08-04 04:41:12 +0000 |
commit | f277ce367125882ea809f981172b8d5c0cc4d5c7 (patch) | |
tree | 9694dfe2d09a972eb38c0d33d8ba6a5153ccb2f6 /Manage.c | |
parent | 11018a4592680d0d9312c21bf7689bc8db55a609 (diff) | |
download | mdadm-f277ce367125882ea809f981172b8d5c0cc4d5c7.tar.gz mdadm-f277ce367125882ea809f981172b8d5c0cc4d5c7.tar.xz mdadm-f277ce367125882ea809f981172b8d5c0cc4d5c7.zip |
Assorted Fixes for multiple bugs.
Assemble would crash, or just not work.
A few other problem found by a new test-suite.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Diffstat (limited to 'Manage.c')
-rw-r--r-- | Manage.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -196,7 +196,7 @@ int Manage_subdevs(char *devname, int fd, return 1; case 'a': /* add the device - hot or cold */ - /* Make sure it isn' in use (in 2.6 or later) */ + /* Make sure it isn't in use (in 2.6 or later) */ tfd = open(dv->devname, O_RDONLY|O_EXCL); if (tfd < 0) { fprintf(stderr, Name ": Cannot open %s: %s\n", @@ -228,7 +228,7 @@ int Manage_subdevs(char *devname, int fd, array.major_version, array.minor_version); return 1; } - for (j=0; j<array.raid_disks+array.spare_disks+ array.failed_disks; j++) { + for (j=0; j<st->max_devs; j++) { char *dev; int dfd; disc.number = j; @@ -253,7 +253,7 @@ int Manage_subdevs(char *devname, int fd, fprintf(stderr, Name ": cannot find valid superblock in this array - HELP\n"); return 1; } - for (j=0; j<array.nr_disks; j++) { + for (j=0; j< st->max_devs; j++) { disc.number = j; if (ioctl(fd, GET_DISK_INFO, &disc)) break; @@ -266,11 +266,12 @@ int Manage_subdevs(char *devname, int fd, disc.minor = minor(stb.st_rdev); disc.number =j; disc.state = 0; + st->ss->add_to_super(dsuper, &disc); if (st->ss->write_init_super(st, dsuper, &disc, dv->devname)) return 1; if (ioctl(fd,ADD_NEW_DISK, &disc)) { - fprintf(stderr, Name ": add new device failed for %s: %s\n", - dv->devname, strerror(errno)); + fprintf(stderr, Name ": add new device failed for %s as %d: %s\n", + dv->devname, j, strerror(errno)); return 1; } fprintf(stderr, Name ": added %s\n", dv->devname); |