[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 8/8] qcow2: Fix L1 write error handling in qcow2_upd
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 8/8] qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount |
Date: |
Fri, 5 Apr 2013 15:28:10 +0200 |
It ignored the error code, and at least the 'goto fail' is obvious
nonsense as it creates an endless loop (if the next attempt doesn't
magically succeed) and leaves the in-memory L1 table in big-endian
instead of converting it back.
In error cases, there's no point in writing an updated L1 table, so
skip this part for them.
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2-refcount.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 4799681..b32738f 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -851,14 +851,16 @@ fail:
}
/* Update L1 only if it isn't deleted anyway (addend = -1) */
- if (addend >= 0 && l1_modified) {
- for(i = 0; i < l1_size; i++)
+ if (ret == 0 && addend >= 0 && l1_modified) {
+ for (i = 0; i < l1_size; i++) {
cpu_to_be64s(&l1_table[i]);
- if (bdrv_pwrite_sync(bs->file, l1_table_offset, l1_table,
- l1_size2) < 0)
- goto fail;
- for(i = 0; i < l1_size; i++)
+ }
+
+ ret = bdrv_pwrite_sync(bs->file, l1_table_offset, l1_table, l1_size2);
+
+ for (i = 0; i < l1_size; i++) {
be64_to_cpus(&l1_table[i]);
+ }
}
if (l1_allocated)
g_free(l1_table);
--
1.8.1.4
- [Qemu-devel] [PULL 0/8] Block patches, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 2/8] usb-storage: Forward serial number to scsi-disk, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 1/8] virtio-blk-x: fix configuration synchronization., Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 5/8] block: drop duplicated slice extension code, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 3/8] block: fix I/O throttling accounting blind spot, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 6/8] block: clean up I/O throttling wait_time code, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 8/8] qcow2: Fix L1 write error handling in qcow2_update_snapshot_refcount,
Kevin Wolf <=
- [Qemu-devel] [PATCH 7/8] qcow2: Return real error in qcow2_update_snapshot_refcount, Kevin Wolf, 2013/04/05
- [Qemu-devel] [PATCH 4/8] block: keep I/O throttling slice time constant, Kevin Wolf, 2013/04/05