2017-07-02 22:38:32 +03:00
#!/usr/bin/env bash
2015-09-18 16:08:28 +03:00
# Copyright (C) 2010-2015 Red Hat, Inc. All rights reserved.
2010-10-29 20:43:51 +04:00
#
# 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,
2016-01-21 13:49:46 +03:00
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2010-10-29 20:43:51 +04:00
# no automatic extensions please
2018-05-24 17:49:48 +03:00
2015-10-27 17:10:06 +03:00
SKIP_WITH_LVMPOLLD = 1
2010-10-29 20:43:51 +04:00
2015-10-27 17:10:06 +03:00
. lib/inittest
2015-05-09 02:59:18 +03:00
2012-03-16 17:00:05 +04:00
which mkfs.ext2 || skip
2010-10-29 20:43:51 +04:00
2011-01-05 03:16:18 +03:00
aux lvmconf "activation/snapshot_autoextend_percent = 0" \
"activation/snapshot_autoextend_threshold = 100"
2010-10-29 20:43:51 +04:00
aux prepare_dmeventd
2012-03-16 17:00:05 +04:00
aux prepare_vg 2
mntdir = " ${ PREFIX } mnt "
2010-10-29 20:43:51 +04:00
2013-06-15 13:21:03 +04:00
lvcreate -aey -L8 -n base $vg
2012-03-16 17:00:05 +04:00
mkfs.ext2 " $DM_DEV_DIR / $vg /base "
2010-10-29 20:43:51 +04:00
2013-06-15 13:21:03 +04:00
lvcreate -s -L4 -n snap $vg /base
2010-10-29 20:43:51 +04:00
lvchange --monitor y $vg /snap
2012-03-16 17:00:05 +04:00
mkdir " $mntdir "
2015-09-18 16:08:28 +03:00
# Use remount-ro to avoid logging kernel WARNING
mount -o errors = remount-ro " $DM_DEV_DIR /mapper/ $vg -snap " " $mntdir "
2017-07-10 11:40:09 +03:00
test " $( dmsetup info -c --noheadings -o open $vg -snap) " -eq 1
2015-05-04 11:18:44 +03:00
2017-07-06 20:42:15 +03:00
grep " $mntdir " /proc/mounts
2015-09-18 16:08:28 +03:00
# overfill 4M snapshot (with metadata)
2017-07-11 12:18:22 +03:00
not dd if = /dev/zero of = " $mntdir /file " bs = 1M count = 4 conv = fdatasync
2015-05-02 22:14:45 +03:00
2015-05-04 11:18:44 +03:00
# Should be nearly instant check of dmeventd for invalid snapshot.
# Wait here for umount and open_count drops to 0 as it may
# take a while to finalize umount operation (it might be already
# removed from /proc/mounts, but still opened).
for i in { 1..100} ; do
sleep .1
2017-07-10 11:40:09 +03:00
test " $( dmsetup info -c --noheadings -o open $vg -snap) " -eq 0 && break
2012-10-14 21:45:59 +04:00
done
2010-10-29 20:43:51 +04:00
2017-07-06 20:42:15 +03:00
not grep " $mntdir " /proc/mounts
2012-03-16 17:00:05 +04:00
vgremove -f $vg