Add test for --update=metadata and fix bug it found.
We were not setting device size correctly for raid0. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
033e098c07
commit
ccec2685ab
5
super1.c
5
super1.c
|
@ -2320,7 +2320,10 @@ void *super1_make_v0(struct supertype *st, struct mdinfo *info, mdp_super_t *sb0
|
|||
sb->size = __cpu_to_le64(info->component_size);
|
||||
sb->chunksize = __cpu_to_le32(info->array.chunk_size/512);
|
||||
sb->raid_disks = __cpu_to_le32(info->array.raid_disks);
|
||||
sb->data_size = sb->size;
|
||||
if (info->array.level > 0)
|
||||
sb->data_size = sb->size;
|
||||
else
|
||||
sb->data_size = st->ss->avail_size(st, st->devsize/512, 0);
|
||||
sb->resync_offset = MaxSector;
|
||||
sb->max_dev = __cpu_to_le32(MD_SB_DISKS);
|
||||
sb->dev_number = __cpu_to_le32(info->disk.number);
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
set -xe
|
||||
|
||||
# test converting v0.90 to v1.0
|
||||
# check for different levels
|
||||
# check it fails for non-v0.90
|
||||
# check it fails during reshape or recovery
|
||||
# check it fails when bitmap is present
|
||||
|
||||
dlist="$dev0 $dev1 $dev2 $dev3"
|
||||
|
||||
for ls in raid0/4 linear/4 raid1/1 raid5/3 raid6/2
|
||||
do
|
||||
s=${ls#*/} l=${ls%/*}
|
||||
mdadm -CR --assume-clean -e 0.90 $md0 --level $l -n 4 -c 64 $dlist
|
||||
testdev $md0 $s 19904 64
|
||||
mdadm -S $md0
|
||||
mdadm -A $md0 --update=metadata $dlist
|
||||
testdev $md0 $s 19904 64 check
|
||||
mdadm -S $md0
|
||||
done
|
||||
|
||||
if mdadm -A $md0 --update=metadata $dlist
|
||||
then echo >&2 should fail with v1.0 metadata
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mdadm -CR -e 0.90 $md0 --level=6 -n4 -c32 $dlist
|
||||
mdadm -S $md0
|
||||
|
||||
if mdadm -A $md0 --update=metadata $dlist
|
||||
then echo >&2 should fail during resync
|
||||
exit 1
|
||||
fi
|
||||
mdadm -A $md0 $dlist
|
||||
mdadm --wait $md0
|
||||
mdadm -S $md0
|
||||
|
||||
# should succeed now
|
||||
mdadm -A $md0 --update=metadata $dlist
|
||||
|
||||
mdadm -S /dev/md0
|
||||
mdadm -CR --assume-clean -e 0.90 $md0 --level=6 -n4 -c32 $dlist --bitmap=internal
|
||||
mdadm -S $md0
|
||||
|
||||
if mdadm -A $md0 --update=metadata $dlist
|
||||
then echo >&2 should fail when bitmap present
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in New Issue