mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
test: split raid tests
Separate original raid test and new raid10 test, so the old could be tested on platforms without raid10 support. Replace test-unfriendly `ls /dev/mapper` with dmsetup ls
This commit is contained in:
parent
cdb7502e54
commit
93d7d3ed2c
@ -13,11 +13,9 @@
|
||||
|
||||
get_image_pvs() {
|
||||
local d
|
||||
local images=""
|
||||
local images
|
||||
|
||||
for d in `ls /dev/mapper/${1}-${2}_?image_*`; do
|
||||
images="$images `basename $d | sed s:-:/:`"
|
||||
done
|
||||
images=`dmsetup ls | grep ${1}-${2}_.image_.* | cut -f1 | sed -e s:-:/:`
|
||||
lvs --noheadings -a -o devices $images | sed s/\(.\)//
|
||||
}
|
||||
|
||||
@ -222,32 +220,3 @@ for i in 4 5 6; do
|
||||
|
||||
lvremove -ff $vg
|
||||
done
|
||||
|
||||
# RAID10: Can replace 'copies - 1' devices from each stripe
|
||||
# Tests are run on 2-way mirror, 3-way stripe RAID10
|
||||
aux target_at_least dm-raid 1 3 1 || skip
|
||||
|
||||
lvcreate --type raid10 -m 1 -i 3 -l 3 -n $lv1 $vg
|
||||
aux wait_for_sync $vg $lv1
|
||||
|
||||
# Can replace any single device
|
||||
for i in $(get_image_pvs $vg $lv1); do
|
||||
lvconvert --replace $i $vg/$lv1
|
||||
aux wait_for_sync $vg $lv1
|
||||
done
|
||||
|
||||
# Can't replace adjacent devices
|
||||
devices=( $(get_image_pvs $vg $lv1) )
|
||||
not lvconvert --replace ${devices[0]} --replace ${devices[1]} $vg/$lv1
|
||||
not lvconvert --replace ${devices[2]} --replace ${devices[3]} $vg/$lv1
|
||||
not lvconvert --replace ${devices[4]} --replace ${devices[5]} $vg/$lv1
|
||||
|
||||
# Can replace non-adjacent devices
|
||||
for i in 0 1; do
|
||||
lvconvert \
|
||||
--replace ${devices[$i]} \
|
||||
--replace ${devices[$(($i + 2))]} \
|
||||
--replace ${devices[$(($i + 4))]} \
|
||||
$vg/$lv1
|
||||
aux wait_for_sync $vg $lv1
|
||||
done
|
||||
|
56
test/shell/lvconvert-raid10.sh
Normal file
56
test/shell/lvconvert-raid10.sh
Normal file
@ -0,0 +1,56 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2012 Red Hat, Inc. All rights reserved.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing to use,
|
||||
# modify, copy, or redistribute it subject to the terms and conditions
|
||||
# of the GNU General Public License v.2.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
. lib/test
|
||||
|
||||
get_image_pvs() {
|
||||
local d
|
||||
local images
|
||||
|
||||
images=`dmsetup ls | grep ${1}-${2}_.image_.* | cut -f1 | sed -e s:-:/:`
|
||||
lvs --noheadings -a -o devices $images | sed s/\(.\)//
|
||||
}
|
||||
|
||||
########################################################
|
||||
# MAIN
|
||||
########################################################
|
||||
# RAID10: Can replace 'copies - 1' devices from each stripe
|
||||
# Tests are run on 2-way mirror, 3-way stripe RAID10
|
||||
aux target_at_least dm-raid 1 3 1 || skip
|
||||
|
||||
# 9 PVs needed for RAID10 testing (3-stripes/2-mirror - replacing 3 devs)
|
||||
aux prepare_pvs 9 80
|
||||
vgcreate -c n -s 256k $vg $(cat DEVICES)
|
||||
|
||||
lvcreate --type raid10 -m 1 -i 3 -l 3 -n $lv1 $vg
|
||||
aux wait_for_sync $vg $lv1
|
||||
|
||||
# Can replace any single device
|
||||
for i in $(get_image_pvs $vg $lv1); do
|
||||
lvconvert --replace $i $vg/$lv1
|
||||
aux wait_for_sync $vg $lv1
|
||||
done
|
||||
|
||||
# Can't replace adjacent devices
|
||||
devices=( $(get_image_pvs $vg $lv1) )
|
||||
not lvconvert --replace ${devices[0]} --replace ${devices[1]} $vg/$lv1
|
||||
not lvconvert --replace ${devices[2]} --replace ${devices[3]} $vg/$lv1
|
||||
not lvconvert --replace ${devices[4]} --replace ${devices[5]} $vg/$lv1
|
||||
|
||||
# Can replace non-adjacent devices
|
||||
for i in 0 1; do
|
||||
lvconvert \
|
||||
--replace ${devices[$i]} \
|
||||
--replace ${devices[$(($i + 2))]} \
|
||||
--replace ${devices[$(($i + 4))]} \
|
||||
$vg/$lv1
|
||||
aux wait_for_sync $vg $lv1
|
||||
done
|
Loading…
Reference in New Issue
Block a user