#!/bin/bash
# Copyright (C) 2012-2016 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

# no automatic extensions, just umount

SKIP_WITH_LVMLOCKD=1
SKIP_WITH_LVMPOLLD=1

export LVM_TEST_THIN_REPAIR_CMD=${LVM_TEST_THIN_REPAIR_CMD-/bin/false}

mntdir="${PREFIX}mnt with space"
mntusedir="${PREFIX}mntuse"

cleanup_mounted_and_teardown()
{
	umount "$mntdir" 2>/dev/null || true
	umount "$mntusedir" 2>/dev/null || true
	vgremove -ff $vg
	aux teardown
}

is_lv_opened_()
{
	test $(get lv_field "$1" lv_device_open --binary) = "1"
}

. lib/inittest

#
# Main
#
which mkfs.ext4 || skip
export MKE2FS_CONFIG="$TESTDIR/lib/mke2fs.conf"

aux have_thin 1 0 0 || skip

aux prepare_dmeventd

# Use autoextend percent 0 - so extension fails and triggers umount...
aux lvmconf "activation/thin_pool_autoextend_percent = 0" \
            "activation/thin_pool_autoextend_threshold = 70"

aux prepare_vg 2


lvcreate -L8M -V8M -n $lv1 -T $vg/pool
lvcreate -V8M -n $lv2 -T $vg/pool

mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
mkfs.ext4 "$DM_DEV_DIR/$vg/$lv2"

lvchange --monitor y $vg/pool

mkdir "$mntdir" "$mntusedir"
trap 'cleanup_mounted_and_teardown' EXIT
mount "$DM_DEV_DIR/mapper/$vg-$lv1" "$mntdir"
mount "$DM_DEV_DIR/mapper/$vg-$lv2" "$mntusedir"

# Check both LVs are opened (~mounted)
is_lv_opened_ "$vg/$lv1"
is_lv_opened_ "$vg/$lv2"

touch "$mntusedir/file$$"
sync

# Running 'keeper' process sleep holds the block device still in use
sleep 60 < "$mntusedir/file$$" &
PID_SLEEP=$!

lvs -a $vg
# Fill pool above 95%  (to cause 'forced lazy umount)
dd if=/dev/zero of="$mntdir/file$$" bs=256K count=20 conv=fdatasync
sync
lvs -a $vg

# Could loop here for a few secs so dmeventd can do some work
# In the worst case check only happens every 10 seconds :(
# With low water mark it should react way faster
for i in $(seq 1 12) ; do
	is_lv_opened_ "$vg/$lv1" || break
	test $i -lt 12 || die "$mntdir should have been unmounted by dmeventd!"
	sleep 1
done

lvs -a $vg

is_lv_opened_ "$vg/$lv2" || \
	die "$mntusedir is not mounted here (sleep already expired??)"

# Kill device holding process
kill $PID_SLEEP
wait

not is_lv_opened_ "$vg/$lv2" || {
	mount
	die "$mntusedir should have been unmounted by dmeventd!"
}
