[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 41/47] block.c: Don't return success for bdrv_append_
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 41/47] block.c: Don't return success for bdrv_append_temp_snapshot() failure |
Date: |
Fri, 27 Jun 2014 21:09:00 +0200 |
From: Chen Gang <address@hidden>
When failure occurs, 'ret' need be set, or may return 0 to indicate
success. Previously, an error was set in errp, but 0 was returned
anyway. So let bdrv_append_temp_snapshot() return an error code and
use that for the bdrv_open() return value.
Also, error_propagate() need be called only one time within a function.
Signed-off-by: Chen Gang <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 7 ++++---
include/block/block.h | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/block.c b/block.c
index 9ecadf0..6856c18 100644
--- a/block.c
+++ b/block.c
@@ -1278,7 +1278,7 @@ done:
return ret;
}
-void bdrv_append_temp_snapshot(BlockDriverState *bs, int flags, Error **errp)
+int bdrv_append_temp_snapshot(BlockDriverState *bs, int flags, Error **errp)
{
/* TODO: extra byte is a hack to ensure MAX_PATH space on Windows. */
char *tmp_filename = g_malloc0(PATH_MAX + 1);
@@ -1296,6 +1296,7 @@ void bdrv_append_temp_snapshot(BlockDriverState *bs, int
flags, Error **errp)
/* Get the required size from the image */
total_size = bdrv_getlength(bs);
if (total_size < 0) {
+ ret = total_size;
error_setg_errno(errp, -total_size, "Could not get image size");
goto out;
}
@@ -1342,6 +1343,7 @@ void bdrv_append_temp_snapshot(BlockDriverState *bs, int
flags, Error **errp)
out:
g_free(tmp_filename);
+ return ret;
}
/*
@@ -1491,9 +1493,8 @@ int bdrv_open(BlockDriverState **pbs, const char
*filename,
/* For snapshot=on, create a temporary qcow2 overlay. bs points to the
* temporary snapshot afterwards. */
if (snapshot_flags) {
- bdrv_append_temp_snapshot(bs, snapshot_flags, &local_err);
+ ret = bdrv_append_temp_snapshot(bs, snapshot_flags, &local_err);
if (local_err) {
- error_propagate(errp, local_err);
goto close_and_fail;
}
}
diff --git a/include/block/block.h b/include/block/block.h
index b53833d..7e92f54 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -214,7 +214,7 @@ int bdrv_open_image(BlockDriverState **pbs, const char
*filename,
bool allow_none, Error **errp);
void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd);
int bdrv_open_backing_file(BlockDriverState *bs, QDict *options, Error **errp);
-void bdrv_append_temp_snapshot(BlockDriverState *bs, int flags, Error **errp);
+int bdrv_append_temp_snapshot(BlockDriverState *bs, int flags, Error **errp);
int bdrv_open(BlockDriverState **pbs, const char *filename,
const char *reference, QDict *options, int flags,
BlockDriver *drv, Error **errp);
--
1.8.3.1
- [Qemu-devel] [PULL 17/47] block: check for RESIZE blocker in the QMP command, not bdrv_truncate(), (continued)
- [Qemu-devel] [PULL 17/47] block: check for RESIZE blocker in the QMP command, not bdrv_truncate(), Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 15/47] block: Remove a special case for protocols, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 19/47] quorum: Add the rewrite-corrupted parameter to quorum, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 20/47] block: Add node-name argument to drive-mirror, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 22/47] virtio-blk: Convert VirtIOBlockReq.elem to pointer, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 23/47] virtio-blk: Drop bounce buffer from dataplane code, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 30/47] block: make bdrv_query_stats() static, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 31/47] block: acquire AioContext in qmp_query_blockstats(), Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 32/47] virtio-blk: Make request completion function virtual, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 40/47] qemu-iotests: Add TestRepairQuorum to 041 to test drive-mirror node-name mode., Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 41/47] block.c: Don't return success for bdrv_append_temp_snapshot() failure,
Kevin Wolf <=
- [Qemu-devel] [PULL 42/47] iotests: Allow out-of-tree run, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 43/47] configure: Enable out-of-tree iotests, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 45/47] iotests: Use $PYTHON for Python scripts, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 44/47] iotests: Source common.env, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 47/47] iotests: Fix 083 for out-of-tree builds, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 46/47] iotests: Drop Python version from 065's Shebang, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 21/47] virtio-blk: Move VirtIOBlockReq to header, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 37/47] blockjob: Fix recent BLOCK_JOB_READY regression, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 38/47] blockjob: Fix recent BLOCK_JOB_ERROR regression, Kevin Wolf, 2014/06/27
- [Qemu-devel] [PULL 36/47] virtio-blk: Rename complete_request_early to complete_request_vring, Kevin Wolf, 2014/06/27