#!/bin/bash
#
# Test qcow2 lazy refcounts
#
# Copyright (C) 2012 Red Hat, Inc.
# Copyright IBM, Corp. 2010
#
# Based on test 038.
#
# 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=stefanha@linux.vnet.ibm.com

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
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

_supported_fmt qcow2
_supported_proto generic
_supported_os Linux
_unsupported_qemu_io_options --nocache

size=128M

echo
echo "== Checking that image is clean on shutdown =="

IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

$QEMU_IO -c "write -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io

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

echo
echo "== Creating a dirty image file =="

IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

old_ulimit=$(ulimit -c)
ulimit -c 0 # do not produce a core dump on abort(3)
$QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"

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

echo
echo "== Read-only access must still work =="

$QEMU_IO -r -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io

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

echo
echo "== Repairing the image file must succeed =="

_check_test_img -r all

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

echo
echo "== Data should still be accessible after repair =="

$QEMU_IO -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io

echo
echo "== Opening a dirty image read/write should repair it =="

IMGOPTS="compat=1.1,lazy_refcounts=on"
_make_test_img $size

old_ulimit=$(ulimit -c)
ulimit -c 0 # do not produce a core dump on abort(3)
$QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"

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

$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io

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

echo
echo "== Creating an image file with lazy_refcounts=off =="

IMGOPTS="compat=1.1,lazy_refcounts=off"
_make_test_img $size

old_ulimit=$(ulimit -c)
ulimit -c 0 # do not produce a core dump on abort(3)
$QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"

# The dirty bit must not be set since lazy_refcounts=off
./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
_check_test_img

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

