File kvm-qemu-preXX-qcow2-regression.patch of Package kvm
commit 6f745bdaac26bcbdd7e2ffa2a6ea29aabbbc54e1
Author: Kevin Wolf <kwolf@redhat.com>
Date: Tue Feb 23 16:06:20 2010 +0100
qcow2: Fix image creation regression
When checking for errors, commit db89119d compares with the wrong values,
failing image creation even when there was no error. Additionally, if an
error has occured, we can't preallocate the image (it's likely broken).
This unbreaks test 023 of qemu-iotests.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Index: qemu-kvm-0.12.3/block/qcow2.c
===================================================================
--- qemu-kvm-0.12.3.orig/block/qcow2.c
+++ qemu-kvm-0.12.3/block/qcow2.c
@@ -917,7 +917,7 @@ static int qcow_create2(const char *file
lseek(fd, s->refcount_block_offset, SEEK_SET);
ret = qemu_write_full(fd, s->refcount_block,
ref_clusters * s->cluster_size);
- if (ret != ref_clusters * s->cluster_size) {
+ if (ret != s->cluster_size) {
ret = -1;
goto exit;
}
@@ -930,7 +930,7 @@ exit:
close(fd);
/* Preallocate metadata */
- if (prealloc) {
+ if (ret == 0 && prealloc) {
BlockDriverState *bs;
bs = bdrv_new("");
bdrv_open(bs, filename, BDRV_O_CACHE_WB);