1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/test/shell/lvchange-partial.sh
Jonathan Brassow a3cfe9d9b7 Test (RAID): Test for RAID10 activations when devices are missing
Test the fix for bug 889358.  RAID10 had been failing to activate when
there were devices that had failed in more than one mirror set.
2013-01-28 12:32:33 -06:00

81 lines
1.8 KiB
Bash

#!/bin/bash
# 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
aux target_at_least dm-raid 1 1 0 || skip
aux prepare_vg 4
lvcreate --type raid1 -m 1 -l 2 -n $lv1 $vg
lvchange -an $vg/$lv1
aux disable_dev "$dev1"
#
# Test for allowable metadata changes
#
# contiguous_ARG
lvchange -C y $vg/$lv1
lvchange -C n $vg/$lv1
# permission_ARG
lvchange -p r $vg/$lv1
lvchange -p rw $vg/$lv1
# readahead_ARG
lvchange -r none $vg/$lv1
lvchange -r auto $vg/$lv1
# persistent_ARG
lvchange -M y --minor 56 --major 253 $vg/$lv1
lvchange -M n $vg/$lv1
# addtag_ARG
# deltag_ARG
lvchange --addtag foo $vg/$lv1
lvchange --deltag foo $vg/$lv1
#
# Test for disallowed metadata changes
#
# resync_ARG
not lvchange --resync $vg/$lv1
# alloc_ARG
not lvchange --alloc anywhere $vg/$lv1
# discards_ARG
not lvchange --discards ignore $vg/$lv1
# zero_ARG
not lvchange --zero y $vg/$lv1
#
# Ensure that allowed args don't cause disallowed args to get through
#
not lvchange --resync -ay $vg/$lv1
not lvchange --resync --addtag foo $vg/$lv1
aux enable_dev "$dev1"
lvremove -ff $vg
# rhbz 889358
# Should be able to activate when RAID10
# has failed devs in different mirror sets.
if aux target_at_least dm-raid 1 3 2; then
lvcreate --type raid10 -m 1 -i 2 -l 2 -n $lv1 $vg
aux wait_for_sync $vg $lv1
lvchange -an $vg/$lv1
aux disable_dev "$dev1" "$dev3"
lvchange -ay $vg/$lv1 --partial
lvchange -an $vg/$lv1
fi