All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL for-2.11 0/1] Block patches
@ 2017-11-16 16:36 Stefan Hajnoczi
  2017-11-16 16:36 ` [Qemu-devel] [PULL for-2.11 1/1] throttle-groups: forget timer and schedule next TGM on detach Stefan Hajnoczi
  2017-11-16 19:05 ` [Qemu-devel] [PULL for-2.11 0/1] Block patches Peter Maydell
  0 siblings, 2 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2017-11-16 16:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit 8048082f7a11040a366942a2de8abb4c3d0020c9:

  Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-11-15-1' into staging (2017-11-16 11:34:24 +0000)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to 341e0b5658681f46680024cdbfc998717d85cc35:

  throttle-groups: forget timer and schedule next TGM on detach (2017-11-16 14:12:57 +0000)

----------------------------------------------------------------

----------------------------------------------------------------

Stefan Hajnoczi (1):
  throttle-groups: forget timer and schedule next TGM on detach

 block/throttle-groups.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

-- 
2.13.6

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PULL for-2.11 1/1] throttle-groups: forget timer and schedule next TGM on detach
  2017-11-16 16:36 [Qemu-devel] [PULL for-2.11 0/1] Block patches Stefan Hajnoczi
@ 2017-11-16 16:36 ` Stefan Hajnoczi
  2017-11-16 19:05 ` [Qemu-devel] [PULL for-2.11 0/1] Block patches Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2017-11-16 16:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

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 | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/block/throttle-groups.c b/block/throttle-groups.c
index 2587f19ca3..f26bcb5eee 100644
--- a/block/throttle-groups.c
+++ b/block/throttle-groups.c
@@ -593,13 +593,25 @@ void throttle_group_attach_aio_context(ThrottleGroupMember *tgm,
 
 void throttle_group_detach_aio_context(ThrottleGroupMember *tgm)
 {
+    ThrottleGroup *tg = container_of(tgm->throttle_state, ThrottleGroup, ts);
     ThrottleTimers *tt = &tgm->throttle_timers;
+    int i;
 
     /* Requests must have been drained */
     assert(tgm->pending_reqs[0] == 0 && tgm->pending_reqs[1] == 0);
     assert(qemu_co_queue_empty(&tgm->throttled_reqs[0]));
     assert(qemu_co_queue_empty(&tgm->throttled_reqs[1]));
 
+    /* Kick off next ThrottleGroupMember, if necessary */
+    qemu_mutex_lock(&tg->lock);
+    for (i = 0; i < 2; i++) {
+        if (timer_pending(tt->timers[i])) {
+            tg->any_timer_armed[i] = false;
+            schedule_next_request(tgm, i);
+        }
+    }
+    qemu_mutex_unlock(&tg->lock);
+
     throttle_timers_detach_aio_context(tt);
     tgm->aio_context = NULL;
 }
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PULL for-2.11 0/1] Block patches
  2017-11-16 16:36 [Qemu-devel] [PULL for-2.11 0/1] Block patches Stefan Hajnoczi
  2017-11-16 16:36 ` [Qemu-devel] [PULL for-2.11 1/1] throttle-groups: forget timer and schedule next TGM on detach Stefan Hajnoczi
@ 2017-11-16 19:05 ` Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2017-11-16 19:05 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 16 November 2017 at 16:36, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 8048082f7a11040a366942a2de8abb4c3d0020c9:
>
>   Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-11-15-1' into staging (2017-11-16 11:34:24 +0000)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 341e0b5658681f46680024cdbfc998717d85cc35:
>
>   throttle-groups: forget timer and schedule next TGM on detach (2017-11-16 14:12:57 +0000)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
>
> Stefan Hajnoczi (1):
>   throttle-groups: forget timer and schedule next TGM on detach
>
>  block/throttle-groups.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-11-16 19:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-16 16:36 [Qemu-devel] [PULL for-2.11 0/1] Block patches Stefan Hajnoczi
2017-11-16 16:36 ` [Qemu-devel] [PULL for-2.11 1/1] throttle-groups: forget timer and schedule next TGM on detach Stefan Hajnoczi
2017-11-16 19:05 ` [Qemu-devel] [PULL for-2.11 0/1] Block patches Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.