#!/bin/sh
# Copyright (C) 2014 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 locking works and doesn't update metadata
# RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1063542

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

aux have_thin 1 0 0 || skip
aux prepare_vg

lvcreate -L10 -T -V5 -n $lv1 $vg/pool
lvcreate -an -V10 -T $vg/pool

$MKFS "$DM_DEV_DIR/$vg/$lv1"
mkdir mnt
mount "$DM_DEV_DIR/$vg/$lv1" mnt

lvcreate -s -n snap $vg/$lv1
check lv_field $vg/snap thin_id "3"

lvconvert --merge $vg/snap

umount mnt
vgchange -an $vg

# Check reboot case
vgchange -ay --sysinit $vg
# Metadata are still not updated (--poll n)
check lv_field $vg/$lv1 thin_id "1"
check lv_field $vg/pool transaction_id "3"

# Check the metadata are updated after refresh
vgchange --refresh $vg
check lv_field $vg/$lv1 thin_id "3"
check lv_field $vg/pool transaction_id "4"

#lvs -a -o+transaction_id,thin_id $vg

vgremove -f $vg
