qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH V7 3/6] qcow2: do not free clusters when fail in hea


From: Wenchao Xia
Subject: [Qemu-devel] [PATCH V7 3/6] qcow2: do not free clusters when fail in header update in qcow2_write_snapshots
Date: Thu, 5 Dec 2013 20:02:49 +0800

Signed-off-by: Wenchao Xia <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
 block/qcow2-snapshot.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index d7ab4ae..55746c4 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -299,6 +299,14 @@ static int qcow2_write_snapshots(BlockDriverState *bs, 
Error **errp)
                          "Failed in update of image header at %d with size %d",
                          (int)offsetof(QCowHeader, nb_snapshots),
                          (int)sizeof(header_data));
+
+        /*
+         * If the snapshot data part has been updated on disk, then the
+         * clusters at snapshot_offset may be used in next snapshot operation.
+         * If we free those clusters in fail path, they may be allocated and
+         * made dirty causing damage, so skip cluster free to be safe.
+         */
+        snapshots_offset = 0;
         goto fail;
     }
 
-- 
1.7.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]