On 13.06.19 00:08, Max Reitz wrote:
> Quitting qemu should lead to qemu exiting pretty much immediately. That
> means if you have a block job running on a throttled block node, the
> node should ignore its throttling and the job should be cancelled
> immediately.
>
> Unfortunately, that is not what happens. Currently, the node will be
> drained (with a bdrv_drain_all()), and then again unquiesced (because
> bdrv_drain_all() ends). Then, the block job is cancelled; but at this
> point, the node is no longer drained, so it will block, as it befits a
> throttling node.
>
> To fix this issue, we have to keep all nodes drained while we cancel all
> block jobs when quitting qemu. This will make the throttle node ignore
> its throttling and thus let the block job cancel immediately.
I forgot to mention: This series depends on “block: Keep track of parent
quiescing”, specifically patch 3 (“iotests: Add @has_quit to
vm.shutdown()”).
Based-on: <20190605161118.14544-1-mreitz@redhat.com>
Max
> Max Reitz (2):
> vl: Drain before (block) job cancel when quitting
> iotests: Test quitting with job on throttled node
>
> vl.c | 11 ++++++++
> tests/qemu-iotests/218 | 55 ++++++++++++++++++++++++++++++++++++--
> tests/qemu-iotests/218.out | 4 +++
> 3 files changed, 68 insertions(+), 2 deletions(-)
>