summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-03-29 06:28:07 +0000
committerNeil Brown <neilb@suse.de>2006-03-29 06:28:07 +0000
commit9860f2711da70977cdb1fa06a4c51c0e515d3237 (patch)
treed6517fb15c2ac78f1d7ae3cc9f4a7bf573f62264
parent7ef02d01432952ee677beca7b0f90b653b3d336b (diff)
downloadmdadm-9860f2711da70977cdb1fa06a4c51c0e515d3237.tar.gz
mdadm-9860f2711da70977cdb1fa06a4c51c0e515d3237.tar.xz
mdadm-9860f2711da70977cdb1fa06a4c51c0e515d3237.zip
Bug fixes to pass test suite
Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r--Grow.c23
-rw-r--r--Kill.c2
-rw-r--r--test5
-rw-r--r--tests/03r5assemV11
-rw-r--r--tests/05r1-bitmapfile4
5 files changed, 22 insertions, 13 deletions
diff --git a/Grow.c b/Grow.c
index de53df1..125606c 100644
--- a/Grow.c
+++ b/Grow.c
@@ -500,14 +500,21 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
* other from happening. Later we could block
* resync for the duration via 'sync_action'...
*/
- if (raid_disks >= 0)
+ if (raid_disks > 0) {
array.raid_disks = raid_disks;
- if (size >= 0)
+ if (ioctl(fd, SET_ARRAY_INFO, &array) != 0) {
+ fprintf(stderr, Name ": Cannot set raid-devices for %s: %s\n",
+ devname, strerror(errno));
+ return 1;
+ }
+ }
+ if (size >= 0) {
array.size = size;
- if (ioctl(fd, SET_ARRAY_INFO, &array) != 0) {
- fprintf(stderr, Name ": Cannot set device size/shape for %s: %s\n",
- devname, strerror(errno));
- return 1;
+ if (ioctl(fd, SET_ARRAY_INFO, &array) != 0) {
+ fprintf(stderr, Name ": Cannot set device size for %s: %s\n",
+ devname, strerror(errno));
+ return 1;
+ }
}
return 0;
@@ -869,8 +876,6 @@ int Grow_restart(struct supertype *st, struct mdinfo *info, int *fdlist, int cnt
fd = open(backup_file, O_RDONLY);
if (fd<0)
continue;
- if (lseek(fd, 4096, 0) != 4096)
- continue;
} else {
fd = fdlist[i];
if (fd < 0)
@@ -909,7 +914,7 @@ int Grow_restart(struct supertype *st, struct mdinfo *info, int *fdlist, int cnt
/* There should be a duplicate backup superblock 4k before here */
if (lseek64(fd, -4096, 1) < 0 ||
read(fd, buf, 4096) != 4096 ||
- memcmp(buf, &bsb, sizeof(buf)) != 0)
+ memcmp(buf, &bsb, sizeof(bsb)) != 0)
continue; /* Cannot find leading superblock */
/* Now need the data offsets for all devices. */
diff --git a/Kill.c b/Kill.c
index 2f28b99..a4d9562 100644
--- a/Kill.c
+++ b/Kill.c
@@ -50,12 +50,14 @@ int Kill(char *dev, int force, int quiet)
if (!quiet)
fprintf(stderr, Name ": Couldn't open %s for write - not zeroing\n",
dev);
+ close(fd);
return 1;
}
st = guess_super(fd);
if (st == NULL) {
if (!quiet)
fprintf(stderr, Name ": Unrecognised md component device - %s\n", dev);
+ close(fd);
return 1;
}
rv = st->ss->load_super(st, fd, &super, dev);
diff --git a/test b/test
index 307bfb8..3d72228 100644
--- a/test
+++ b/test
@@ -63,7 +63,10 @@ fi
# mdadm always adds --quiet, and we want to see any unexpected messages
mdadm() {
- $mdadm --quiet "$@"
+ case $* in
+ *-C* ) $mdadm --quiet "$@" --auto=yes;;
+ * ) $mdadm --quiet "$@"
+ esac
}
# check various things
diff --git a/tests/03r5assemV1 b/tests/03r5assemV1
index 7df277e..7553a4f 100644
--- a/tests/03r5assemV1
+++ b/tests/03r5assemV1
@@ -49,7 +49,6 @@ mdadm -As -c $conf
echo "DEVICE $devlist" > $conf
mdadm -Db $md1 >> $conf
eval $tst
-
mdadm --assemble --scan --config=$conf $md1
eval $tst
echo PING >&2
diff --git a/tests/05r1-bitmapfile b/tests/05r1-bitmapfile
index d227576..59564cb 100644
--- a/tests/05r1-bitmapfile
+++ b/tests/05r1-bitmapfile
@@ -32,10 +32,10 @@ fi
mdadm -S $md0
mdadm --assemble -R $md0 --bitmap=$bmf $dev2
+dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
mdadm $md0 --add $dev1
-check recovery
+#it is too fast# check recovery
-dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`
check wait
sleep 4
dirty5=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`