#!/bin/bash
#
# Test that backing files can be smaller than the image
#
# Copyright (C) 2010 IBM, Corp.
#
# Based on 017:
# Copyright (C) 2009 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=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()
{
    rm -f "${TEST_IMG}.copy"
    _cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

# Any format supporting backing files except vmdk and qcow which do not support
# smaller backing files.
_supported_fmt qcow2 qed
_supported_proto file
_supported_os Linux

# Choose a size that is not necessarily a cluster size multiple for image
# formats that use clusters.  This will ensure that the base image doesn't end
# precisely on a cluster boundary (the easy case).
image_size=$(( 4 * 1024 * 1024 * 1024 + 3 * 512 ))

# The base image is smaller than the image file
base_size=$(( image_size - 1024 * 1024 * 1024 ))

offset=$(( base_size - 32 * 1024 ))

_make_test_img $base_size

echo "Filling base image"
echo

# Fill end of base image with a pattern, skipping every other sector
io writev $offset 512 1024 32

_check_test_img

echo "Creating test image with backing file"
echo

mv "$TEST_IMG" "$TEST_IMG.base"
_make_test_img -b "$TEST_IMG.base" $image_size

echo "Filling test image"
echo

# Write every other sector around where the base image ends
io writev $(( offset + 512 )) 512 1024 64

_check_test_img

echo "Reading"
echo

# Base image sectors
io readv $(( offset )) 512 1024 32

# Image sectors
io readv $(( offset + 512 )) 512 1024 64

# Zero sectors beyond end of base image
io_zero readv $(( offset + 32 * 1024 )) 512 1024 32

_check_test_img

# Rebase it on top of its base image
$QEMU_IMG rebase -b "$TEST_IMG.base" "$TEST_IMG"

echo
echo block-backup
echo

qemu_comm_method="monitor"
_launch_qemu -drive file="${TEST_IMG}",cache=${CACHEMODE},id=disk
h=$QEMU_HANDLE
QEMU_COMM_TIMEOUT=1

# Silence output since it contains the disk image path and QEMU's readline
# character echoing makes it very hard to filter the output
_send_qemu_cmd $h "drive_backup disk ${TEST_IMG}.copy" "(qemu)" >/dev/null
_send_qemu_cmd $h "" "Formatting" | _filter_img_create
qemu_cmd_repeat=20 _send_qemu_cmd $h "info block-jobs" "No active jobs"
_send_qemu_cmd $h 'quit' ""

# Base image sectors
TEST_IMG="${TEST_IMG}.copy" io readv $(( offset )) 512 1024 32

# Image sectors
TEST_IMG="${TEST_IMG}.copy" io readv $(( offset + 512 )) 512 1024 64

# Zero sectors beyond end of base image
TEST_IMG="${TEST_IMG}.copy" io_zero readv $(( offset + 32 * 1024 )) 512 1024 32


_check_test_img

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