summaryrefslogtreecommitdiffstats
path: root/Manage.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2005-08-04 04:41:12 +0000
committerNeil Brown <neilb@suse.de>2005-08-04 04:41:12 +0000
commitf277ce367125882ea809f981172b8d5c0cc4d5c7 (patch)
tree9694dfe2d09a972eb38c0d33d8ba6a5153ccb2f6 /Manage.c
parent11018a4592680d0d9312c21bf7689bc8db55a609 (diff)
downloadmdadm-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.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/Manage.c b/Manage.c
index 6f6f501..53accd7 100644
--- a/Manage.c
+++ b/Manage.c
@@ -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);