mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
9e33781d95
Fix missing wait so we have paired waiting. Also 'wait' for precise PID to get 'exit' code. Test for 'error' replacing only with newer snapshot targets. The old one will wait for resume. Note: 'wait -n' is not always available so can't be used..
92 lines
2.0 KiB
Bash
92 lines
2.0 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2015 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
|
|
|
|
# check if 'dmsetup --noflush' will work properly for mounted snapshot
|
|
|
|
SKIP_WITH_LVMLOCKD=1
|
|
SKIP_WITH_CLVMD=1
|
|
SKIP_WITH_LVMETAD=1
|
|
SKIP_WITH_LVMPOLLD=1
|
|
|
|
. lib/inittest
|
|
|
|
which mkfs.ext2 || skip
|
|
|
|
aux prepare_vg 5
|
|
|
|
# Create stacked device
|
|
lvcreate --type snapshot -s -L10 -n $lv1 $vg --virtualsize 100M
|
|
aux extend_filter_LVMTEST
|
|
vgcreate $vg1 "$DM_DEV_DIR"/$vg/$lv1
|
|
|
|
|
|
lvcreate -L20 -n $lv1 $vg1
|
|
lvcreate -L10 -n snap -s $vg1/$lv1
|
|
|
|
mkfs.ext2 "$DM_DEV_DIR/$vg1/snap"
|
|
mkdir mnt
|
|
mount -o errors=remount-ro "$DM_DEV_DIR/$vg1/snap" mnt
|
|
|
|
sync
|
|
|
|
# intentionally suspend layer below
|
|
dmsetup suspend $vg-$lv1
|
|
|
|
# now this should pass without blocking
|
|
dmsetup suspend --noflush --nolockfs $vg1-snap &
|
|
DMPID=$!
|
|
#dmsetup suspend $vg1-snap &
|
|
|
|
sleep .5
|
|
|
|
dmsetup info --noheadings -c -o suspended $vg1-snap | tee out
|
|
should grep -i suspend out
|
|
|
|
# unlock device below
|
|
dmsetup resume $vg-$lv1
|
|
# so this will pass without blocking on udev
|
|
# otherwise --noudevsync would be needed
|
|
dmsetup resume $vg1-snap
|
|
|
|
# Expecting success from 'dmsetup'
|
|
wait $DMPID
|
|
|
|
|
|
# Try how force removal works
|
|
dmsetup suspend $vg-$lv1
|
|
# needs to fail as device is still open
|
|
not dmsetup remove --force $vg1-snap &
|
|
DMPID=$!
|
|
|
|
# on older snapshot target 'remove' will wait till $lv1 is resumed
|
|
if aux target_at_least dm-snapshot 1 6 0 ; then
|
|
sleep .5
|
|
|
|
dmsetup table $vg1-snap | tee out
|
|
should grep -i error out
|
|
fi
|
|
|
|
dmsetup resume $vg-$lv1
|
|
|
|
# Expecting success from 'not dmsetup'
|
|
wait $DMPID
|
|
|
|
# check it really is now 'error' target
|
|
dmsetup table $vg1-snap | tee out
|
|
grep error out
|
|
|
|
umount mnt || true
|
|
|
|
lvremove -f $vg1
|
|
|
|
vgremove -ff $vg1
|
|
vgremove -ff $vg
|