This is v3 of the alternative implementation of writethrough caching for QEMU 1.2. By always opening drivers in writethrough mode and doing flushes manually after every write, it achieves three objectives: 1) it makes flipping the cache mode extremely easy; 2) it lets formats control flushes during metadata updates even in writethrough mode, which makes the updates more efficient; 3) it makes cache=writethrough automatically flush metadata without needing extra work in the formats.
The last point should also make implementation of "QED mode" a little bit simpler. v2->v3: patch 3 changed again to always add the flag. Patches reordered, the new order is better now that BDRV_O_CACHE_WB is added to all BlockDriverStates now. v1->v2: only patch 3 changed, was completely backwards in v1 Paolo Bonzini (7): block: flush in writethrough mode after writes savevm: flush after saving vm state block: copy enable_write_cache in bdrv_append block: add bdrv_set_enable_write_cache block: always open drivers in writeback mode ide: support enable/disable write cache qcow2: always operate caches in writeback mode block.c | 29 +++++++++++++++++++++++++---- block.h | 1 + block/qcow2-cache.c | 25 ++----------------------- block/qcow2-refcount.c | 12 ------------ block/qcow2.c | 7 ++----- block/qcow2.h | 5 +---- hw/ide/core.c | 21 ++++++++++++++++++--- savevm.c | 2 +- 8 files changed, 50 insertions(+), 52 deletions(-) -- 1.7.10.1