qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1/1] Revert "linux-aio: Cancel BH if not needed"


From: Roman Pen
Subject: [Qemu-devel] [PATCH 1/1] Revert "linux-aio: Cancel BH if not needed"
Date: Fri, 24 Jun 2016 15:40:08 +0200

This reverts commit ccb9dc10129954d0bcd7814298ed445e684d5a2a,
which causes MQ stuck while doing IO thru virtio_blk.

I reproduce very easily this stuck on recent v4 Stefan's set
using num-queues=4:

  "[PATCH v4 0/7] virtio-blk: multiqueue support"
  https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg05999.html

Some debug output from guest:
-----------------------------

address@hidden ~]# cat /sys/block/vda/inflight
     106       98
address@hidden ~]# cat /sys/block/vda/mq/*/tags
nr_tags=128, reserved_tags=0, bits_per_word=5
nr_free=89, nr_reserved=0
active_queues=0
nr_tags=128, reserved_tags=0, bits_per_word=5
nr_free=83, nr_reserved=0
active_queues=0
nr_tags=128, reserved_tags=0, bits_per_word=5
nr_free=31, nr_reserved=0
active_queues=0
nr_tags=128, reserved_tags=0, bits_per_word=5
nr_free=105, nr_reserved=0
active_queues=0

Fio configuration:
------------------

[global]
description=Emulation of Storage Server Access Pattern
bssplit=512/20:1k/16:2k/9:4k/12:8k/19:16k/10:32k/8:64k/4
fadvise_hint=0
rw=randrw:2
direct=1

ioengine=libaio
iodepth=64
iodepth_batch_submit=64
iodepth_batch_complete=64
numjobs=8
gtod_reduce=1
group_reporting=1

time_based=1
runtime=30

[job]
filename=/dev/vda

VM configuration:
-----------------

-object iothread,id=t0 \
-drive 
if=none,id=d0,file=/dev/nullb0,format=raw,snapshot=off,cache=none,aio=native \
-device 
virtio-blk-pci,drive=d0,iothread=t0,num-queues=4,disable-modern=off,disable-legacy=on
 \

Signed-off-by: Roman Pen <address@hidden>
Cc: Kevin Wolf <address@hidden>
Cc: Paolo Bonzini <address@hidden>
Cc: Stefan Hajnoczi <address@hidden>
Cc: address@hidden
---
 block/linux-aio.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/block/linux-aio.c b/block/linux-aio.c
index e468960..fe7cece 100644
--- a/block/linux-aio.c
+++ b/block/linux-aio.c
@@ -149,8 +149,6 @@ static void qemu_laio_completion_bh(void *opaque)
     if (!s->io_q.plugged && !QSIMPLEQ_EMPTY(&s->io_q.pending)) {
         ioq_submit(s);
     }
-
-    qemu_bh_cancel(s->completion_bh);
 }
 
 static void qemu_laio_completion_cb(EventNotifier *e)
@@ -158,7 +156,7 @@ static void qemu_laio_completion_cb(EventNotifier *e)
     LinuxAioState *s = container_of(e, LinuxAioState, e);
 
     if (event_notifier_test_and_clear(&s->e)) {
-        qemu_laio_completion_bh(s);
+        qemu_bh_schedule(s->completion_bh);
     }
 }
 
-- 
2.8.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]