1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-11 20:58:50 +03:00
lvm2/test/shell/lvconvert-repair.sh
Heinz Mauelshagen e82303fd6a lvcreate/lvconvert: optionally reenable mirrored mirror log for testing purposes only
This is a followup patch to commit edb72cb70cb8abd0acb92f07937715be2816d04a
to support related lvm2 test suite tests.

A 'global/support_mirrored_mirror_log' bool configuration variable gets
introduced allowing the creation of, or conversion to mirrored 'mirror'
logs if set.  The capability to create these in turn allows the rest of
the tests to perform activation of such existing LVs and their conversions
to disk/core 'mirror' logs.

Display a disclaimer warning if enabled that this is not for regular use.

Add definition of the enabled config option to respective test scripts.

Related: rhbz1643562
2018-12-17 19:28:54 +01:00

123 lines
3.2 KiB
Bash

#!/usr/bin/env bash
# Copyright (C) 2008-2013,2018 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
. lib/inittest
aux lvmconf "global/support_mirrored_mirror_log=1"
recreate_vg_()
{
vgremove -ff $vg
vgcreate $SHARED "$vg" "$@" "${DEVICES[@]}"
}
_check_mlog()
{
lvs -a -o +devices $vg | tee out
not grep unknown out
not grep mlog out
dmsetup ls | grep $PREFIX | tee out
not grep mlog out
}
aux lvmconf "allocation/maximise_cling = 0" \
"allocation/mirror_logs_require_separate_pvs = 1"
# fail multiple devices
# 4-way, disk log => 2-way, disk log
aux prepare_vg 8
get_devs
lvcreate -aey --type mirror -m 3 --ignoremonitoring -L 1 -n 4way $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5":0
aux disable_dev "$dev2" "$dev4"
echo n | lvconvert --repair $vg/4way 2>&1 | tee 4way.out
lvs -a -o +devices $vg | not grep unknown
vgreduce --removemissing $vg
aux enable_dev "$dev2" "$dev4"
check mirror $vg 4way "$dev5"
# 3-way, disk log => linear
recreate_vg_
lvcreate -aey --type mirror -m 2 --ignoremonitoring -L 1 -n 3way $vg
aux disable_dev "$dev1" "$dev2"
echo n | lvconvert --repair $vg/3way
check linear $vg 3way
_check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev1" "$dev2"
check linear $vg 3way
# fail just log and get it removed
# 3-way, disk log => 3-way, core log
recreate_vg_
lvcreate -aey --type mirror -m 2 --ignoremonitoring -L 1 -n 3way $vg "$dev1" "$dev2" "$dev3" "$dev4":0
aux disable_dev "$dev4"
echo n | lvconvert --repair $vg/3way
check mirror $vg 3way core
_check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev4"
# 3-way, mirrored log => 3-way, core log
recreate_vg_
lvcreate -aey --type mirror -m 2 --mirrorlog mirrored --ignoremonitoring -L 1 -n 3way $vg \
"$dev1" "$dev2" "$dev3" "$dev4":0 "$dev5":0
aux disable_dev "$dev4" "$dev5"
echo n | lvconvert --repair $vg/3way
check mirror $vg 3way core
_check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev4" "$dev5"
# 2-way, disk log => 2-way, core log
recreate_vg_
lvcreate -aey --type mirror -m 1 --ignoremonitoring -L 1 -n 2way $vg "$dev1" "$dev2" "$dev3":0
aux disable_dev "$dev3"
echo n | lvconvert --repair $vg/2way
check mirror $vg 2way core
_check_mlog
vgreduce --removemissing $vg
aux enable_dev "$dev3"
# fail single devices
recreate_vg_
vgreduce $vg "$dev4"
lvcreate -aey --type mirror -m 1 --ignoremonitoring -L 1 -n mirror $vg
lvchange -a n $vg/mirror
vgextend $vg "$dev4"
aux disable_dev "$dev1"
lvchange --partial -aey $vg/mirror
not vgreduce -v --removemissing $vg
lvconvert -y --repair $vg/mirror
vgreduce --removemissing $vg
aux enable_dev "$dev1"
vgextend $vg "$dev1"
aux disable_dev "$dev2"
lvconvert -y --repair $vg/mirror
vgreduce --removemissing $vg
aux enable_dev "$dev2"
vgextend $vg "$dev2"
aux disable_dev "$dev3"
lvconvert -y --repair $vg/mirror
vgreduce --removemissing $vg
aux enable_dev "$dev3"
vgextend $vg "$dev3"
vgremove -ff $vg