The previous patches have successively made blk->enable_write_cache the true source for the information whether a writethrough mode must be implemented. The corresponding BDRV_O_CACHE_WB is only useless baggage we're carrying around, so now's the time to remove it. At the same time, we remove the 'cache.writeback' option parsing on the BDS level as the only effect was setting the BDRV_O_CACHE_WB flag. This change requires test cases that explicitly enabled the option to drop it. Other than that and the change of the error message when writethrough is enabled on the BDS level (from "Can't set writethrough mode" to "doesn't support the option"), there should be no change in behaviour. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com>
26 KiB
26 KiB
QA output created by 142
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
Formatting 'TEST_DIR/t.IMGFMT.snap', fmt=IMGFMT size=134217728
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
=== Simple test for all cache modes ===
Testing: -drive file=TEST_DIR/t.qcow2,cache=none
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=directsync
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=writeback
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=writethrough
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=unsafe
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=invalid_value
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,cache=invalid_value: invalid cache option
=== Check inheritance of cache modes ===
--- Configure cache modes on the command line ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Cache modes after reopen (live snapshot) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache modes with reopen (qemu-io command, flags) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache modes with reopen (qemu-io command, options) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache modes after snapshot ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache mode in parent, child has explicit option in JSON ---
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, ignore flushes
=== Check that referenced BDSes don't inherit ===
--- Configure cache modes on the command line ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Cache modes after reopen (live snapshot) ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache modes with reopen (qemu-io command, flags) ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
=== Reopening children instead of the root ===
--- Basic reopen ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache mode after reopening child ---
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
*** done
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
Formatting 'TEST_DIR/t.IMGFMT.snap', fmt=IMGFMT size=134217728
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
=== Simple test for all cache modes ===
Testing: -drive file=TEST_DIR/t.qcow2,cache=none
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=directsync
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=writeback
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=writethrough
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=unsafe
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
Testing: -drive file=TEST_DIR/t.qcow2,cache=invalid_value
QEMU_PROG: -drive file=TEST_DIR/t.qcow2,cache=invalid_value: invalid cache option
=== Check inheritance of cache modes ===
--- Configure cache modes on the command line ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Cache modes after reopen (live snapshot) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache modes with reopen (qemu-io command, flags) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache modes with reopen (qemu-io command, options) ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache modes after snapshot ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache mode in parent, child has explicit option in JSON ---
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, ignore flushes
=== Check that referenced BDSes don't inherit ===
--- Configure cache modes on the command line ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Cache modes after reopen (live snapshot) ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
--- Change cache modes with reopen (qemu-io command, flags) ---
cache.direct=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.direct=on on file
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
cache.direct=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback
cache.direct=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
cache.writeback=off on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.writeback=off on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on blk
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on file
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
Cache mode: writeback
Cache mode: writeback
cache.no-flush=on on backing
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback
cache.no-flush=on on backing-file
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
=== Reopening children instead of the root ===
--- Basic reopen ---
cache.direct=on on none0
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.direct=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on none0
Cache mode: writethrough
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.writeback=off on file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,file.cache.writeback=off: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.writeback=off on backing
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.cache.writeback=off: Could not open backing file: Block format 'qcow2' does not support the option 'cache.writeback'
cache.writeback=off on backing-file
QEMU_PROG: -drive if=none,file=TEST_DIR/t.qcow2,backing.file.filename=TEST_DIR/t.qcow2.base,node-name=image,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,backing.file.cache.writeback=off: Could not open backing file: Block protocol 'file' doesn't support the option 'cache.writeback'
cache.no-flush=on on none0
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, ignore flushes
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, ignore flushes
Cache mode: writeback, direct
Cache mode: writeback, direct
cache.no-flush=on on backing
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct, ignore flushes
Cache mode: writeback, direct, ignore flushes
cache.no-flush=on on backing-file
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, direct, ignore flushes
--- Change cache mode after reopening child ---
Cache mode: writeback, direct
Cache mode: writeback
Cache mode: writeback, direct
Cache mode: writeback, ignore flushes
*** done