qcow2: Return real error code in load_refcount_block
This fixes load_refcount_block which completely ignored the return value of write_refcount_block and always returned -EIO for bdrv_pwrite failure. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
2eaa8f6338
commit
e14e8ba5d0
@ -93,14 +93,19 @@ static int load_refcount_block(BlockDriverState *bs,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (cache_refcount_updates) {
|
if (cache_refcount_updates) {
|
||||||
write_refcount_block(bs);
|
ret = write_refcount_block(bs);
|
||||||
|
if (ret < 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_LOAD);
|
BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_LOAD);
|
||||||
ret = bdrv_pread(bs->file, refcount_block_offset, s->refcount_block_cache,
|
ret = bdrv_pread(bs->file, refcount_block_offset, s->refcount_block_cache,
|
||||||
s->cluster_size);
|
s->cluster_size);
|
||||||
if (ret != s->cluster_size)
|
if (ret < 0) {
|
||||||
return -EIO;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
s->refcount_block_cache_offset = refcount_block_offset;
|
s->refcount_block_cache_offset = refcount_block_offset;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user