]> Git Repo - qemu.git/commit
throttle-groups: drain before detaching ThrottleState
authorStefan Hajnoczi <[email protected]>
Fri, 10 Nov 2017 15:19:34 +0000 (15:19 +0000)
committerStefan Hajnoczi <[email protected]>
Mon, 13 Nov 2017 14:02:09 +0000 (14:02 +0000)
commitdc868fb03b9b829ed9d2ecdae0fcc12f3fe19b4f
tree21130555d5c54a977907bd8e7e8e1fc836fc6874
parent632a77354317df32c7ff2d23424f0559c23fee51
throttle-groups: drain before detaching ThrottleState

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 <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Alberto Garcia <[email protected]>
Message-id: 20171110151934[email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
block/block-backend.c
block/throttle-groups.c
This page took 0.025828 seconds and 4 git commands to generate.