On Fri, Nov 10, 2017 at 03:19:34PM +0000, Stefan Hajnoczi wrote: > I/O requests hang after stop/cont commands at least since QEMU 2.10.0 > with -drive iops=100: > > (guest)$ dd if=/dev/zero of=/dev/vdb oflag=direct count=1000 > (qemu) stop > (qemu) cont > ...I/O is stuck... > > This happens because blk_set_aio_context() detaches the ThrottleState > while requests may still be in flight: > > if (tgm->throttle_state) { > throttle_group_detach_aio_context(tgm); > throttle_group_attach_aio_context(tgm, new_context); > } > > This patch encloses the detach/attach calls in a drained region so no > I/O request is left hanging. Also add assertions so we don't make the > same mistake again in the future. > > Reported-by: Yongxue Hong <yh...@redhat.com> > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > v4: > * Simplified patch in response to Berto's review > --- > block/block-backend.c | 2 ++ > block/throttle-groups.c | 6 ++++++ > 2 files changed, 8 insertions(+)
Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
signature.asc
Description: PGP signature