mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
9640320aea
While newer system can detect need for 4K mkfs, on older test machines running test suite over 4k is reporting problems. Some more generic solution is needed thought.
140 lines
3.3 KiB
Bash
140 lines
3.3 KiB
Bash
#!/usr/bin/env 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
# test merge of thin snapshot
|
|
|
|
SKIP_WITH_LVMLOCKD=1
|
|
|
|
export LVM_TEST_THIN_REPAIR_CMD=${LVM_TEST_THIN_REPAIR_CMD-/bin/false}
|
|
|
|
. lib/inittest
|
|
|
|
MKFS=mkfs.ext2
|
|
which $MKFS || skip
|
|
which fsck || skip
|
|
|
|
MKFS="$MKFS -b4096"
|
|
#
|
|
# Main
|
|
#
|
|
aux have_thin 1 0 0 || skip
|
|
|
|
aux prepare_vg 2
|
|
|
|
lvcreate -T -L8M $vg/pool -V10M -n $lv1
|
|
lvcreate -s -K -n snap $vg/$lv1
|
|
# check exclusive lock is preserved after merge
|
|
check lv_field "$vg/$lv1" lv_active_exclusively "active exclusively"
|
|
lvconvert --merge $vg/snap
|
|
check lv_field "$vg/$lv1" lv_active_exclusively "active exclusively"
|
|
lvremove -ff $vg
|
|
|
|
|
|
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
|
|
|
|
lvcreate -s -n snap1 $vg/$lv1
|
|
|
|
lvconvert --merge $vg/snap &>out
|
|
grep "Merging of thin snapshot $vg/snap will occur on next activation of $vg/${lv1}." out
|
|
|
|
# Can't merge another snapshot while "snap" is still being 'merged'.
|
|
not lvconvert --merge $vg/snap1 &>out
|
|
grep "Cannot merge snapshot" out
|
|
|
|
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
|
|
check lv_field $vg/$lv1 thin_id "4"
|
|
|
|
# Check --mergethin
|
|
lvcreate -s -n snap $vg/$lv1
|
|
check lv_field $vg/snap thin_id "5"
|
|
lvconvert --mergethin $vg/snap &>out
|
|
grep "Volume $vg/snap replaced origin $vg/${lv1}." out
|
|
check lv_field $vg/$lv1 thin_id "5"
|
|
|
|
vgremove -ff $vg
|