[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 1/6] qcow2: flush refcount cache correctly in all
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH v2 1/6] qcow2: flush refcount cache correctly in alloc_refcount_block() |
Date: |
Mon, 4 Mar 2013 15:02:30 +0100 |
update_refcount() affects the refcount cache, it does not write to disk.
Therefore bdrv_flush(bs->file) does nothing. We need to flush the
refcount cache in order to write out the refcount updates!
While we're here also add error returns when qcow2_cache_flush() fails.
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block/qcow2-refcount.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 55543ed..e8b5d0a 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -201,7 +201,10 @@ static int alloc_refcount_block(BlockDriverState *bs,
*refcount_block = NULL;
/* We write to the refcount table, so we might depend on L2 tables */
- qcow2_cache_flush(bs, s->l2_table_cache);
+ ret = qcow2_cache_flush(bs, s->l2_table_cache);
+ if (ret < 0) {
+ return ret;
+ }
/* Allocate the refcount block itself and mark it as used */
int64_t new_block = alloc_clusters_noref(bs, s->cluster_size);
@@ -237,7 +240,10 @@ static int alloc_refcount_block(BlockDriverState *bs,
goto fail_block;
}
- bdrv_flush(bs->file);
+ ret = qcow2_cache_flush(bs, s->refcount_block_cache);
+ if (ret < 0) {
+ goto fail_block;
+ }
/* Initialize the new refcount block only after updating its refcount,
* update_refcount uses the refcount cache itself */
--
1.8.1.4
- [Qemu-devel] [PATCH v2 0/6] qcow2: cache flush fixes and performance improvements, Stefan Hajnoczi, 2013/03/04
- [Qemu-devel] [PATCH v2 1/6] qcow2: flush refcount cache correctly in alloc_refcount_block(),
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH v2 2/6] qcow2: flush refcount cache correctly in qcow2_write_snapshots(), Stefan Hajnoczi, 2013/03/04
- [Qemu-devel] [PATCH v2 3/6] qcow2: set L2 cache dependency in qcow2_alloc_bytes(), Stefan Hajnoczi, 2013/03/04
- [Qemu-devel] [PATCH v2 5/6] qcow2: drop flush in update_cluster_refcount(), Stefan Hajnoczi, 2013/03/04
- [Qemu-devel] [PATCH v2 6/6] qcow2: drop unnecessary flush in qcow2_update_snapshot_refcount(), Stefan Hajnoczi, 2013/03/04
- [Qemu-devel] [PATCH v2 4/6] qcow2: flush in qcow2_update_snapshot_refcount(), Stefan Hajnoczi, 2013/03/04
- Re: [Qemu-devel] [PATCH v2 0/6] qcow2: cache flush fixes and performance improvements, Kevin Wolf, 2013/03/04