From 5b3639371c3e220b41cd2eae8c34c49ad38ef527 Mon Sep 17 00:00:00 2001 From: Max Reitz Date: Tue, 17 May 2016 16:41:31 +0200 Subject: block: Make bdrv_open() return a BDS There are no callers to bdrv_open() or bdrv_open_inherit() left that pass a pointer to a non-NULL BDS pointer as the first argument of these functions, so we can finally drop that parameter and just make them return the new BDS. Generally, the following pattern is applied: bs = NULL; ret = bdrv_open(&bs, ..., &local_err); if (ret < 0) { error_propagate(errp, local_err); ... } by bs = bdrv_open(..., errp); if (!bs) { ret = -EINVAL; ... } Of course, there are only a few instances where the pattern is really pure. Signed-off-by: Max Reitz Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf --- blockdev.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'blockdev.c') diff --git a/blockdev.c b/blockdev.c index 0e37e0922f..7d4a1ba1a6 100644 --- a/blockdev.c +++ b/blockdev.c @@ -657,7 +657,6 @@ static BlockDriverState *bds_tree_init(QDict *bs_opts, Error **errp) QemuOpts *opts; Error *local_error = NULL; BlockdevDetectZeroesOptions detect_zeroes; - int ret; int bdrv_flags = 0; opts = qemu_opts_create(&qemu_root_bds_opts, NULL, 1, errp); @@ -688,9 +687,8 @@ static BlockDriverState *bds_tree_init(QDict *bs_opts, Error **errp) bdrv_flags |= BDRV_O_INACTIVE; } - bs = NULL; - ret = bdrv_open(&bs, NULL, NULL, bs_opts, bdrv_flags, errp); - if (ret < 0) { + bs = bdrv_open(NULL, NULL, bs_opts, bdrv_flags, errp); + if (!bs) { goto fail_no_bs_opts; } @@ -1643,7 +1641,7 @@ typedef struct ExternalSnapshotState { static void external_snapshot_prepare(BlkActionState *common, Error **errp) { - int flags = 0, ret; + int flags = 0; QDict *options = NULL; Error *local_err = NULL; /* Device and node name of the image to generate the snapshot from */ @@ -1768,11 +1766,10 @@ static void external_snapshot_prepare(BlkActionState *common, flags |= BDRV_O_NO_BACKING; } - assert(state->new_bs == NULL); - ret = bdrv_open(&state->new_bs, new_image_file, snapshot_ref, options, - flags, errp); + state->new_bs = bdrv_open(new_image_file, snapshot_ref, options, flags, + errp); /* We will manually add the backing_hd field to the bs later */ - if (ret != 0) { + if (!state->new_bs) { return; } @@ -2540,7 +2537,7 @@ void qmp_blockdev_change_medium(const char *device, const char *filename, { BlockBackend *blk; BlockDriverState *medium_bs = NULL; - int bdrv_flags, ret; + int bdrv_flags; QDict *options = NULL; Error *err = NULL; @@ -2584,9 +2581,8 @@ void qmp_blockdev_change_medium(const char *device, const char *filename, qdict_put(options, "driver", qstring_from_str(format)); } - assert(!medium_bs); - ret = bdrv_open(&medium_bs, filename, NULL, options, bdrv_flags, errp); - if (ret < 0) { + medium_bs = bdrv_open(filename, NULL, options, bdrv_flags, errp); + if (!medium_bs) { goto fail; } @@ -3199,7 +3195,6 @@ static void do_drive_backup(const char *device, const char *target, Error *local_err = NULL; int flags; int64_t size; - int ret; if (!has_speed) { speed = 0; @@ -3283,10 +3278,8 @@ static void do_drive_backup(const char *device, const char *target, qdict_put(options, "driver", qstring_from_str(format)); } - target_bs = NULL; - ret = bdrv_open(&target_bs, target, NULL, options, flags, &local_err); - if (ret < 0) { - error_propagate(errp, local_err); + target_bs = bdrv_open(target, NULL, options, flags, errp); + if (!target_bs) { goto out; } @@ -3511,7 +3504,6 @@ void qmp_drive_mirror(const char *device, const char *target, QDict *options = NULL; int flags; int64_t size; - int ret; blk = blk_by_name(device); if (!blk) { @@ -3620,11 +3612,9 @@ void qmp_drive_mirror(const char *device, const char *target, /* Mirroring takes care of copy-on-write using the source's backing * file. */ - target_bs = NULL; - ret = bdrv_open(&target_bs, target, NULL, options, - flags | BDRV_O_NO_BACKING, &local_err); - if (ret < 0) { - error_propagate(errp, local_err); + target_bs = bdrv_open(target, NULL, options, flags | BDRV_O_NO_BACKING, + errp); + if (!target_bs) { goto out; } -- cgit v1.2.3