mirror of https://gitee.com/openkylin/qemu.git
hw/block: Fix the return type
When the function no success value to transmit, it usually make the function return void. It has turned out not to be a success, because it means that the extra local_err variable and error_propagate() will be needed. It leads to cumbersome code, therefore, transmit success/ failure in the return value is worth. So fix the return type of blkconf_apply_backend_options(), blkconf_geometry() and virtio_blk_data_plane_create() to avoid it. Cc: John Snow <jsnow@redhat.com> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: ac0edc1fc70c4457e5cec94405eb7d1f89f9c2c1.1511317952.git.maozy.fnst@cn.fujitsu.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
e01d6a415b
commit
9d3b155186
|
@ -51,7 +51,7 @@ void blkconf_blocksizes(BlockConf *conf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
bool blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
||||||
bool resizable, Error **errp)
|
bool resizable, Error **errp)
|
||||||
{
|
{
|
||||||
BlockBackend *blk = conf->blk;
|
BlockBackend *blk = conf->blk;
|
||||||
|
@ -76,7 +76,7 @@ void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
||||||
|
|
||||||
ret = blk_set_perm(blk, perm, shared_perm, errp);
|
ret = blk_set_perm(blk, perm, shared_perm, errp);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (conf->wce) {
|
switch (conf->wce) {
|
||||||
|
@ -99,9 +99,11 @@ void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
||||||
|
|
||||||
blk_set_enable_write_cache(blk, wce);
|
blk_set_enable_write_cache(blk, wce);
|
||||||
blk_set_on_error(blk, rerror, werror);
|
blk_set_on_error(blk, rerror, werror);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void blkconf_geometry(BlockConf *conf, int *ptrans,
|
bool blkconf_geometry(BlockConf *conf, int *ptrans,
|
||||||
unsigned cyls_max, unsigned heads_max, unsigned secs_max,
|
unsigned cyls_max, unsigned heads_max, unsigned secs_max,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
|
@ -129,15 +131,16 @@ void blkconf_geometry(BlockConf *conf, int *ptrans,
|
||||||
if (conf->cyls || conf->heads || conf->secs) {
|
if (conf->cyls || conf->heads || conf->secs) {
|
||||||
if (conf->cyls < 1 || conf->cyls > cyls_max) {
|
if (conf->cyls < 1 || conf->cyls > cyls_max) {
|
||||||
error_setg(errp, "cyls must be between 1 and %u", cyls_max);
|
error_setg(errp, "cyls must be between 1 and %u", cyls_max);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if (conf->heads < 1 || conf->heads > heads_max) {
|
if (conf->heads < 1 || conf->heads > heads_max) {
|
||||||
error_setg(errp, "heads must be between 1 and %u", heads_max);
|
error_setg(errp, "heads must be between 1 and %u", heads_max);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if (conf->secs < 1 || conf->secs > secs_max) {
|
if (conf->secs < 1 || conf->secs > secs_max) {
|
||||||
error_setg(errp, "secs must be between 1 and %u", secs_max);
|
error_setg(errp, "secs must be between 1 and %u", secs_max);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,7 @@ static void notify_guest_bh(void *opaque)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Context: QEMU global mutex held */
|
/* Context: QEMU global mutex held */
|
||||||
void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
||||||
VirtIOBlockDataPlane **dataplane,
|
VirtIOBlockDataPlane **dataplane,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
|
@ -91,11 +91,11 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
||||||
error_setg(errp,
|
error_setg(errp,
|
||||||
"device is incompatible with iothread "
|
"device is incompatible with iothread "
|
||||||
"(transport does not support notifiers)");
|
"(transport does not support notifiers)");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
if (!virtio_device_ioeventfd_enabled(vdev)) {
|
if (!virtio_device_ioeventfd_enabled(vdev)) {
|
||||||
error_setg(errp, "ioeventfd is required for iothread");
|
error_setg(errp, "ioeventfd is required for iothread");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If dataplane is (re-)enabled while the guest is running there could
|
/* If dataplane is (re-)enabled while the guest is running there could
|
||||||
|
@ -103,12 +103,12 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
||||||
*/
|
*/
|
||||||
if (blk_op_is_blocked(conf->conf.blk, BLOCK_OP_TYPE_DATAPLANE, errp)) {
|
if (blk_op_is_blocked(conf->conf.blk, BLOCK_OP_TYPE_DATAPLANE, errp)) {
|
||||||
error_prepend(errp, "cannot start virtio-blk dataplane: ");
|
error_prepend(errp, "cannot start virtio-blk dataplane: ");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Don't try if transport does not support notifiers. */
|
/* Don't try if transport does not support notifiers. */
|
||||||
if (!virtio_device_ioeventfd_enabled(vdev)) {
|
if (!virtio_device_ioeventfd_enabled(vdev)) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = g_new0(VirtIOBlockDataPlane, 1);
|
s = g_new0(VirtIOBlockDataPlane, 1);
|
||||||
|
@ -126,6 +126,8 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
||||||
s->batch_notify_vqs = bitmap_new(conf->num_queues);
|
s->batch_notify_vqs = bitmap_new(conf->num_queues);
|
||||||
|
|
||||||
*dataplane = s;
|
*dataplane = s;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Context: QEMU global mutex held */
|
/* Context: QEMU global mutex held */
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
|
typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
|
||||||
|
|
||||||
void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
|
||||||
VirtIOBlockDataPlane **dataplane,
|
VirtIOBlockDataPlane **dataplane,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s);
|
void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s);
|
||||||
|
|
|
@ -72,11 +72,11 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf)
|
||||||
/* Configuration helpers */
|
/* Configuration helpers */
|
||||||
|
|
||||||
void blkconf_serial(BlockConf *conf, char **serial);
|
void blkconf_serial(BlockConf *conf, char **serial);
|
||||||
void blkconf_geometry(BlockConf *conf, int *trans,
|
bool blkconf_geometry(BlockConf *conf, int *trans,
|
||||||
unsigned cyls_max, unsigned heads_max, unsigned secs_max,
|
unsigned cyls_max, unsigned heads_max, unsigned secs_max,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
void blkconf_blocksizes(BlockConf *conf);
|
void blkconf_blocksizes(BlockConf *conf);
|
||||||
void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
bool blkconf_apply_backend_options(BlockConf *conf, bool readonly,
|
||||||
bool resizable, Error **errp);
|
bool resizable, Error **errp);
|
||||||
|
|
||||||
/* Hard disk geometry */
|
/* Hard disk geometry */
|
||||||
|
|
Loading…
Reference in New Issue