error: Use error_prepend() where it makes obvious sense
Done with this Coccinelle semantic patch @@ expression FMT, E1, E2; expression list ARGS; @@ - error_setg(E1, FMT, ARGS, error_get_pretty(E2)); + error_propagate(E1, E2);/*###*/ + error_prepend(E1, FMT/*@@@*/, ARGS); followed by manual cleanup, first because I can't figure out how to make Coccinelle transform strings, and second to get rid of now superfluous error_propagate(). We now use or propagate the original error whole instead of just its message obtained with error_get_pretty(). This avoids suppressing its hint (see commit50b7b00
), but I can't see how the errors touched in this commit could come with hints. It also improves the message printed with &error_abort when we screw up (see commit1e9b65b
). Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
c29b77f955
commit
e43bfd9c87
19
block.c
19
block.c
@ -1349,12 +1349,10 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options,
|
|||||||
ret = bdrv_open_inherit(&backing_hd,
|
ret = bdrv_open_inherit(&backing_hd,
|
||||||
*backing_filename ? backing_filename : NULL,
|
*backing_filename ? backing_filename : NULL,
|
||||||
reference, options, 0, bs, &child_backing,
|
reference, options, 0, bs, &child_backing,
|
||||||
&local_err);
|
errp);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
bs->open_flags |= BDRV_O_NO_BACKING;
|
bs->open_flags |= BDRV_O_NO_BACKING;
|
||||||
error_setg(errp, "Could not open backing file: %s",
|
error_prepend(errp, "Could not open backing file: ");
|
||||||
error_get_pretty(local_err));
|
|
||||||
error_free(local_err);
|
|
||||||
goto free_exit;
|
goto free_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1460,12 +1458,11 @@ int bdrv_append_temp_snapshot(BlockDriverState *bs, int flags, Error **errp)
|
|||||||
opts = qemu_opts_create(bdrv_qcow2.create_opts, NULL, 0,
|
opts = qemu_opts_create(bdrv_qcow2.create_opts, NULL, 0,
|
||||||
&error_abort);
|
&error_abort);
|
||||||
qemu_opt_set_number(opts, BLOCK_OPT_SIZE, total_size, &error_abort);
|
qemu_opt_set_number(opts, BLOCK_OPT_SIZE, total_size, &error_abort);
|
||||||
ret = bdrv_create(&bdrv_qcow2, tmp_filename, opts, &local_err);
|
ret = bdrv_create(&bdrv_qcow2, tmp_filename, opts, errp);
|
||||||
qemu_opts_del(opts);
|
qemu_opts_del(opts);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg(errp, "Could not create temporary overlay '%s': %s",
|
error_prepend(errp, "Could not create temporary overlay '%s': ",
|
||||||
tmp_filename, error_get_pretty(local_err));
|
tmp_filename);
|
||||||
error_free(local_err);
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3729,9 +3726,9 @@ bool bdrv_op_is_blocked(BlockDriverState *bs, BlockOpType op, Error **errp)
|
|||||||
if (!QLIST_EMPTY(&bs->op_blockers[op])) {
|
if (!QLIST_EMPTY(&bs->op_blockers[op])) {
|
||||||
blocker = QLIST_FIRST(&bs->op_blockers[op]);
|
blocker = QLIST_FIRST(&bs->op_blockers[op]);
|
||||||
if (errp) {
|
if (errp) {
|
||||||
error_setg(errp, "Node '%s' is busy: %s",
|
*errp = error_copy(blocker->reason);
|
||||||
bdrv_get_device_or_node_name(bs),
|
error_prepend(errp, "Node '%s' is busy: ",
|
||||||
error_get_pretty(blocker->reason));
|
bdrv_get_device_or_node_name(bs));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1762,9 +1762,8 @@ static void qcow2_invalidate_cache(BlockDriverState *bs, Error **errp)
|
|||||||
ret = qcow2_open(bs, options, flags, &local_err);
|
ret = qcow2_open(bs, options, flags, &local_err);
|
||||||
QDECREF(options);
|
QDECREF(options);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_setg(errp, "Could not reopen qcow2 layer: %s",
|
error_propagate(errp, local_err);
|
||||||
error_get_pretty(local_err));
|
error_prepend(errp, "Could not reopen qcow2 layer: ");
|
||||||
error_free(local_err);
|
|
||||||
return;
|
return;
|
||||||
} else if (ret < 0) {
|
} else if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not reopen qcow2 layer");
|
error_setg_errno(errp, -ret, "Could not reopen qcow2 layer");
|
||||||
|
@ -1611,9 +1611,8 @@ static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp)
|
|||||||
memset(s, 0, sizeof(BDRVQEDState));
|
memset(s, 0, sizeof(BDRVQEDState));
|
||||||
ret = bdrv_qed_open(bs, NULL, bs->open_flags, &local_err);
|
ret = bdrv_qed_open(bs, NULL, bs->open_flags, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_setg(errp, "Could not reopen qed layer: %s",
|
error_propagate(errp, local_err);
|
||||||
error_get_pretty(local_err));
|
error_prepend(errp, "Could not reopen qed layer: ");
|
||||||
error_free(local_err);
|
|
||||||
return;
|
return;
|
||||||
} else if (ret < 0) {
|
} else if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not reopen qed layer");
|
error_setg_errno(errp, -ret, "Could not reopen qed layer");
|
||||||
|
@ -142,7 +142,6 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
|||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
VirtIOBlockDataPlane *s;
|
VirtIOBlockDataPlane *s;
|
||||||
Error *local_err = NULL;
|
|
||||||
BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(vdev)));
|
BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(vdev)));
|
||||||
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
|
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
|
||||||
|
|
||||||
@ -163,11 +162,8 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
|||||||
/* If dataplane is (re-)enabled while the guest is running there could be
|
/* If dataplane is (re-)enabled while the guest is running there could be
|
||||||
* block jobs that can conflict.
|
* block jobs that can conflict.
|
||||||
*/
|
*/
|
||||||
if (blk_op_is_blocked(conf->conf.blk, BLOCK_OP_TYPE_DATAPLANE,
|
if (blk_op_is_blocked(conf->conf.blk, BLOCK_OP_TYPE_DATAPLANE, errp)) {
|
||||||
&local_err)) {
|
error_prepend(errp, "cannot start dataplane thread: ");
|
||||||
error_setg(errp, "cannot start dataplane thread: %s",
|
|
||||||
error_get_pretty(local_err));
|
|
||||||
error_free(local_err);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,11 +217,9 @@ static void vhost_scsi_realize(DeviceState *dev, Error **errp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vs->conf.vhostfd) {
|
if (vs->conf.vhostfd) {
|
||||||
vhostfd = monitor_fd_param(cur_mon, vs->conf.vhostfd, &err);
|
vhostfd = monitor_fd_param(cur_mon, vs->conf.vhostfd, errp);
|
||||||
if (vhostfd == -1) {
|
if (vhostfd == -1) {
|
||||||
error_setg(errp, "vhost-scsi: unable to parse vhostfd: %s",
|
error_prepend(errp, "vhost-scsi: unable to parse vhostfd: ");
|
||||||
error_get_pretty(err));
|
|
||||||
error_free(err);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -329,9 +329,9 @@ static USBDevice *usb_try_create_simple(USBBus *bus, const char *name,
|
|||||||
}
|
}
|
||||||
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
error_setg(errp, "Failed to initialize USB device '%s': %s",
|
error_propagate(errp, err);
|
||||||
name, error_get_pretty(err));
|
error_prepend(errp, "Failed to initialize USB device '%s': ",
|
||||||
error_free(err);
|
name);
|
||||||
object_unparent(OBJECT(dev));
|
object_unparent(OBJECT(dev));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user