#!/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()
{
	_cleanup_test_img
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

# 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"

_check_test_img

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