#!/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" -F $IMGFMT 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
