Patchwork [4/6] qcow2: flush in qcow2_update_snapshot_refcount()

login
register
mail settings
Submitter Stefan Hajnoczi
Date Feb. 19, 2013, 3:45 p.m.
Message ID <1361288706-13929-5-git-send-email-stefanha@redhat.com>
Download mbox | patch
Permalink /patch/221840/
State New
Headers show

Comments

Stefan Hajnoczi - Feb. 19, 2013, 3:45 p.m.
Users of qcow2_update_snapshot_refcount() do not flush consistently.
qcow2_snapshot_create() flushes but qcow2_snapshot_goto() and
qcow2_snapshot_delete() do not.

Solve this by moving the bdrv_flush() into
qcow2_update_snapshot_refcount().

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/qcow2-refcount.c | 2 +-
 block/qcow2-snapshot.c | 5 -----
 2 files changed, 1 insertion(+), 6 deletions(-)

Patch

diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 4ef3dac..df29187 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -841,7 +841,7 @@  int qcow2_update_snapshot_refcount(BlockDriverState *bs,
         }
     }
 
-    ret = 0;
+    ret = bdrv_flush(bs);
 fail:
     if (l2_table) {
         qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 429bbff..d433937 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -378,11 +378,6 @@  int qcow2_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info)
         goto fail;
     }
 
-    ret = bdrv_flush(bs);
-    if (ret < 0) {
-        goto fail;
-    }
-
     /* Append the new snapshot to the snapshot list */
     new_snapshot_list = g_malloc((s->nb_snapshots + 1) * sizeof(QCowSnapshot));
     if (s->snapshots) {