#!/bin/sh

# Copyright (C) 2013-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 creation of thin snapshots using external origin

SKIP_WITH_LVMLOCKD=1
SKIP_WITH_LVMPOLLD=1

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

. lib/inittest

which mkfs.ext2 || skip
which fsck || skip

#
# Main
#
aux have_thin 1 3 0 || skip

aux prepare_pvs 2 64

vgcreate $vg -s 64K $(cat DEVICES)

# Newer thin-pool target (>= 1.13) supports unaligned external origin
# But this test is written to test and expect older behavior
aux lvmconf 'global/thin_disabled_features = [ "external_origin_extend" ]'

# Test validation for external origin being multiple of thin pool chunk size
lvcreate -L10M -T $vg/pool192 -c 192k
lvcreate -an -pr -Zn -l1 -n $lv1 $vg
not lvcreate -s $vg/$lv1 --thinpool $vg/pool192

lvcreate -an -pr -Zn -l5 -n $lv2 $vg
not lvcreate -s $vg/$lv2 --thinpool $vg/pool192
lvremove -f $vg

# Prepare pool and external origin with filesystem
lvcreate -L10M -V10M -T $vg/pool --name $lv1
mkfs.ext2 "$DM_DEV_DIR/$vg/$lv1"

lvcreate -L4M -n $lv2 $vg
mkfs.ext2 "$DM_DEV_DIR/$vg/$lv2"

# Fail to create external origin snapshot of rw LV
not lvcreate -s $vg/$lv2 --thinpool $vg/pool

lvchange -p r $vg/$lv2

# Fail to create snapshot of active r LV
# FIXME: kernel update needed
not lvcreate -s $vg/$lv2 --thinpool $vg/pool

# Deactivate LV we want to use as external origin
# once kernel will ensure read-only this condition may go away
lvchange -an $vg/$lv2

lvcreate -s $vg/$lv2 --thinpool $vg/pool

# Fail with --thin and --snapshot
not lvcreate -s $vg/$lv5 --name $vg/$lv7 -T $vg/newpool

# Cannot specify size and thin pool.
# TODO: maybe with --poolsize
invalid lvcreate -s $vg/$lv2 -L10 --thinpool $vg/pool
invalid lvcreate -s -K $vg/$lv2 --name $vg/$lv3 -L20 --chunksize 128 --thinpool $vg/newpool

not lvcreate -s $vg/$lv2 --chunksize 64 --thinpool $vg/pool
not lvcreate -s $vg/$lv2 --zero y --thinpool $vg/pool
not lvcreate -s $vg/$lv2 --poolmetadata $vg/$lv1 --thinpool $vg/pool

# Fail with nonexistent pool
not lvcreate -s $vg/$lv2 --thinpool $vg/newpool

# Create pool and snap
lvcreate -T --name $vg/$lv3 -V10 -L20 --chunksize 128 --thinpool $vg/newpool
lvcreate -s -K $vg/$lv3 --name $vg/$lv4
lvcreate -s -K $vg/$lv2 --name $vg/$lv5 --thinpool $vg/newpool
# Make normal thin snapshot
lvcreate -s -K $vg/$lv5 --name $vg/$lv6
# We do not need to specify thinpool when doing thin snap, but it should work
lvcreate -s -K $vg/$lv5 --name $vg/$lv7 --thinpool $vg/newpool

check inactive $vg $lv2
lvchange -ay $vg/$lv2
lvcreate -s -K $vg/$lv2 --name $vg/$lv8 --thinpool $vg/newpool

lvs -o+chunksize $vg

check active $vg $lv3
check active $vg $lv4
check active $vg $lv5
check active $vg $lv6
check active $vg $lv7

fsck -n "$DM_DEV_DIR/$vg/$lv1"
fsck -n "$DM_DEV_DIR/$vg/$lv7"

vgremove -ff $vg
