mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
qemu-img: Check for backing image if specified during create
Or, rather, force the open of a backing image if one was specified for creation. Using a similar -unsafe option as rebase, allow qemu-img to ignore the backing file validation if possible. It may not always be possible, as in the existing case when a filesize for the new image was not specified. This is accomplished by shifting around the conditionals in bdrv_img_create, such that a backing file is always opened unless we provide BDRV_O_NO_BACKING. qemu-img is adjusted to pass this new flag when -u is provided to create. Sorry for the heinous looking diffstat, but it's mostly whitespace. Inspired by: https://bugzilla.redhat.com/show_bug.cgi?id=1213786 Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
2a32c6e82e
commit
6e6e55f5c2
12 changed files with 85 additions and 61 deletions
|
@ -85,8 +85,8 @@ run_qemu_img create -f $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" $size
|
|||
run_qemu_img create -f $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" $size
|
||||
|
||||
# Looks like a help option, but is part of the backing file name
|
||||
run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG",,help "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG",,\? "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? "$TEST_IMG" $size
|
||||
|
||||
# Try to trick qemu-img into creating escaped commas
|
||||
run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" $size
|
||||
|
|
|
@ -210,10 +210,10 @@ lazy_refcounts Postpone refcount updates
|
|||
refcount_bits Width of a reference count entry in bits
|
||||
nocow Turn off copy-on-write (valid only on btrfs)
|
||||
|
||||
Testing: create -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 128M
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,help cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Testing: create -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 128M
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,? cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Testing: create -f qcow2 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 128M
|
||||
|
|
|
@ -104,7 +104,7 @@ function add_snapshot_image()
|
|||
{
|
||||
base_image="${TEST_DIR}/$((${1}-1))-${snapshot_virt0}"
|
||||
snapshot_file="${TEST_DIR}/${1}-${snapshot_virt0}"
|
||||
_make_test_img -b "${base_image}" "$size"
|
||||
_make_test_img -u -b "${base_image}" "$size"
|
||||
mv "${TEST_IMG}" "${snapshot_file}"
|
||||
do_blockdev_add "$1" "'backing': '', " "${snapshot_file}"
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
QA output created by 111
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT.inexistent': No such file or directory
|
||||
Could not open backing image to determine size.
|
||||
*** done
|
||||
|
|
|
@ -65,7 +65,7 @@ class TestBlockdevDel(iotests.QMPTestCase):
|
|||
# Add a BlockDriverState that will be used as overlay for the base_img BDS
|
||||
def addBlockDriverStateOverlay(self, node):
|
||||
self.checkBlockDriverState(node, False)
|
||||
iotests.qemu_img('create', '-f', iotests.imgfmt,
|
||||
iotests.qemu_img('create', '-u', '-f', iotests.imgfmt,
|
||||
'-b', base_img, new_img, '1M')
|
||||
opts = {'driver': iotests.imgfmt,
|
||||
'node-name': node,
|
||||
|
|
|
@ -66,7 +66,7 @@ _send_qemu_cmd $QEMU_HANDLE \
|
|||
'return'
|
||||
|
||||
# Create snapshot
|
||||
TEST_IMG="$TEST_IMG.overlay" _make_test_img -b "$TEST_IMG" 1M
|
||||
TEST_IMG="$TEST_IMG.overlay" _make_test_img -u -b "$TEST_IMG" 1M
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"{ 'execute': 'blockdev-snapshot-sync',
|
||||
'arguments': { 'device': 'source',
|
||||
|
|
|
@ -66,7 +66,7 @@ echo "== verify pattern =="
|
|||
$QEMU_IO --object $SECRET -c "read -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo "== create overlay =="
|
||||
_make_test_img --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" -b "$TEST_IMG_BASE" $size
|
||||
_make_test_img -u --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" -b "$TEST_IMG_BASE" $size
|
||||
|
||||
echo
|
||||
echo "== writing part of a cluster =="
|
||||
|
|
|
@ -66,7 +66,7 @@ echo "== verify pattern =="
|
|||
$QEMU_IO --object $SECRET0 -c "read -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo "== create overlay =="
|
||||
_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -b "$TEST_IMG_BASE" $size
|
||||
_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -u -b "$TEST_IMG_BASE" $size
|
||||
|
||||
echo
|
||||
echo "== writing part of a cluster =="
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue