#!/usr/bin/env bash
#
# Test qcow2 reopen
#
# Copyright (C) 2015 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# creator
owner=kwolf@redhat.com

seq="$(basename $0)"
echo "QA output created by $seq"

status=1	# failure is the default!

_cleanup()
{
    _cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.qemu

_supported_fmt qcow2
_supported_proto file
_supported_os Linux
# We are going to use lazy-refcounts
_unsupported_imgopts 'compat=0.10'


_make_test_img 64M

echo === Try setting valid values for all options ===
echo

# Try all options and then check that all of the basic I/O operations still
# work on this image.
$QEMU_IO \
    -c "reopen -o lazy-refcounts=on,pass-discard-request=on" \
    -c "reopen -o lazy-refcounts=off,pass-discard-request=off" \
    -c "reopen -o pass-discard-snapshot=on,pass-discard-other=on" \
    -c "reopen -o pass-discard-snapshot=off,pass-discard-other=off" \
    -c "reopen -o overlap-check=all" \
    -c "reopen -o overlap-check=none" \
    -c "reopen -o overlap-check=cached" \
    -c "reopen -o overlap-check=constant" \
    -c "reopen -o overlap-check.template=all" \
    -c "reopen -o overlap-check.template=none" \
    -c "reopen -o overlap-check.template=cached" \
    -c "reopen -o overlap-check.template=constant" \
    -c "reopen -o overlap-check.main-header=on" \
    -c "reopen -o overlap-check.main-header=off" \
    -c "reopen -o overlap-check.active-l1=on" \
    -c "reopen -o overlap-check.active-l1=off" \
    -c "reopen -o overlap-check.active-l2=on" \
    -c "reopen -o overlap-check.active-l2=off" \
    -c "reopen -o overlap-check.refcount-table=on" \
    -c "reopen -o overlap-check.refcount-table=off" \
    -c "reopen -o overlap-check.refcount-block=on" \
    -c "reopen -o overlap-check.refcount-block=off" \
    -c "reopen -o overlap-check.snapshot-table=on" \
    -c "reopen -o overlap-check.snapshot-table=off" \
    -c "reopen -o overlap-check.inactive-l1=on" \
    -c "reopen -o overlap-check.inactive-l1=off" \
    -c "reopen -o overlap-check.inactive-l2=on" \
    -c "reopen -o overlap-check.inactive-l2=off" \
    -c "reopen -o cache-size=1M" \
    -c "reopen -o l2-cache-size=512k" \
    -c "reopen -o l2-cache-entry-size=512" \
    -c "reopen -o l2-cache-entry-size=4k" \
    -c "reopen -o l2-cache-entry-size=64k" \
    -c "reopen -o refcount-cache-size=128k" \
    -c "reopen -o cache-clean-interval=5" \
    -c "reopen -o cache-clean-interval=0" \
    -c "reopen -o cache-clean-interval=10" \
    \
    -c "write -P 55 0 32M" \
    -c "read -P 55 0 32M" \
    -c "discard 0 32M" \
    -c "write -z 0 32M" \
    -c "read -P 0 0 32M" \
    \
    "$TEST_IMG" | _filter_qemu_io


echo
echo === Try setting some invalid values ===
echo

$QEMU_IO \
    -c "reopen -o lazy-refcounts=42" \
    -c "reopen -o cache-size=1M,l2-cache-size=64k,refcount-cache-size=64k" \
    -c "reopen -o cache-size=1M,l2-cache-size=2M" \
    -c "reopen -o cache-size=1M,refcount-cache-size=2M" \
    -c "reopen -o l2-cache-entry-size=33k" \
    -c "reopen -o l2-cache-entry-size=128k" \
    -c "reopen -o refcount-cache-size=256T" \
    -c "reopen -o overlap-check=constant,overlap-check.template=all" \
    -c "reopen -o overlap-check=blubb" \
    -c "reopen -o overlap-check.template=blubb" \
    -c "reopen -o cache-clean-interval=-1" \
    "$TEST_IMG" | _filter_qemu_io

IMGOPTS="cluster_size=256k" _make_test_img 32P
$QEMU_IO \
    -c "reopen -o l2-cache-entry-size=512,l2-cache-size=1T" \
    "$TEST_IMG" | _filter_qemu_io

_make_test_img 64M

echo
echo === Test transaction semantics ===
echo

# Whether lazy-refcounts was actually enabled can easily be tested: Check if
# the dirty bit is set after a crash
$QEMU_IO \
    -c "reopen -o lazy-refcounts=on,overlap-check=blubb" \
    -c "write -P 0x5a 0 512" \
    -c "sigraise $(kill -l KILL)" \
    "$TEST_IMG" 2>&1 | _filter_qemu_io

# The dirty bit must not be set
$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features

# Similarly we can test whether corruption detection has been enabled:
# Create L1/L2, overwrite first entry in refcount block, allocate something.
# Disabling the checks should fail, so the corruption must be detected.
_make_test_img 64M
$QEMU_IO -c "write 0 64k" "$TEST_IMG" | _filter_qemu_io
poke_file "$TEST_IMG" "$((0x20000))" "\x00\x00"
$QEMU_IO \
    -c "reopen -o overlap-check=none,lazy-refcounts=42" \
    -c "write 64k 64k" \
    "$TEST_IMG" 2>&1 | _filter_qemu_io

# success, all done
echo '*** done'
rm -f $seq.full
status=0
