#!/bin/sh
# Copyright (C) 2008-2013 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.

test_description='Test duplicate PVs'

SKIP_WITH_LVMLOCKD=1
SKIP_WITH_LVMPOLLD=1
SKIP_WITH_CLVMD=1

. lib/inittest

aux prepare_devs 6 16

# The LV-using-PV tests (DEV_USED_FOR_LV, where a PV is
# preferred if an active LV is using it) depend on sysfs
# info that is not available in RHEL5 kernels.
aux driver_at_least 4 15 || skip

aux lvmconf 'devices/allow_changes_with_duplicate_pvs = 0'

pvcreate "$dev1"
pvcreate "$dev2"
vgcreate $vg1 "$dev1"
vgcreate $vg2 "$dev2"
pvresize --setphysicalvolumesize 8m "$dev2"
lvcreate -an -l1 -n $lv1 $vg1

# Both devs are shown and used by the VG

pvs 2>&1 | tee out

grep "$dev1" out
grep "$dev2" out
grep "$dev1" out | grep $vg1
grep "$dev2" out | grep $vg2
check pv_field "$dev1" pv_allocatable "allocatable"
check pv_field "$dev2" pv_allocatable "allocatable"
not grep WARNING out

UUID1=$(pvs --noheadings -o uuid $dev1 | xargs)
UUID2=$(pvs --noheadings -o uuid $dev2 | xargs)

SIZE1=$(pvs --noheadings -o dev_size $dev1)
SIZE2=$(pvs --noheadings -o dev_size $dev2)

MINOR1=$(pvs --noheadings -o minor $dev1)
MINOR2=$(pvs --noheadings -o minor $dev2)

check pv_field "$dev1" dev_size $SIZE1
check pv_field "$dev2" dev_size $SIZE2

# Copy dev1 over dev2.
dd if="$dev1" of="$dev2" bs=1M iflag=direct oflag=direct,sync
pvscan --cache

# The single preferred dev is shown from 'pvs'.
pvs -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

# Don't know yet if dev1 or dev2 is preferred, so count just one is.
test $(grep $vg1 main | wc -l) -eq 1
test $(grep $UUID1 main | wc -l) -eq 1
not grep duplicate main
not grep $vg2 main
not grep $UUID2 main

grep "was already found on" warn
grep "prefers device" warn

# Find which is the preferred dev and which is the duplicate.
PV=$(pvs --noheadings -o name -S uuid=$UUID1)
if [ $PV == "$dev1" ]; then
	DUP=$dev2
else
	DUP=$dev1
fi

echo PV is $PV
echo DUP is $DUP

grep $PV main
not grep $DUP main

# Repeat above checking preferred/dup in output
pvs 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep $PV main
not grep $DUP main

# The duplicate dev is included in 'pvs -a'
pvs -a -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev1" main
grep "$dev2" main
grep $PV main
grep $DUP main
test $(grep duplicate main | wc -l) -eq 1
grep $DUP main | grep duplicate
not grep $vg2 main
not grep $UUID2 main
grep "$dev1" main | grep $vg1
grep "$dev2" main | grep $vg1
grep "$dev1" main | grep $UUID1
grep "$dev2" main | grep $UUID1

grep "was already found on" warn
grep "prefers device" warn

#
# Passing a dev name arg always includes that dev.
#

pvs -o+uuid "$dev1" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev1" main
not grep "$dev2" main
grep $UUID1 main
grep $vg1 main
grep "was already found on" warn
grep "prefers device" warn

pvs -o+uuid "$dev2" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev2" main
not grep "$dev1" main
grep $UUID1 main
grep $vg1 main
grep "was already found on" warn
grep "prefers device" warn

pvs -o+uuid,duplicate "$dev1" "$dev2" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev1" main
grep "$dev2" main
grep "$dev1" main | grep $vg1
grep "$dev2" main | grep $vg1
grep "$dev1" main | grep $UUID1
grep "$dev2" main | grep $UUID1
test $(grep duplicate main | wc -l) -eq 1
grep $DUP main | grep duplicate

#
# Test specific report fields for each dev.
#

pvs --noheadings -o vg_name,vg_uuid "$dev1" 2>&1 | tee out1
pvs --noheadings -o vg_name,vg_uuid "$dev2" 2>&1 | tee out2

grep -v WARNING out1 > main1 || true
grep -v WARNING out2 > main2 || true
diff main1 main2
rm out1 out2 main1 main2 || true

check pv_field "$dev1" pv_in_use "used"
check pv_field "$dev2" pv_in_use "used"

check pv_field $PV  pv_allocatable "allocatable"
check pv_field $DUP pv_allocatable ""

check pv_field $PV  pv_duplicate ""
check pv_field $DUP pv_duplicate "duplicate"

pvs --noheadings -o name,pv_allocatable "$dev1" "$dev2" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep $PV main
grep $DUP main
grep $dev1 main
grep $dev2 main
test $(grep allocatable main | wc -l) -eq 1

pvs --noheadings -o name,pv_duplicate "$dev1" "$dev2" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep $PV main
grep $DUP main
grep $dev1 main
grep $dev2 main
test $(grep duplicate main | wc -l) -eq 1

#
# A filter can be used to show only one.
#

pvs --config "devices { filter=[ \"a|$dev2|\", \"r|.*|\" ] }" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

not grep $dev1 main
grep $dev2 main

not grep "was already found on" warn
not grep "prefers device" warn


pvs --config "devices { filter=[ \"a|$dev1|\", \"r|.*|\"] }" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep $dev1 main
not grep $dev2 main

not grep "was already found on" warn
not grep "prefers device" warn

# PV size and minor is still reported correctly for each.

check pv_field "$dev1" dev_size $SIZE1
check pv_field "$dev2" dev_size $SIZE2

check pv_field "$dev1" minor $MINOR1
check pv_field "$dev2" minor $MINOR2

# With allow_changes_with_duplicate_pvs=0, a VG with duplicate devs
# cannot be modified or activated.

not lvcreate -an -l1 -n $lv2 $vg1
not lvremove $vg1/$lv1
not lvchange -ay $vg1/$lv1
not vgremove $vg1


# With allow_changes_with_duplicate_pvs=1, changes above are permitted.

aux lvmconf 'devices/allow_changes_with_duplicate_pvs = 1'

lvcreate -an -l1 -n $lv2 $vg1
lvremove $vg1/$lv1
lvchange -ay $vg1/$lv2
lvchange -an $vg1/$lv2
lvremove $vg1/$lv2
vgremove -f $vg1
pvremove -ff -y "$dev1"
pvremove -ff -y "$dev2"


# dev3 and dev4 are copies, orphans

pvcreate "$dev3"
pvcreate "$dev4"
pvresize --setphysicalvolumesize 8m "$dev4"

UUID3=$(pvs --noheadings -o uuid $dev3 | xargs)
UUID4=$(pvs --noheadings -o uuid $dev4 | xargs)

SIZE3=$(pvs --noheadings -o dev_size $dev3)
SIZE4=$(pvs --noheadings -o dev_size $dev4)

check pv_field "$dev3" dev_size $SIZE3
check pv_field "$dev4" dev_size $SIZE4

pvs 2>&1 | tee out

grep "$dev3" out
grep "$dev4" out

dd if="$dev3" of="$dev4" bs=1M iflag=direct oflag=direct,sync
pvscan --cache

# One appears with 'pvs'

pvs -o+uuid 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

test $(grep $UUID3 main | wc -l) -eq 1
not grep $UUID4 main

grep "was already found on" warn
grep "prefers device" warn

# Both appear with 'pvs -a'

pvs -a -o+uuid 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

test $(grep $UUID3 main | wc -l) -eq 2

grep "$dev3" main
grep "$dev4" main

grep $UUID3 main
not grep $UUID4 main

grep "was already found on" warn
grep "prefers device" warn

# Show each dev individually and both together

pvs -o+uuid "$dev3" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev3" main
not grep "$dev4" main

grep "was already found on" warn
grep "prefers device" warn

pvs -o+uuid "$dev4" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

not grep "$dev3" main
grep "$dev4" main

grep "was already found on" warn
grep "prefers device" warn

pvs -o+uuid "$dev3" "$dev4" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev3" main
grep "$dev4" main

grep "was already found on" warn
grep "prefers device" warn

# Same sizes shown.

check pv_field "$dev3" dev_size $SIZE3
check pv_field "$dev4" dev_size $SIZE4

# Verify that devs being used by an active LV are
# preferred over duplicates that are not used by an LV.

dd if=/dev/zero of="$dev3" bs=1M oflag=direct,sync || true
dd if=/dev/zero of="$dev4" bs=1M oflag=direct,sync || true
pvscan --cache

vgcreate $vg2 $dev3 $dev4
lvcreate -l1 -n $lv1 $vg2 "$dev3"
lvcreate -l1 -n $lv2 $vg2 "$dev4"

dd if="$dev3" of="$dev5" bs=1M iflag=direct oflag=direct,sync
dd if="$dev4" of="$dev6" bs=1M iflag=direct oflag=direct,sync
pvscan --cache

pvs -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev3" main
grep "$dev4" main
not grep duplicate main
check pv_field "$dev3" pv_duplicate ""
check pv_field "$dev4" pv_duplicate ""
check pv_field "$dev5" pv_duplicate "duplicate"
check pv_field "$dev6" pv_duplicate "duplicate"

grep "prefers device $dev3" warn
grep "prefers device $dev4" warn
not grep "prefers device $dev5" warn
not grep "prefers device $dev6" warn

pvs -a -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

test $(grep duplicate main | wc -l) -eq 2
grep "$dev3" main
grep "$dev4" main
grep "$dev5" main
grep "$dev6" main

grep "prefers device $dev3" warn
grep "prefers device $dev4" warn
not grep "prefers device $dev5" warn
not grep "prefers device $dev6" warn

pvs -o+uuid,duplicate "$dev3" "$dev4" "$dev5" "$dev6" 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

test $(grep duplicate main | wc -l) -eq 2
grep "$dev3" main
grep "$dev4" main
grep "$dev5" main
grep "$dev6" main

grep "prefers device $dev3" warn
grep "prefers device $dev4" warn
not grep "prefers device $dev5" warn
not grep "prefers device $dev6" warn


dd if=/dev/zero of="$dev5" bs=1M oflag=direct,sync || true
dd if=/dev/zero of="$dev6" bs=1M oflag=direct,sync || true
pvscan --cache

lvremove -y $vg2/$lv1
lvremove -y $vg2/$lv2
vgremove $vg2
pvremove -ff -y "$dev3"
pvremove -ff -y "$dev4"

dd if=/dev/zero of="$dev3" bs=1M oflag=direct,sync || true
dd if=/dev/zero of="$dev4" bs=1M oflag=direct,sync || true
pvscan --cache

# Reverse devs in the previous in case dev3/dev4 would be
# preferred even without an active LV using them.

vgcreate $vg2 "$dev5" "$dev6"
lvcreate -l1 -n $lv1 $vg2 "$dev5"
lvcreate -l1 -n $lv2 $vg2 "$dev6"

dd if="$dev5" of="$dev3" bs=1M iflag=direct oflag=direct,sync
dd if="$dev6" of="$dev4" bs=1M iflag=direct oflag=direct,sync
pvscan --cache

pvs -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

grep "$dev5" main
grep "$dev6" main
not grep duplicate main
check pv_field "$dev5" pv_duplicate ""
check pv_field "$dev6" pv_duplicate ""
check pv_field "$dev3" pv_duplicate "duplicate"
check pv_field "$dev4" pv_duplicate "duplicate"

pvs -a -o+uuid,duplicate 2>&1 | tee out

rm warn main || true
grep    WARNING out > warn || true
grep -v WARNING out > main || true

test $(grep duplicate main | wc -l) -eq 2
grep "$dev3" main
grep "$dev4" main
grep "$dev5" main
grep "$dev6" main

grep "prefers device $dev5" warn
grep "prefers device $dev6" warn
not grep "prefers device $dev3" warn
not grep "prefers device $dev4" warn

dd if=/dev/zero of="$dev3" bs=1M oflag=direct,sync || true
dd if=/dev/zero of="$dev4" bs=1M oflag=direct,sync || true
pvscan --cache

lvremove -y $vg2/$lv1
lvremove -y $vg2/$lv2
vgremove $vg2

