diff options
author | Kevin Wolf <kwolf@redhat.com> | 2019-11-08 09:46:03 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2019-11-18 17:50:08 +0100 |
commit | b1f6a8e180367c945b67c6c9bbcec5c856be3779 (patch) | |
tree | 92a3ff8d2165040eaa13046d008ad2eef289a3f7 /tests | |
parent | ae0f57f0aa03571045a3accc0b22d91a4775e63c (diff) |
iotests: Test multiple blockdev-snapshot calls
Test that doing a second blockdev-snapshot doesn't make the first
overlay's backing file go away.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/qemu-iotests/273 | 76 | ||||
-rw-r--r-- | tests/qemu-iotests/273.out | 337 | ||||
-rw-r--r-- | tests/qemu-iotests/group | 1 |
3 files changed, 414 insertions, 0 deletions
diff --git a/tests/qemu-iotests/273 b/tests/qemu-iotests/273 new file mode 100755 index 0000000000..98a672516d --- /dev/null +++ b/tests/qemu-iotests/273 @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# +# Test multiple blockdev-snapshot calls with 'backing': null +# +# 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 + +do_run_qemu() +{ + echo Testing: "$@" + $QEMU -nographic -qmp-pretty stdio -nodefaults "$@" + echo +} + +run_qemu() +{ + do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_qmp | + _filter_generated_node_ids | _filter_imgfmt | _filter_actual_image_size +} + +TEST_IMG="$TEST_IMG.base" _make_test_img 64M +TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" +_make_test_img -b "$TEST_IMG.mid" + +run_qemu \ + -blockdev file,node-name=base,filename="$TEST_IMG.base" \ + -blockdev file,node-name=midf,filename="$TEST_IMG.mid" \ + -blockdev '{"driver":"qcow2","node-name":"mid","file":"midf","backing":null}' \ + -blockdev file,node-name=topf,filename="$TEST_IMG" \ + -blockdev '{"driver":"qcow2","file":"topf","node-name":"top","backing":null}' \ +<<EOF +{"execute":"qmp_capabilities"} +{"execute":"blockdev-snapshot","arguments":{"node":"base","overlay":"mid"}} +{"execute":"blockdev-snapshot","arguments":{"node":"mid","overlay":"top"}} +{"execute":"query-named-block-nodes"} +{"execute":"x-debug-query-block-graph"} +{"execute":"quit"} +EOF + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 diff --git a/tests/qemu-iotests/273.out b/tests/qemu-iotests/273.out new file mode 100644 index 0000000000..c410fee5c4 --- /dev/null +++ b/tests/qemu-iotests/273.out @@ -0,0 +1,337 @@ +QA output created by 273 +Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864 +Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid +Testing: -blockdev file,node-name=base,filename=TEST_DIR/t.IMGFMT.base -blockdev file,node-name=midf,filename=TEST_DIR/t.IMGFMT.mid -blockdev {"driver":"IMGFMT","node-name":"mid","file":"midf","backing":null} -blockdev file,node-name=topf,filename=TEST_DIR/t.IMGFMT -blockdev {"driver":"IMGFMT","file":"topf","node-name":"top","backing":null} +{ + QMP_VERSION +} +{ + "return": { + } +} +{ + "return": { + } +} +{ + "return": { + } +} +{ + "return": [ + { + "iops_rd": 0, + "detect_zeroes": "off", + "image": { + "backing-image": { + "backing-image": { + "virtual-size": 197120, + "filename": "TEST_DIR/t.IMGFMT.base", + "format": "file", + "actual-size": SIZE, + "dirty-flag": false + }, + "backing-filename-format": "file", + "virtual-size": 67108864, + "filename": "TEST_DIR/t.IMGFMT.mid", + "cluster-size": 65536, + "format": "IMGFMT", + "actual-size": SIZE, + "format-specific": { + "type": "IMGFMT", + "data": { + "compat": "1.1", + "lazy-refcounts": false, + "refcount-bits": 16, + "corrupt": false + } + }, + "full-backing-filename": "TEST_DIR/t.IMGFMT.base", + "backing-filename": "TEST_DIR/t.IMGFMT.base", + "dirty-flag": false + }, + "backing-filename-format": "IMGFMT", + "virtual-size": 67108864, + "filename": "TEST_DIR/t.IMGFMT", + "cluster-size": 65536, + "format": "IMGFMT", + "actual-size": SIZE, + "format-specific": { + "type": "IMGFMT", + "data": { + "compat": "1.1", + "lazy-refcounts": false, + "refcount-bits": 16, + "corrupt": false + } + }, + "full-backing-filename": "TEST_DIR/t.IMGFMT.mid", + "backing-filename": "TEST_DIR/t.IMGFMT.mid", + "dirty-flag": false + }, + "iops_wr": 0, + "ro": false, + "node-name": "top", + "backing_file_depth": 2, + "drv": "IMGFMT", + "iops": 0, + "bps_wr": 0, + "write_threshold": 0, + "backing_file": "TEST_DIR/t.IMGFMT.mid", + "encrypted": false, + "bps": 0, + "bps_rd": 0, + "cache": { + "no-flush": false, + "direct": false, + "writeback": true + }, + "file": "TEST_DIR/t.IMGFMT", + "encryption_key_missing": false + }, + { + "iops_rd": 0, + "detect_zeroes": "off", + "image": { + "virtual-size": 197120, + "filename": "TEST_DIR/t.IMGFMT", + "format": "file", + "actual-size": SIZE, + "dirty-flag": false + }, + "iops_wr": 0, + "ro": false, + "node-name": "topf", + "backing_file_depth": 0, + "drv": "file", + "iops": 0, + "bps_wr": 0, + "write_threshold": 0, + "encrypted": false, + "bps": 0, + "bps_rd": 0, + "cache": { + "no-flush": false, + "direct": false, + "writeback": true + }, + "file": "TEST_DIR/t.IMGFMT", + "encryption_key_missing": false + }, + { + "iops_rd": 0, + "detect_zeroes": "off", + "image": { + "backing-image": { + "virtual-size": 197120, + "filename": "TEST_DIR/t.IMGFMT.base", + "format": "file", + "actual-size": SIZE, + "dirty-flag": false + }, + "backing-filename-format": "file", + "virtual-size": 67108864, + "filename": "TEST_DIR/t.IMGFMT.mid", + "cluster-size": 65536, + "format": "IMGFMT", + "actual-size": SIZE, + "format-specific": { + "type": "IMGFMT", + "data": { + "compat": "1.1", + "lazy-refcounts": false, + "refcount-bits": 16, + "corrupt": false + } + }, + "full-backing-filename": "TEST_DIR/t.IMGFMT.base", + "backing-filename": "TEST_DIR/t.IMGFMT.base", + "dirty-flag": false + }, + "iops_wr": 0, + "ro": true, + "node-name": "mid", + "backing_file_depth": 1, + "drv": "IMGFMT", + "iops": 0, + "bps_wr": 0, + "write_threshold": 0, + "backing_file": "TEST_DIR/t.IMGFMT.base", + "encrypted": false, + "bps": 0, + "bps_rd": 0, + "cache": { + "no-flush": false, + "direct": false, + "writeback": true + }, + "file": "TEST_DIR/t.IMGFMT.mid", + "encryption_key_missing": false + }, + { + "iops_rd": 0, + "detect_zeroes": "off", + "image": { + "virtual-size": 197120, + "filename": "TEST_DIR/t.IMGFMT.mid", + "format": "file", + "actual-size": SIZE, + "dirty-flag": false + }, + "iops_wr": 0, + "ro": false, + "node-name": "midf", + "backing_file_depth": 0, + "drv": "file", + "iops": 0, + "bps_wr": 0, + "write_threshold": 0, + "encrypted": false, + "bps": 0, + "bps_rd": 0, + "cache": { + "no-flush": false, + "direct": false, + "writeback": true + }, + "file": "TEST_DIR/t.IMGFMT.mid", + "encryption_key_missing": false + }, + { + "iops_rd": 0, + "detect_zeroes": "off", + "image": { + "virtual-size": 197120, + "filename": "TEST_DIR/t.IMGFMT.base", + "format": "file", + "actual-size": SIZE, + "dirty-flag": false + }, + "iops_wr": 0, + "ro": true, + "node-name": "base", + "backing_file_depth": 0, + "drv": "file", + "iops": 0, + "bps_wr": 0, + "write_threshold": 0, + "encrypted": false, + "bps": 0, + "bps_rd": 0, + "cache": { + "no-flush": false, + "direct": false, + "writeback": true + }, + "file": "TEST_DIR/t.IMGFMT.base", + "encryption_key_missing": false + } + ] +} +{ + "return": { + "edges": [ + { + "name": "file", + "parent": 5, + "shared-perm": [ + "graph-mod", + "write-unchanged", + "consistent-read" + ], + "perm": [ + "resize", + "write", + "consistent-read" + ], + "child": 4 + }, + { + "name": "backing", + "parent": 5, + "shared-perm": [ + "graph-mod", + "resize", + "write-unchanged", + "write", + "consistent-read" + ], + "perm": [ + ], + "child": 3 + }, + { + "name": "file", + "parent": 3, + "shared-perm": [ + "graph-mod", + "write-unchanged", + "consistent-read" + ], + "perm": [ + "consistent-read" + ], + "child": 2 + }, + { + "name": "backing", + "parent": 3, + "shared-perm": [ + "graph-mod", + "resize", + "write-unchanged", + "write", + "consistent-read" + ], + "perm": [ + ], + "child": 1 + } + ], + "nodes": [ + { + "name": "top", + "type": "block-driver", + "id": 5 + }, + { + "name": "topf", + "type": "block-driver", + "id": 4 + }, + { + "name": "mid", + "type": "block-driver", + "id": 3 + }, + { + "name": "midf", + "type": "block-driver", + "id": 2 + }, + { + "name": "base", + "type": "block-driver", + "id": 1 + } + ] + } +} +{ + "return": { + } +} +{ + "timestamp": { + "seconds": TIMESTAMP, + "microseconds": TIMESTAMP + }, + "event": "SHUTDOWN", + "data": { + "guest": false, + "reason": "host-qmp-quit" + } +} + +*** done diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group index 065040398d..c56bb69031 100644 --- a/tests/qemu-iotests/group +++ b/tests/qemu-iotests/group @@ -284,3 +284,4 @@ 268 rw auto quick 270 rw backing quick 272 rw +273 backing quick |