69fbfff95e
At present there are two callers of get_tmp_filename() and they are inconsistent. One does: /* TODO: extra byte is a hack to ensure MAX_PATH space on Windows. */ char *tmp_filename = g_malloc0(PATH_MAX + 1); ... ret = get_tmp_filename(tmp_filename, PATH_MAX + 1); while the other does: s->qcow_filename = g_malloc(PATH_MAX); ret = get_tmp_filename(s->qcow_filename, PATH_MAX); As we can see different 'size' arguments are passed. There are also platform specific implementations inside the function, and the use of snprintf is really undesirable. The function name is also misleading. It creates a temporary file, not just a filename. Refactor this routine by changing its name and signature to: char *create_tmp_file(Error **errp) and use g_get_tmp_dir() / g_mkstemp() for a consistent implementation. While we are here, add some comments to mention that /var/tmp is preferred over /tmp on non-win32 hosts. Signed-off-by: Bin Meng <bin.meng@windriver.com> Message-Id: <20221010040432.3380478-2-bin.meng@windriver.com> [kwolf: Fixed incorrect errno negation and iotest 051] Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
554 lines
26 KiB
Plaintext
554 lines
26 KiB
Plaintext
QA output created by 051
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
|
|
|
=== Unknown option ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=,if=none,id=drive0
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=,if=none,id=drive0: Block format 'qcow2' does not support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=on,if=none,id=drive0
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=on,if=none,id=drive0: Block format 'qcow2' does not support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=1234,if=none,id=drive0
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=1234,if=none,id=drive0: Block format 'qcow2' does not support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=foo,if=none,id=drive0
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,unknown_opt=foo,if=none,id=drive0: Block format 'qcow2' does not support the option 'unknown_opt'
|
|
|
|
|
|
=== Unknown protocol option ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=: Block protocol 'file' doesn't support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=on
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=on: Block protocol 'file' doesn't support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=1234
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=1234: Block protocol 'file' doesn't support the option 'unknown_opt'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,file.unknown_opt=foo: Block protocol 'file' doesn't support the option 'unknown_opt'
|
|
|
|
|
|
=== Invalid format ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=foo: Unknown driver 'foo'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,driver=foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,driver=foo: Unknown driver 'foo'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,driver=raw,format=qcow2
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,driver=raw,format=qcow2: Cannot specify both 'driver' and 'format'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,driver=qcow2,format=qcow2
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,driver=qcow2,format=qcow2: Cannot specify both 'driver' and 'format'
|
|
|
|
|
|
=== Node names ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=x123456789012345678901234567890
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=x1234567890123456789012345678901
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=x1234567890123456789012345678901: Node name too long
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=All-Types.of_all0wed_chars
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=123foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=123foo: Invalid node-name: '123foo'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=_foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=_foo: Invalid node-name: '_foo'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,node-name=foo#12
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,node-name=foo#12: Invalid node-name: 'foo#12'
|
|
|
|
|
|
=== Device without drive ===
|
|
|
|
Testing: -device virtio-scsi -device scsi-hd
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device scsi-hd: drive property not set
|
|
|
|
|
|
=== Overriding backing file ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,driver=qcow2,backing.file.filename=TEST_DIR/t.qcow2.orig,if=none,id=drive0 -nodefaults
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) info block
|
|
drive0 (NODE_NAME): json:{"backing": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2.orig"}}, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2"}} (qcow2)
|
|
Removable device: not locked, tray closed
|
|
Cache mode: writeback
|
|
Backing file: TEST_DIR/t.qcow2.orig (chain depth: 1)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,driver=raw,backing.file.filename=TEST_DIR/t.qcow2.orig
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,driver=raw,backing.file.filename=TEST_DIR/t.qcow2.orig: Driver doesn't support backing files
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,file.backing.driver=file,file.backing.filename=TEST_DIR/t.qcow2.orig
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,file.backing.driver=file,file.backing.filename=TEST_DIR/t.qcow2.orig: Driver doesn't support backing files
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,file.backing.driver=qcow2,file.backing.file.filename=TEST_DIR/t.qcow2.orig
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,file.backing.driver=qcow2,file.backing.file.filename=TEST_DIR/t.qcow2.orig: Driver doesn't support backing files
|
|
|
|
|
|
=== Enable and disable lazy refcounting on the command line, plus some invalid values ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=off
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=: Parameter 'lazy-refcounts' expects 'on' or 'off'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=42
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=42: Parameter 'lazy-refcounts' expects 'on' or 'off'
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=foo
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=foo: Parameter 'lazy-refcounts' expects 'on' or 'off'
|
|
|
|
|
|
=== With version 2 images enabling lazy refcounts must fail ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=on
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=on: Lazy refcounts require a qcow2 image with at least qemu 1.1 compatibility level
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,lazy-refcounts=off
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
|
|
=== No medium ===
|
|
|
|
Testing: -drive if=floppy
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive if=ide,media=cdrom
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive if=ide
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: Device needs media, but drive is empty
|
|
|
|
Testing: -drive if=virtio
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -drive if=virtio: Device needs media, but drive is empty
|
|
|
|
Testing: -drive if=none,id=disk -device ide-cd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive if=none,id=disk -device lsi53c895a -device scsi-cd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive if=none,id=disk -device ide-hd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device ide-hd,drive=disk: Device needs media, but drive is empty
|
|
|
|
Testing: -drive if=none,id=disk -device lsi53c895a -device scsi-hd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device scsi-hd,drive=disk: Device needs media, but drive is empty
|
|
|
|
|
|
=== Attach to node in non-default iothread ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device ide-hd,drive=disk,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device ide-hd,drive=disk,share-rw=on: Cannot change iothread of active block backend
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device virtio-blk-pci,drive=disk,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device virtio-blk-pci,drive=disk,share-rw=on: Cannot change iothread of active block backend
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device lsi53c895a,id=lsi0 -device scsi-hd,bus=lsi0.0,drive=disk,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device scsi-hd,bus=lsi0.0,drive=disk,share-rw=on: HBA does not support iothreads
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device virtio-scsi,id=virtio-scsi1 -device scsi-hd,bus=virtio-scsi1.0,drive=disk,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device scsi-hd,bus=virtio-scsi1.0,drive=disk,share-rw=on: Cannot change iothread of active block backend
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device virtio-blk-pci,drive=disk,iothread=thread0,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device virtio-blk-pci,drive=disk,iothread=thread0,share-rw=on: Cannot change iothread of active block backend
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,node-name=disk -object iothread,id=thread0 -device virtio-scsi,iothread=thread0,id=virtio-scsi0 -device scsi-hd,bus=virtio-scsi0.0,drive=disk,share-rw=on -device virtio-scsi,id=virtio-scsi1,iothread=thread0 -device scsi-hd,bus=virtio-scsi1.0,drive=disk,share-rw=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
|
|
=== Read-only ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=floppy,readonly=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=ide,media=cdrom,readonly=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=ide,readonly=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: Block node is read-only
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=virtio,readonly=on
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-cd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device lsi53c895a -device scsi-cd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device ide-hd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) QEMU_PROG: -device ide-hd,drive=disk: Block node is read-only
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=disk,readonly=on -device lsi53c895a -device scsi-hd,drive=disk
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
|
|
=== Cache modes ===
|
|
|
|
Testing: -drive driver=null-co,read-zeroes=on,cache=none
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive driver=null-co,read-zeroes=on,cache=directsync
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive driver=null-co,read-zeroes=on,cache=writeback
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive driver=null-co,read-zeroes=on,cache=writethrough
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive driver=null-co,read-zeroes=on,cache=unsafe
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive driver=null-co,cache=invalid_value
|
|
QEMU_PROG: -drive driver=null-co,cache=invalid_value: invalid cache option
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,cache=writeback,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0 -nodefaults
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) info block
|
|
drive0 (NODE_NAME): json:{"backing": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2.base"}}, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2"}} (qcow2)
|
|
Removable device: not locked, tray closed
|
|
Cache mode: writeback
|
|
Backing file: TEST_DIR/t.qcow2.base (chain depth: 1)
|
|
(qemu) info block file
|
|
|
|
file: TEST_DIR/t.qcow2 (file)
|
|
Cache mode: writeback
|
|
(qemu) info block backing
|
|
backing: TEST_DIR/t.qcow2.base (qcow2, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) info block backing-file
|
|
|
|
backing-file: TEST_DIR/t.qcow2.base (file, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,cache=writethrough,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0 -nodefaults
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) info block
|
|
drive0 (NODE_NAME): json:{"backing": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2.base"}}, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2"}} (qcow2)
|
|
Removable device: not locked, tray closed
|
|
Cache mode: writethrough
|
|
Backing file: TEST_DIR/t.qcow2.base (chain depth: 1)
|
|
(qemu) info block file
|
|
|
|
file: TEST_DIR/t.qcow2 (file)
|
|
Cache mode: writeback
|
|
(qemu) info block backing
|
|
backing: TEST_DIR/t.qcow2.base (qcow2, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) info block backing-file
|
|
|
|
backing-file: TEST_DIR/t.qcow2.base (file, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,cache=unsafe,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0 -nodefaults
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) info block
|
|
drive0 (NODE_NAME): json:{"backing": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2.base"}}, "driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2"}} (qcow2)
|
|
Removable device: not locked, tray closed
|
|
Cache mode: writeback, ignore flushes
|
|
Backing file: TEST_DIR/t.qcow2.base (chain depth: 1)
|
|
(qemu) info block file
|
|
|
|
file: TEST_DIR/t.qcow2 (file)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) info block backing
|
|
backing: TEST_DIR/t.qcow2.base (qcow2, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) info block backing-file
|
|
|
|
backing-file: TEST_DIR/t.qcow2.base (file, read-only)
|
|
Cache mode: writeback, ignore flushes
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,cache=invalid_value,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0 -nodefaults
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,cache=invalid_value,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0: invalid cache option
|
|
|
|
|
|
=== Specifying the protocol layer ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,file.driver=file
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
|
|
=== Leaving out required options ===
|
|
|
|
Testing: -drive driver=file
|
|
QEMU_PROG: -drive driver=file: The 'file' block driver requires a file name
|
|
|
|
Testing: -drive driver=file,filename=
|
|
QEMU_PROG: -drive driver=file,filename=: The 'file' block driver requires a file name
|
|
|
|
Testing: -drive driver=nbd
|
|
QEMU_PROG: -drive driver=nbd: NBD server address missing
|
|
|
|
Testing: -drive driver=raw
|
|
QEMU_PROG: -drive driver=raw: A block device must be specified for "file"
|
|
|
|
Testing: -drive file.driver=file
|
|
QEMU_PROG: -drive file.driver=file: The 'file' block driver requires a file name
|
|
|
|
Testing: -drive file.driver=nbd
|
|
QEMU_PROG: -drive file.driver=nbd: NBD server address missing
|
|
|
|
Testing: -drive file.driver=raw
|
|
QEMU_PROG: -drive file.driver=raw: A block device must be specified for "file"
|
|
|
|
Testing: -drive foo=bar
|
|
QEMU_PROG: -drive foo=bar: Must specify either driver or file
|
|
|
|
|
|
=== Specifying both an option and its legacy alias ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops=1234,throttling.iops-total=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops=1234,throttling.iops-total=5678: 'throttling.iops-total' and its alias 'iops' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_rd=1234,throttling.iops-read=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_rd=1234,throttling.iops-read=5678: 'throttling.iops-read' and its alias 'iops_rd' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_wr=1234,throttling.iops-write=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_wr=1234,throttling.iops-write=5678: 'throttling.iops-write' and its alias 'iops_wr' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=1234,throttling.bps-total=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps=1234,throttling.bps-total=5678: 'throttling.bps-total' and its alias 'bps' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_rd=1234,throttling.bps-read=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_rd=1234,throttling.bps-read=5678: 'throttling.bps-read' and its alias 'bps_rd' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_wr=1234,throttling.bps-write=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_wr=1234,throttling.bps-write=5678: 'throttling.bps-write' and its alias 'bps_wr' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_max=1234,throttling.iops-total-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_max=1234,throttling.iops-total-max=5678: 'throttling.iops-total-max' and its alias 'iops_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_rd_max=1234,throttling.iops-read-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_rd_max=1234,throttling.iops-read-max=5678: 'throttling.iops-read-max' and its alias 'iops_rd_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_wr_max=1234,throttling.iops-write-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_wr_max=1234,throttling.iops-write-max=5678: 'throttling.iops-write-max' and its alias 'iops_wr_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_max=1234,throttling.bps-total-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_max=1234,throttling.bps-total-max=5678: 'throttling.bps-total-max' and its alias 'bps_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_rd_max=1234,throttling.bps-read-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_rd_max=1234,throttling.bps-read-max=5678: 'throttling.bps-read-max' and its alias 'bps_rd_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_wr_max=1234,throttling.bps-write-max=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_wr_max=1234,throttling.bps-write-max=5678: 'throttling.bps-write-max' and its alias 'bps_wr_max' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops_size=1234,throttling.iops-size=5678
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops_size=1234,throttling.iops-size=5678: 'throttling.iops-size' and its alias 'iops_size' can't be used at the same time
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,readonly=on,read-only=off
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,readonly=on,read-only=off: 'read-only' and its alias 'readonly' can't be used at the same time
|
|
|
|
|
|
=== Catching negative/large throttling values ===
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,iops=-1
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,iops=-1: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=-2
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps=-2: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_rd=-3
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_rd=-3: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps_rd_max=-3
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps_rd_max=-3: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,throttling.iops-total=-4
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,throttling.iops-total=-4: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,throttling.bps-total=-5
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,throttling.bps-total=-5: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=1
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=1000000000000000
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=1000000000000001
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps=1000000000000001: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,bps=9999999999999999
|
|
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,bps=9999999999999999: bps/iops/max values must be within [0, 1000000000000000]
|
|
|
|
|
|
=== Parsing protocol from file name ===
|
|
|
|
Testing: -hda foo:bar
|
|
QEMU_PROG: -hda foo:bar: Unknown protocol 'foo'
|
|
|
|
Testing: -drive file=foo:bar
|
|
QEMU_PROG: -drive file=foo:bar: Unknown protocol 'foo'
|
|
|
|
Testing: -drive file.filename=foo:bar
|
|
QEMU_PROG: -drive file.filename=foo:bar: Could not open 'foo:bar': No such file or directory
|
|
|
|
Testing: -hda file:TEST_DIR/t.qcow2
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=file:TEST_DIR/t.qcow2
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) quit
|
|
|
|
Testing: -drive file.filename=file:TEST_DIR/t.qcow2
|
|
QEMU_PROG: -drive file.filename=file:TEST_DIR/t.qcow2: Could not open 'file:TEST_DIR/t.qcow2': No such file or directory
|
|
|
|
|
|
=== Snapshot mode ===
|
|
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=drive0 -snapshot
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,snapshot=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file.filename=TEST_DIR/t.qcow2,driver=qcow2,snapshot=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file.filename=TEST_DIR/t.qcow2,driver=qcow2,if=none,id=drive0 -snapshot
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=file:TEST_DIR/t.qcow2,if=none,id=drive0 -snapshot
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=file:TEST_DIR/t.qcow2,snapshot=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,if=none,id=drive0 -snapshot
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,snapshot=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
read 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
Testing: -drive file=TEST_DIR/t.qcow2,snapshot=off,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x22 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) quit
|
|
|
|
read 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
Testing: -drive file=TEST_DIR/t.qcow2,snapshot=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) qemu-io drive0 "write -P 0x33 0 4k"
|
|
wrote 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
(qemu) commit drive0
|
|
(qemu) quit
|
|
|
|
read 4096/4096 bytes at offset 0
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
Testing: -drive driver=null-co,snapshot=on
|
|
QEMU_PROG: -drive driver=null-co,snapshot=on: Could not open temporary file SNAPSHOT_PATH: No such file or directory
|
|
|
|
Testing: -drive file=TEST_DIR/t.qcow2,snapshot=on,read-only=on,if=none,id=drive0
|
|
QEMU X.Y.Z monitor - type 'help' for more information
|
|
(qemu) info block
|
|
drive0 (NODE_NAME): json:{"backing": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/t.qcow2"}}, "driver": "qcow2", "file": {"driver": "file", "filename": SNAPSHOT_PATH}} (qcow2, read-only)
|
|
Removable device: not locked, tray closed
|
|
Cache mode: writeback, ignore flushes
|
|
Backing file: TEST_DIR/t.qcow2 (chain depth: 1)
|
|
(qemu) quit
|
|
|
|
*** done
|