From 9860f2711da70977cdb1fa06a4c51c0e515d3237 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 29 Mar 2006 06:28:07 +0000 Subject: [PATCH] Bug fixes to pass test suite Signed-off-by: Neil Brown --- Grow.c | 23 ++++++++++++++--------- Kill.c | 2 ++ test | 5 ++++- tests/03r5assemV1 | 1 - tests/05r1-bitmapfile | 6 +++--- 5 files changed, 23 insertions(+), 14 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 -mdadm $md0 --add $dev1 -check recovery - dirty4=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'` +mdadm $md0 --add $dev1 +#it is too fast# check recovery + check wait sleep 4 dirty5=`mdadm -X $bmf | sed -n -e 's/.*Bitmap.* \([0-9]*\) dirty.*/\1/p'`