#!/bin/bash
#
# Test lseek influence on qcow2 block-status
#
# Block layer may recursively check block_status in file child of qcow2, if
# qcow2 driver returned DATA. There are several test cases to check influence
# of lseek on block_status performance. To see real difference run on tmpfs.
#
# Copyright (c) 2019 Virtuozzo International GmbH. All rights reserved.
#
# Tests originally written by Kevin Wolf
#
# 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/>.
#

if [ "$#" -lt 1 ]; then
    echo "Usage: $0 SOURCE_FILE"
    exit 1
fi

ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../../../.." >/dev/null 2>&1 && pwd )"
QEMU_IMG="$ROOT_DIR/qemu-img"
QEMU_IO="$ROOT_DIR/qemu-io"

size=1G
src="$1"

# test-case plain

(
$QEMU_IMG create -f qcow2 "$src" $size
for i in $(seq 16384 -1 0); do
    echo "write $((i * 65536)) 64k"
done | $QEMU_IO "$src"
) > /dev/null

echo -n "plain: "
/usr/bin/time -f %e $QEMU_IMG convert -n "$src" null-co://

# test-case forward

(
$QEMU_IMG create -f qcow2 "$src" $size
for i in $(seq 0 2 16384); do
    echo "write $((i * 65536)) 64k"
done | $QEMU_IO "$src"
for i in $(seq 1 2 16384); do
    echo "write $((i * 65536)) 64k"
done | $QEMU_IO "$src"
) > /dev/null

echo -n "forward: "
/usr/bin/time -f %e $QEMU_IMG convert -n "$src" null-co://

# test-case prealloc

$QEMU_IMG create -f qcow2 -o preallocation=metadata "$src" $size > /dev/null

echo -n "prealloc: "
/usr/bin/time -f %e $QEMU_IMG convert -n "$src" null-co://
