#!/usr/bin/env bash
#
# Test qemu-nbd -A
#
# Copyright (C) 2018-2020 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
    nbd_server_stop
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

_supported_fmt qcow2
_supported_proto file
_supported_os Linux
_require_command QEMU_NBD

echo
echo "=== Initial image setup ==="
echo

TEST_IMG="$TEST_IMG.base" _make_test_img 4M
$QEMU_IO -c 'w 0 2M' -f $IMGFMT "$TEST_IMG.base" | _filter_qemu_io
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 4M
$QEMU_IO -c 'w 1M 2M' -f $IMGFMT "$TEST_IMG" | _filter_qemu_io

echo
echo "=== Check allocation over NBD ==="
echo

$QEMU_IMG map --output=json -f qcow2 "$TEST_IMG"
IMG="driver=nbd,server.type=unix,server.path=$nbd_unix_socket"
nbd_server_start_unix_socket -r -f qcow2 -A "$TEST_IMG"
# Normal -f raw NBD block status loses access to allocation information
$QEMU_IMG map --output=json --image-opts \
    "$IMG" | _filter_qemu_img_map
# But when we use -A, coupled with x-dirty-bitmap in the client for feeding
# 2-bit block status from an alternative NBD metadata context (note that
# the client code for x-dirty-bitmap intentionally collapses all depths
# beyond 2 into a single value), we can determine:
#    unallocated (depth 0) => "zero":false, "data":true
#    local (depth 1)       => "zero":false, "data":false
#    backing (depth 2+)    => "zero":true,  "data":true
$QEMU_IMG map --output=json --image-opts \
    "$IMG,x-dirty-bitmap=qemu:allocation-depth" | _filter_qemu_img_map
# More accurate results can be obtained by other NBD clients such as
# libnbd, but this test works without such external dependencies.

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