#!/usr/bin/env bash
#
# Test large write to a qcow2 image
#
# Copyright (C) 2019 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/>.
#

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

# This is a qcow2 regression test
_supported_fmt qcow2
_supported_proto file
_supported_os Linux

# We use our own external data file and our own cluster size, and we
# require v3 images
_unsupported_imgopts data_file cluster_size 'compat=0.10'


# We need a backing file so that handle_alloc_space() will not do
# anything.  (If it were to do anything, it would simply fail its
# write-zeroes request because the request range is too large.)
TEST_IMG="$TEST_IMG.base" _make_test_img 4G
$QEMU_IO -c 'write 0 512' "$TEST_IMG.base" | _filter_qemu_io

# (Use .orig because _cleanup_test_img will remove that file)
# We need a large cluster size, see below for why (above the $QEMU_IO
# invocation)
_make_test_img -o cluster_size=2M,data_file="$TEST_IMG.orig" \
    -b "$TEST_IMG.base" 4G

# We want a null-co as the data file, because it allows us to quickly
# "write" 2G of data without using any space.
# (qemu-img create does not like it, though, because null-co does not
# support image creation.)
$QEMU_IMG amend -o data_file="json:{'driver':'null-co',,'size':'4294967296'}" \
    "$TEST_IMG"

# This gives us a range of:
#   2^31 - 512 + 768 - 1 = 2^31 + 255 > 2^31
# until the beginning of the end COW block.  (The total allocation
# size depends on the cluster size, but all that is important is that
# it exceeds INT_MAX.)
#
# 2^31 - 512 is the maximum request size.  We want this to result in a
# single allocation, and because the qcow2 driver splits allocations
# on L2 boundaries, we need large L2 tables; hence the cluster size of
# 2 MB.  (Anything from 256 kB should work, though, because then one L2
# table covers 8 GB.)
$QEMU_IO -c "write 768 $((2 ** 31 - 512))" "$TEST_IMG" | _filter_qemu_io

_check_test_img

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