On 18.03.2016 19:21, Kevin Wolf wrote: > 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 <[email protected]> > --- > block.c | 48 > ++----------------------------------------- > block/block-backend.c | 11 ---------- > block/vvfat.c | 3 +-- > blockdev.c | 21 ++----------------- > include/block/block.h | 3 +-- > qemu-img.c | 2 +- > qemu-io-cmds.c | 1 - > tests/qemu-iotests/051 | 2 +- > tests/qemu-iotests/051.pc.out | 10 ++++----- > tests/qemu-iotests/142 | 6 +++--- > tests/qemu-iotests/142.out | 36 ++++++++++++++++---------------- > 11 files changed, 34 insertions(+), 109 deletions(-) >
[...]
> diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
> index 7de3754..35ee50b 100644
> --- a/qemu-io-cmds.c
> +++ b/qemu-io-cmds.c
> @@ -2149,7 +2149,6 @@ static int reopen_f(BlockBackend *blk, int argc, char
> **argv)
> opts = qopts ? qemu_opts_to_qdict(qopts, NULL) : NULL;
> qemu_opts_reset(&reopen_opts);
>
> - flags |= blk_enable_write_cache(blk) ? BDRV_O_CACHE_WB : 0;
Well... :-P
> brq = bdrv_reopen_queue(NULL, bs, opts, flags);
> bdrv_reopen_multiple(brq, &local_err);
> if (local_err) {
> diff --git a/tests/qemu-iotests/051 b/tests/qemu-iotests/051
> index 7bfe9ff..88b3d91 100755
> --- a/tests/qemu-iotests/051
> +++ b/tests/qemu-iotests/051
> @@ -218,7 +218,7 @@ run_qemu -drive driver=null-co,cache=invalid_value
>
> for cache in writeback writethrough unsafe invalid_value; do
> echo -e "info block\ninfo block file\ninfo block backing\ninfo block
> backing-file" | \
> - run_qemu -drive
> file="$TEST_IMG",cache=$cache,backing.file.filename="$TEST_IMG.base",backing.cache.no-flush=on,backing.cache.writeback=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=$device_id
> -nodefaults
> + run_qemu -drive
> file="$TEST_IMG",cache=$cache,backing.file.filename="$TEST_IMG.base",backing.cache.no-flush=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=$device_id
> -nodefaults
> done
>
> echo
> diff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out
> index 73cc15a..ec6d222 100644
> --- a/tests/qemu-iotests/051.pc.out
> +++ b/tests/qemu-iotests/051.pc.out
051.out needs the same changes.
Aside from that: Looks good.
Max
> @@ -239,7 +239,7 @@ QEMU X.Y.Z monitor - type 'help' for more information
> 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.cache.writeback=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0
> -nodefaults
> +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) i[K[Din[K[D[Dinf[K[D[D[Dinfo[K[D[D[D[Dinfo
> [K[D[D[D[D[Dinfo b[K[D[D[D[D[D[Dinfo
> bl[K[D[D[D[D[D[D[Dinfo blo[K[D[D[D[D[D[D[D[Dinfo
> bloc[K[D[D[D[D[D[D[D[D[Dinfo block[K
> drive0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
> @@ -259,7 +259,7 @@ backing-file: TEST_DIR/t.qcow2.base (file, read-only)
> Cache mode: writeback, ignore flushes
> (qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
>
> -Testing: -drive
> file=TEST_DIR/t.qcow2,cache=writethrough,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.cache.writeback=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0
> -nodefaults
> +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) i[K[Din[K[D[Dinf[K[D[D[Dinfo[K[D[D[D[Dinfo
> [K[D[D[D[D[Dinfo b[K[D[D[D[D[D[Dinfo
> bl[K[D[D[D[D[D[D[Dinfo blo[K[D[D[D[D[D[D[D[Dinfo
> bloc[K[D[D[D[D[D[D[D[D[Dinfo block[K
> drive0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
> @@ -279,7 +279,7 @@ backing-file: TEST_DIR/t.qcow2.base (file, read-only)
> Cache mode: writeback, ignore flushes
> (qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
>
> -Testing: -drive
> file=TEST_DIR/t.qcow2,cache=unsafe,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.cache.writeback=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0
> -nodefaults
> +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) i[K[Din[K[D[Dinf[K[D[D[Dinfo[K[D[D[D[Dinfo
> [K[D[D[D[D[Dinfo b[K[D[D[D[D[D[Dinfo
> bl[K[D[D[D[D[D[D[Dinfo blo[K[D[D[D[D[D[D[D[Dinfo
> bloc[K[D[D[D[D[D[D[D[D[Dinfo block[K
> drive0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
> @@ -299,8 +299,8 @@ backing-file: TEST_DIR/t.qcow2.base (file, read-only)
> Cache mode: writeback, ignore flushes
> (qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
>
> -Testing: -drive
> file=TEST_DIR/t.qcow2,cache=invalid_value,backing.file.filename=TEST_DIR/t.qcow2.base,backing.cache.no-flush=on,backing.cache.writeback=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.cache.writeback=on,backing.node-name=backing,backing.file.node-name=backing-file,file.node-name=file,if=none,id=drive0:
> invalid cache option
> +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 ===
signature.asc
Description: OpenPGP digital signature
