#!/usr/bin/env bash
# group: rw auto quick
#
# 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
