mirror of https://github.com/xemu-project/xemu.git
hmp: Allow using a qdev id in block_set_io_throttle
The QMP version of this command can take a qdev ID since 7a9877a026
,
but the HMP version is still using the deprecated block device name so
there's no way to refer to a block device added like this:
-blockdev node-name=disk0,driver=qcow2,file.driver=file,file.filename=hd.qcow2
-device virtio-blk-pci,id=virtio-blk-pci0,drive=disk0
This patch works around this problem by using the specified name as a
qdev ID if the block device name is not found.
Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
e18a58b4e3
commit
83592184d8
|
@ -1647,7 +1647,8 @@ ETEXI
|
||||||
STEXI
|
STEXI
|
||||||
@item block_set_io_throttle @var{device} @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}
|
@item block_set_io_throttle @var{device} @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}
|
||||||
@findex block_set_io_throttle
|
@findex block_set_io_throttle
|
||||||
Change I/O throttle limits for a block drive to @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}
|
Change I/O throttle limits for a block drive to @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}.
|
||||||
|
@var{device} can be a block device name, a qdev ID or a QOM path.
|
||||||
ETEXI
|
ETEXI
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
14
hmp.c
14
hmp.c
|
@ -1789,9 +1789,8 @@ void hmp_change(Monitor *mon, const QDict *qdict)
|
||||||
void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict)
|
void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
|
char *device = (char *) qdict_get_str(qdict, "device");
|
||||||
BlockIOThrottle throttle = {
|
BlockIOThrottle throttle = {
|
||||||
.has_device = true,
|
|
||||||
.device = (char *) qdict_get_str(qdict, "device"),
|
|
||||||
.bps = qdict_get_int(qdict, "bps"),
|
.bps = qdict_get_int(qdict, "bps"),
|
||||||
.bps_rd = qdict_get_int(qdict, "bps_rd"),
|
.bps_rd = qdict_get_int(qdict, "bps_rd"),
|
||||||
.bps_wr = qdict_get_int(qdict, "bps_wr"),
|
.bps_wr = qdict_get_int(qdict, "bps_wr"),
|
||||||
|
@ -1800,6 +1799,17 @@ void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict)
|
||||||
.iops_wr = qdict_get_int(qdict, "iops_wr"),
|
.iops_wr = qdict_get_int(qdict, "iops_wr"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* qmp_block_set_io_throttle has separate parameters for the
|
||||||
|
* (deprecated) block device name and the qdev ID but the HMP
|
||||||
|
* version has only one, so we must decide which one to pass. */
|
||||||
|
if (blk_by_name(device)) {
|
||||||
|
throttle.has_device = true;
|
||||||
|
throttle.device = device;
|
||||||
|
} else {
|
||||||
|
throttle.has_id = true;
|
||||||
|
throttle.id = device;
|
||||||
|
}
|
||||||
|
|
||||||
qmp_block_set_io_throttle(&throttle, &err);
|
qmp_block_set_io_throttle(&throttle, &err);
|
||||||
hmp_handle_error(mon, &err);
|
hmp_handle_error(mon, &err);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue