#!/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

# Test unaligned size of external origin and thin pool chunk size

SKIP_WITH_LVMLOCKD=1
SKIP_WITH_LVMPOLLD=1

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

. lib/inittest

which cmp || skip

#
# Main
#

# Test needs thin-pool target with unaligned ext-orig size support
aux have_thin 1 13 0 || skip

aux prepare_pvs 2 640

# Use 8K extent size
vgcreate $vg -s 8K $(cat DEVICES)

# Prepare some numeric pattern with ~64K size
seq -s ' ' -w 0 10922 > 64K

d1="$DM_DEV_DIR/$vg/$lv1"
d2="$DM_DEV_DIR/$vg/$lv2"

# Prepare external origin LV with size not being a multiple of thin pool chunk size
lvcreate -l47 -n $lv1 $vg

# Fill end with pattern
dd if=64K of="$d1" bs=8192 seek=45 count=2 conv=fdatasync

# Switch to read-only volume
lvchange -an $vg/$lv1
lvchange -pr $vg/$lv1

lvcreate -L2M -T $vg/pool -c 192K
lvcreate -s $vg/$lv1 --name $lv2 --thinpool $vg/pool

# Check the tail of $lv2 matches $lv1
dd if="$d2" of=16K bs=8192 skip=45 count=2
cmp -n 16384 -l 64K 16K

# Now extend and rewrite
lvextend -l+2 $vg/$lv2

dd if=64K of="$d2" bs=8192 seek=46 count=3 conv=fdatasync
dd if="$d2" of=24K bs=8192 skip=46 count=3 iflag=direct
cmp -n 24576 -l 64K 24K

# Consumes 2 192K chunks -> 66.67%
check lv_field $vg/$lv2 data_percent "66.67"

lvreduce -f -l-24 $vg/$lv2

dd if=64K of="$d2" bs=8192 seek=24 count=1 conv=fdatasync
dd if="$d2" of=8K bs=8192 skip=24 count=1 iflag=direct
cmp -n 8192 -l 64K 8K

# Check extension still works
lvextend -l+2 $vg/$lv2

lvremove -f $vg/pool

lvcreate -L256M -T $vg/pool -c 64M
lvcreate -s $vg/$lv1 --name $lv2 --thinpool $vg/pool
lvextend -l+2 $vg/$lv2

dd if=64K of="$d2" bs=8192 seek=45 count=4 conv=fdatasync
dd if="$d2" of=32K bs=8192 skip=45 count=4 iflag=direct
cmp -n 32768 -l 64K 32K

lvextend -L+64M $vg/$lv2

# Consumes 64M chunk -> 50%
check lv_field $vg/$lv2 data_percent "50.00"

vgremove -ff $vg
