f45b638f9f
This patch adds a test case to 153 which tries to overwrite an image (using qemu-img create) while it is in use. Without the original user explicitly sharing the necessary permissions (writing and truncation), this should not be allowed. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 20180509215336.31304-4-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
432 lines
14 KiB
Plaintext
432 lines
14 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
|
|
|
|
== 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?
|
|
|
|
== 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?
|
|
|
|
== Launching another QEMU, opts: 'read-only=on,force-share=on' ==
|
|
|
|
== Running utility commands ==
|
|
|
|
_qemu_io_wrapper -c read 0 512 TEST_DIR/t.qcow2
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_qemu_io_wrapper -r -c read 0 512 TEST_DIR/t.qcow2
|
|
can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
|
|
Is another process using the image?
|
|
|
|
_qemu_io_wrapper -c open TEST_DIR/t.qcow2 -c read 0 512
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
no file open, try 'help open'
|
|
|
|
_qemu_io_wrapper -c open -r TEST_DIR/t.qcow2 -c read 0 512
|
|
can't open device TEST_DIR/t.qcow2: Failed to get shared "write" lock
|
|
Is another process using the image?
|
|
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?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_qemu_img_wrapper amend -o TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
|
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
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
|
|
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 -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
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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
|
|
|
|
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
|
|
|
|
== 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?
|
|
|
|
== 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
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
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 TEST_DIR/t.qcow2
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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?
|
|
|
|
_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?
|
|
|
|
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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?
|
|
|
|
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
|
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
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
|
|
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 -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
|
|
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
|
Is another process using the image?
|
|
|
|
_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
|
|
|
|
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
|
|
|
|
== 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 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
|
|
|
|
_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
|
|
file format: IMGFMT
|
|
|
|
== Running utility commands -U ==
|
|
|
|
_qemu_io_wrapper -U -c read 0 512 TEST_DIR/t.qcow2
|
|
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
|
|
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 -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
|
|
|
|
_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
|
|
|
|
Round done
|
|
== Creating TEST_DIR/t.qcow2.[abc] ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
|
|
Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
|
|
Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b
|
|
|
|
== 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?
|
|
|
|
== 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?
|
|
|
|
== Active commit to intermediate layer should work when base in use ==
|
|
{"return": {}}
|
|
|
|
_qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c
|
|
{"return": {}}
|
|
Adding drive
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
Creating overlay with qemu-img when the guest is running should be allowed
|
|
|
|
_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.overlay
|
|
== Closing an image should unlock it ==
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
Adding two and closing one
|
|
|
|
_qemu_img_wrapper info TEST_DIR/t.qcow2
|
|
|
|
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
|
can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
|
Is another process using the image?
|
|
Closing the other
|
|
|
|
_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.0G (1073741824 bytes)
|
|
disk size: unavailable
|
|
|
|
Conflict:
|
|
qemu-img: --force-share/-U conflicts with image options
|
|
|
|
No conflict:
|
|
|
|
Conflict:
|
|
-U conflicts with image options
|
|
*** done
|