OSDN Git Service

throttle-groups: forget timer and schedule next TGM on detach
authorStefan Hajnoczi <stefanha@redhat.com>
Thu, 16 Nov 2017 11:21:50 +0000 (11:21 +0000)
committerStefan Hajnoczi <stefanha@redhat.com>
Thu, 16 Nov 2017 14:12:57 +0000 (14:12 +0000)
commit341e0b5658681f46680024cdbfc998717d85cc35
tree8fd842bb0bc340a224185f706cfda6cf4fc73e0b
parent8048082f7a11040a366942a2de8abb4c3d0020c9
throttle-groups: forget timer and schedule next TGM on detach

tg->any_timer_armed[] must be cleared when detaching pending timers from
the AioContext.  Failure to do so leads to hung I/O because it looks
like there are still timers pending when in fact they have been removed.

Other ThrottleGroupMembers might have requests pending too so it's
necessary to schedule the next TGM so it can set a timer.

This patch fixes hung I/O when QEMU is launched with drives that are in
the same throttling group:

  (guest)$ dd if=/dev/zero of=/dev/vdb oflag=direct bs=512 &
  (guest)$ dd if=/dev/zero of=/dev/vdc oflag=direct bs=512 &
  (qemu) stop
  (qemu) cont
  ...I/O is stuck...

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20171116112150.27607-1-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/throttle-groups.c