1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/test/shell/thin-merge.sh
Zdenek Kabelac 76cc477fba tests: no warn if test does not need thin_repair
Set LVM_TEST_THIN_REPAIR_CMD to /bin/false for test which
doesn't need it.

This way - even if on the system there is no such tool present,
test will not result with warning about missing tool.

Also remove from Makefile settings of TEST vars which are set in
through /lib/paths  - this also allows to override them in test.
2015-05-17 20:24:36 +02:00

112 lines
2.5 KiB
Bash

#!/bin/bash
# Copyright (C) 2013 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
# test merge of thin snapshot
export LVM_TEST_THIN_REPAIR_CMD=${LVM_TEST_THIN_REPAIR_CMD-/bin/false}
. lib/inittest
MKFS=mkfs.ext2
which $MKFS || skip
which fsck || skip
#
# Main
#
aux have_thin 1 0 0 || skip
aux prepare_vg 2
lvcreate -T -L8M $vg/pool -V10M -n $lv1
lvchange --addtag tagL $vg/$lv1
mkdir mnt
$MKFS "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" mnt
touch mnt/test
lvcreate -K -s -n snap --addtag tagS $vg/$lv1
mkdir mntsnap
$MKFS "$DM_DEV_DIR/$vg/snap"
mount "$DM_DEV_DIR/$vg/snap" mntsnap
touch mntsnap/test_snap
lvs -o+tags,thin_id $vg
lvconvert --merge $vg/snap
umount mnt
# Merge cannot happen
lvchange --refresh $vg/$lv1
check lv_field $vg/$lv1 thin_id "1"
# Fails since it cannot deactivate both
not lvchange -an $vg/$lv1
# But test $lv1 is not active
check inactive $vg $lv1
# Also still cannot reactivate $lv1
not lvchange -ay $vg/$lv1
umount mntsnap
lvdisplay -a $vg | tee out
grep "merged with" out
grep "merging to" out
# Check there is no support for manipulation with hidden 'snap'
not lvchange --refresh $vg/snap
not lvchange -an $vg/snap
not lvremove $vg/snap
# Finally deactivate 'snap' again via $lv1
lvchange -an $vg/$lv1
# Still must not be activable
not lvchange -K -ay $vg/snap
lvs -a -o +tags,thin_id $vg
# Test if merge happens
lvchange -ay $vg/$lv1
check lv_exists $vg $lv1
check lv_field $vg/$lv1 thin_id "2"
check lv_field $vg/$lv1 tags "tagL"
check lv_not_exists $vg snap
fsck -n "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" mnt
test -e mnt/test_snap
umount mnt
# test if thin snapshot has also 'old-snapshot'
lvcreate -s -n snap $vg/$lv1
# Also add old snapshot to thin origin
lvcreate -s -L10 -n oldsnapof_${lv1} $vg/$lv1
not lvconvert --merge $vg/snap
$MKFS "$DM_DEV_DIR/$vg/oldsnapof_${lv1}"
lvconvert --merge $vg/oldsnapof_${lv1}
fsck -n "$DM_DEV_DIR/$vg/$lv1"
check lv_not_exists $vg oldsnapof_${lv1}
# Add old snapshot to thin snapshot
lvcreate -s -L10 -n oldsnapof_snap $vg/snap
lvconvert --merge $vg/snap
lvremove -f $vg/oldsnapof_snap
vgremove -ff $vg