Eric Blake raised concerns about the inability to start block jobs with a speed limit. Current the user needs to follow up the block-stream command with block-job-set-speed. There is a window of time while the new block job is running but block-job-set-speed has not been processed yet.
This series adds an optional 'speed' parameter to block-stream so streaming can be started with a speed limit that takes effect immediately. For consistency it also renames the block-job-set-speed parameter from 'value' to 'speed'. This is externally visible, but this API has not been in a QEMU release yet so we can still do this. I considered several other approaches, including adding a default_block_job_speed field to BlockDriverState but ultimately the cleanest solution is to pass in a speed parameter on job creation. This way we do not change semantics of existing commands, we only add an optional parameter. We also do not need to add state to BlockDriverState, which is already huge and messy. The last patch fixes a small bug I found in qemu-iotests 030. Stefan Hajnoczi (6): block: use Error mechanism instead of -errno for block_job_create() block: use Error mechanism instead of -errno for block_job_set_speed() block: change block-job-set-speed argument from 'value' to 'speed' block: add 'speed' optional parameter to block-stream qemu-iotests: add block-stream with invalid speed value test qemu-iotests: fix missing 'result' variable assignment in 030 block.c | 35 +++++++++++++++++++++++++++-------- block/stream.c | 22 +++++++++++----------- block_int.h | 19 +++++++++++++------ blockdev.c | 26 ++++++++++---------------- hmp-commands.hx | 8 ++++---- hmp.c | 4 +++- qapi-schema.json | 11 ++++++++--- qmp-commands.hx | 4 ++-- tests/qemu-iotests/030 | 31 ++++++++++++++++++++++++++++++- tests/qemu-iotests/030.out | 4 ++-- 10 files changed, 110 insertions(+), 54 deletions(-) -- 1.7.10