From 6f745bdaac26bcbdd7e2ffa2a6ea29aabbbc54e1 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Tue, 23 Feb 2010 16:06:20 +0100 Subject: [PATCH] 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 Signed-off-by: Anthony Liguori --- block/qcow2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 7f3aef58326..bf8170ed02b 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -984,7 +984,7 @@ static int qcow_create2(const char *filename, int64_t total_size, lseek(fd, s->refcount_block_offset, SEEK_SET); ret = qemu_write_full(fd, s->refcount_block, ref_clusters * s->cluster_size); - if (ret != s->cluster_size) { + if (ret != ref_clusters * s->cluster_size) { ret = -1; goto exit; } @@ -996,7 +996,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 | BDRV_O_RDWR); -- 2.39.5