qcow2: Fix error handling in grow_refcount_table

Return the appropriate error code instead of -EIO.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Kevin Wolf 2010-01-20 15:03:03 +01:00 committed by Anthony Liguori
parent 9a8c4cceaf
commit f2b7c8b370

View File

@ -168,9 +168,12 @@ static int grow_refcount_table(BlockDriverState *bs, int min_size)
cpu_to_be64w((uint64_t*)data, table_offset); cpu_to_be64w((uint64_t*)data, table_offset);
cpu_to_be32w((uint32_t*)(data + 8), refcount_table_clusters); cpu_to_be32w((uint32_t*)(data + 8), refcount_table_clusters);
if (bdrv_pwrite(s->hd, offsetof(QCowHeader, refcount_table_offset), ret = bdrv_pwrite(s->hd, offsetof(QCowHeader, refcount_table_offset),
data, sizeof(data)) != sizeof(data)) data, sizeof(data));
if (ret != sizeof(data)) {
goto fail; goto fail;
}
qemu_free(s->refcount_table); qemu_free(s->refcount_table);
old_table_offset = s->refcount_table_offset; old_table_offset = s->refcount_table_offset;
old_table_size = s->refcount_table_size; old_table_size = s->refcount_table_size;
@ -183,7 +186,7 @@ static int grow_refcount_table(BlockDriverState *bs, int min_size)
return 0; return 0;
fail: fail:
qemu_free(new_table); qemu_free(new_table);
return -EIO; return ret < 0 ? ret : -EIO;
} }