2012-03-16 17:00:05 +04:00
#!/bin/sh
2010-04-14 17:51:58 +04:00
# Copyright (C) 2008 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
2011-01-05 03:16:18 +03:00
. lib/test
2010-04-14 17:51:58 +04:00
2011-01-05 03:16:18 +03:00
aux prepare_vg 6
2011-02-28 22:44:21 +03:00
aux lvmconf 'allocation/maximise_cling = 0'
aux lvmconf 'allocation/mirror_logs_require_separate_pvs = 1'
2010-04-14 17:51:58 +04:00
2011-01-11 20:05:08 +03:00
# 3-way, disk log
2010-04-14 17:51:58 +04:00
# multiple failures, full replace
2012-03-16 17:00:05 +04:00
lvcreate --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " :0-1
aux disable_dev " $dev1 " " $dev2 "
2013-05-31 23:11:51 +04:00
lvconvert -y --repair $vg /3way 2>& 1 | tee 3way.out
2012-03-16 17:00:05 +04:00
lvs -a -o +devices $vg | not grep unknown
2010-04-14 17:51:58 +04:00
not grep "WARNING: Failed" 3way.out
vgreduce --removemissing $vg
check mirror $vg 3way
2012-03-16 17:00:05 +04:00
aux enable_dev " $dev1 " " $dev2 "
2013-05-31 23:11:51 +04:00
vgremove -ff $vg
2010-04-14 17:51:58 +04:00
2011-01-11 20:05:08 +03:00
# 3-way, disk log
2010-04-14 17:51:58 +04:00
# multiple failures, partial replace
2013-05-31 23:11:51 +04:00
vgcreate $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " " $dev5 "
lvcreate -aey --mirrorlog disk -m 2 --ig -L 1 -n 3way $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 "
2012-03-16 17:00:05 +04:00
aux disable_dev " $dev1 " " $dev2 "
2013-05-31 23:11:51 +04:00
lvconvert -y --repair $vg /3way 2>& 1 | tee 3way.out
2010-04-14 17:51:58 +04:00
grep "WARNING: Failed" 3way.out
2012-03-16 17:00:05 +04:00
lvs -a -o +devices $vg | not grep unknown
2010-04-14 17:51:58 +04:00
vgreduce --removemissing $vg
check mirror $vg 3way
2012-03-16 17:00:05 +04:00
aux enable_dev " $dev1 " " $dev2 "
2013-05-31 23:11:51 +04:00
vgremove -ff $vg
2010-04-14 17:51:58 +04:00
2013-05-31 23:11:51 +04:00
vgcreate $vg " $dev1 " " $dev2 " " $dev3 "
lvcreate -aey --mirrorlog disk -m 1 --ig -L 1 -n 2way $vg " $dev1 " " $dev2 " " $dev3 "
2012-03-16 17:00:05 +04:00
aux disable_dev " $dev1 "
2013-05-31 23:11:51 +04:00
lvconvert -y --repair $vg /2way 2>& 1 | tee 2way.out
2010-04-14 17:51:58 +04:00
grep "WARNING: Failed" 2way.out
2012-03-16 17:00:05 +04:00
lvs -a -o +devices $vg | not grep unknown
2010-04-14 17:51:58 +04:00
vgreduce --removemissing $vg
check mirror $vg 2way
2012-03-16 17:00:05 +04:00
aux enable_dev " $dev1 " " $dev2 "
2013-05-31 23:11:51 +04:00
vgremove -ff $vg
2010-04-14 17:51:58 +04:00
# Test repair of inactive mirror with log failure
2013-05-31 23:11:51 +04:00
# Replacement should fail, but convert should succeed (switch to corelog)
vgcreate $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 "
lvcreate -aey -m 2 --ig -l 2 -n mirror2 $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " :0
2010-04-14 17:51:58 +04:00
vgchange -a n $vg
2012-03-16 17:00:05 +04:00
pvremove -ff -y " $dev4 "
2013-05-31 23:11:51 +04:00
lvconvert -y --repair $vg /mirror2
2010-04-14 17:51:58 +04:00
check mirror $vg mirror2
2012-03-16 17:00:05 +04:00
vgs $vg
2013-05-31 23:11:51 +04:00
vgremove -ff $vg
# FIXME - exclusive activation for mirrors should work here
test -e LOCAL_CLVMD && exit 0
2013-05-26 20:53:29 +04:00
if kernel_at_least 3 0 0; then
# 2-way, mirrored log
# Double log failure, full replace
vgcreate $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " " $dev5 " " $dev6 "
lvcreate -aey --mirrorlog mirrored -m 1 --ig -L 1 -n 2way $vg \
" $dev1 " " $dev2 " " $dev3 " :0 " $dev4 " :0
aux disable_dev " $dev3 " " $dev4 "
lvconvert -y --repair $vg /2way 2>& 1 | tee 2way.out
lvs -a -o +devices $vg | not grep unknown
not grep "WARNING: Failed" 2way.out
vgreduce --removemissing $vg
check mirror $vg 2way
aux enable_dev " $dev3 " " $dev4 "
vgremove -ff $vg
fi
2013-05-31 23:11:51 +04:00
# 3-way, mirrored log
# Single log failure, replace
vgcreate $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " " $dev5 " " $dev6 "
lvcreate -aey --mirrorlog mirrored -m 2 --ig -L 1 -n 3way $vg \
" $dev1 " " $dev2 " " $dev3 " " $dev4 " :0 " $dev5 " :0
aux disable_dev " $dev4 "
lvconvert -y --repair $vg /3way 2>& 1 | tee 3way.out
lvs -a -o +devices $vg | not grep unknown
not grep "WARNING: Failed" 3way.out
vgreduce --removemissing $vg
check mirror $vg 3way
aux enable_dev " $dev4 "
vgremove -ff $vg