Am 06.06.2012 00:04, schrieb Paolo Bonzini: > Writethrough does not need special-casing anymore in the qcow2 caches. > The block layer adds flushes after every guest-initiated data write, > and these will also flush the qcow2 caches to the OS. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c > index 5d6ea72..66f3915 100644 > --- a/block/qcow2-refcount.c > +++ b/block/qcow2-refcount.c > @@ -726,13 +726,6 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs, > int64_t old_offset, old_l2_offset; > int i, j, l1_modified = 0, nb_csectors, refcount; > int ret; > - bool old_l2_writethrough, old_refcount_writethrough; > - > - /* Switch caches to writeback mode during update */ > - old_l2_writethrough = > - qcow2_cache_set_writethrough(bs, s->l2_table_cache, false); > - old_refcount_writethrough = > - qcow2_cache_set_writethrough(bs, s->refcount_block_cache, false); > > l2_table = NULL; > l1_table = NULL; > @@ -856,11 +849,6 @@ fail: > qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table); > } > > - /* Enable writethrough cache mode again */ > - qcow2_cache_set_writethrough(bs, s->l2_table_cache, old_l2_writethrough); > - qcow2_cache_set_writethrough(bs, s->refcount_block_cache, > - old_refcount_writethrough); > - Here you're dropping an implicit cache flush. Not sure if it really matters, though. Maybe we should add flushes in the right places in higher level functions like bdrv_snapshot_create(). Kevin