There are many existing qcow2 images that specify a backing file but no format. This has been the source of CVEs in the past, but has become more prominent of a problem now that libvirt has switched to -blockdev. With older -drive, at least the probing was always done by qemu (so the only risk of a changed format between successive boots of a guest was if qemu was upgraded and probed differently). But with newer -blockdev, libvirt must specify a format; if libvirt guesses raw where the image was formatted, this results in data corruption visible to the guest; conversely, if libvirt guesses qcow2 where qemu was using raw, this can result in potential security holes, so modern libvirt instead refuses to use images without explicit backing format. The change in libvirt to reject images without explicit backing format has pointed out that a number of tools have been far too reliant on probing in the past. It's time to set a better example in our own iotests of properly setting this parameter. iotest calls to create, rebase, and convert are all impacted to some degree. It's a bit annoying that we are inconsistent on command line - while all of those accept -o backing_file=...,backing_fmt=..., the shortcuts are different: create and rebase have -b and -F, while convert has -B but no -F. (amend has no shortcuts, but the previous patch just deprecated the use of amend to change backing chains). Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20200706203954.341758-9-eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
477 lines
17 KiB
Plaintext
477 lines
17 KiB
Plaintext
QA output created by 153
|
|
== readonly=off,force-share=on should be rejected ==
|
|
QEMU_PROG: -drive if=none,file=null-co://,readonly=off,force-share=on: force-share=on can only be used with read-only images
|
|
|
|
== Creating base image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
|
|
|
== Creating test image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
|
|
|
== Launching QEMU, opts: '' ==
|
|
|
|
== Launching another QEMU, opts: '' ==
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Launching another QEMU, opts: 'read-only=on' ==
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,read-only=on: Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Launching another QEMU, opts: 'read-only=on,force-share=on' ==
|
|
|
|
== Running utility commands ==
|
|
|
|
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
no file open, try 'help open'
|
|
|
|
_qemu_img_wrapper info TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper check TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper compare TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper map TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper amend -o size=32M TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper commit TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper convert TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper dd if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
file format: IMGFMT
|
|
backing file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
|
|
_qemu_io_wrapper -U -r -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -c open -U TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r -U TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_img_wrapper info -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper check -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper compare -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper map -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper amend -o size=32M -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper commit -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper convert -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
|
|
_qemu_img_wrapper dd -U if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
|
|
_qemu_img_wrapper bench -U -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images
|
|
{ 'execute': 'quit' }
|
|
|
|
Round done
|
|
|
|
== Creating base image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
|
|
|
== Creating test image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
|
|
|
== Launching QEMU, opts: 'read-only=on' ==
|
|
|
|
== Launching another QEMU, opts: '' ==
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,if=none,: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Launching another QEMU, opts: 'read-only=on' ==
|
|
|
|
== Launching another QEMU, opts: 'read-only=on,force-share=on' ==
|
|
|
|
== Running utility commands ==
|
|
|
|
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_img_wrapper info TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper check TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper compare TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper map TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper amend -o size=32M TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper commit TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper convert TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
|
|
_qemu_img_wrapper dd if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
|
|
_qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
file format: IMGFMT
|
|
backing file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
|
|
_qemu_io_wrapper -U -r -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -c open -U TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r -U TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_img_wrapper info -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper check -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper compare -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper map -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper amend -o size=32M -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper commit -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper convert -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
|
|
_qemu_img_wrapper dd -U if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
|
|
_qemu_img_wrapper bench -U -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images
|
|
{ 'execute': 'quit' }
|
|
|
|
Round done
|
|
|
|
== Creating base image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
|
|
|
== Creating test image ==
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
|
|
|
== Launching QEMU, opts: 'read-only=on,force-share=on' ==
|
|
|
|
== Launching another QEMU, opts: '' ==
|
|
|
|
== Launching another QEMU, opts: 'read-only=on' ==
|
|
|
|
== Launching another QEMU, opts: 'read-only=on,force-share=on' ==
|
|
|
|
== Running utility commands ==
|
|
|
|
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_io_wrapper -c open -r TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_img_wrapper info TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper check TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper compare TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper map TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper amend -o size=32M TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper commit TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
|
|
|
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
|
|
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper convert TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
|
|
_qemu_img_wrapper dd if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
|
|
_qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
file format: IMGFMT
|
|
backing file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
|
|
_qemu_io_wrapper -U -r -c read 0 512 TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper -c open -U TEST_DIR/t.qcow2 -c read 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: force-share=on can only be used with read-only images
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r -U TEST_DIR/t.qcow2 -c read 0 512
|
|
|
|
_qemu_img_wrapper info -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper check -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper compare -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper map -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper amend -o size=32M -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper commit -U TEST_DIR/t.qcow2
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
|
qemu-img: unrecognized option '-U'
|
|
Try 'qemu-img --help' for more information
|
|
|
|
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
|
|
|
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper convert -U TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.convert
|
|
|
|
_qemu_img_wrapper dd -U if=TEST_DIR/t.qcow2 of=TEST_DIR/t.qcow2.convert bs=512 count=1
|
|
|
|
_qemu_img_wrapper bench -U -c 1 TEST_DIR/t.qcow2
|
|
|
|
_qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images
|
|
{ 'execute': 'quit' }
|
|
|
|
Round done
|
|
|
|
== Two devices with the same image (read-only=off - read-only=off) ==
|
|
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Two devices with the same image (read-only=off - read-only=on) ==
|
|
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=on: Failed to get shared "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Two devices with the same image (read-only=off - read-only=on,force-share=on) ==
|
|
|
|
== Two devices with the same image (read-only=on - read-only=off) ==
|
|
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,read-only=off: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Two devices with the same image (read-only=on - read-only=on) ==
|
|
|
|
== Two devices with the same image (read-only=on - read-only=on,force-share=on) ==
|
|
|
|
== Two devices with the same image (read-only=on,force-share=on - read-only=off) ==
|
|
|
|
== Two devices with the same image (read-only=on,force-share=on - read-only=on) ==
|
|
|
|
== Two devices with the same image (read-only=on,force-share=on - read-only=on,force-share=on) ==
|
|
|
|
== Creating TEST_DIR/t.qcow2.[abc] ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
|
Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
|
Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b backing_fmt=IMGFMT
|
|
|
|
== Two devices sharing the same file in backing chain ==
|
|
|
|
== Backing image also as an active device ==
|
|
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Backing image also as an active device (ro) ==
|
|
|
|
== Symbolic link ==
|
|
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
|
|
== Active commit to intermediate layer should work when base in use ==
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
|
|
_qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
Adding drive
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } }
|
|
{"return": "OKrn"}
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
Creating overlay with qemu-img when the guest is running should be allowed
|
|
|
|
_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 -F qcow2 TEST_DIR/t.qcow2.overlay
|
|
== Closing an image should unlock it ==
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } }
|
|
{"return": ""}
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
Adding two and closing one
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT,readonly=on' } }
|
|
{"return": "OKrn"}
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d1,file=TEST_DIR/t.IMGFMT,readonly=on' } }
|
|
{"return": "OKrn"}
|
|
|
|
_qemu_img_wrapper info TEST_DIR/t.qcow2
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } }
|
|
{"return": ""}
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image [TEST_DIR/t.qcow2]?
|
|
Closing the other
|
|
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d1' } }
|
|
{"return": ""}
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
|
|
== Detecting -U and force-share conflicts ==
|
|
|
|
No conflict:
|
|
image: null-co://
|
|
file format: null-co
|
|
virtual size: 1 GiB (1073741824 bytes)
|
|
disk size: unavailable
|
|
|
|
Conflict:
|
|
qemu-img: --force-share/-U conflicts with image options
|
|
|
|
No conflict:
|
|
|
|
Conflict:
|
|
qemu-io: -U conflicts with image options
|
|
*** done
|