qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 0/6] virtio: refactor host notifiers


From: TU BO
Subject: Re: [Qemu-devel] [PATCH 0/6] virtio: refactor host notifiers
Date: Mon, 28 Mar 2016 11:55:29 +0800
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.6.0

Hi Cornelia:

I got two crash with qemu master + "[PATCH 0/6] virtio: refactor host notifiers",

I can get first crash very often.
(gdb) bt
#0  blk_aio_read_entry (opaque=0x0) at block/block-backend.c:922
#1 0x000002aa17a65f0e in coroutine_trampoline (i0=<optimized out>, i1=-1677713216) at util/coroutine-ucontext.c:78
#2  0x000003ffabfd150a in __makecontext_ret () from /lib64/libc.so.6
(gdb) list
917    static void blk_aio_read_entry(void *opaque)
918    {
919        BlkAioEmAIOCB *acb = opaque;
920        BlkRwCo *rwco = &acb->rwco;
921
922 rwco->ret = blk_co_preadv(rwco->blk, rwco->offset, rwco->qiov->size,
923                                  rwco->qiov, rwco->flags);
924        blk_aio_complete(acb);
925    }


For 2nd crash,  I just saw it once, and didn't reproduce it later.
(gdb) bt
#0  ioq_submit (address@hidden) at block/linux-aio.c:197
#1 0x000002aa3f645b36 in qemu_laio_completion_bh (opaque=0x2aa3fe2cc80) at block/linux-aio.c:143
#2  0x000002aa3f5ffbf0 in aio_bh_call (bh=<optimized out>) at async.c:65
#3  aio_bh_poll (ctx=0x2aa3fdf7e00) at async.c:93
#4 0x000002aa3f60a51e in aio_dispatch (address@hidden) at aio-posix.c:306 #5 0x000002aa3f60a7ca in aio_poll (ctx=0x2aa3fdf7e00, blocking=<optimized out>) at aio-posix.c:475 #6 0x000002aa3f53903c in iothread_run (opaque=0x2aa3fdf7220) at iothread.c:46
#7  0x000003ffa86084c6 in start_thread () from /lib64/libpthread.so.0
#8  0x000003ffa7c82ec2 in thread_start () from /lib64/libc.so.6
(gdb) list
192        struct iocb *iocbs[MAX_QUEUED_IO];
193        QSIMPLEQ_HEAD(, qemu_laiocb) completed;
194
195        do {
196            len = 0;
197            QSIMPLEQ_FOREACH(aiocb, &s->io_q.pending, next) {
198                iocbs[len++] = &aiocb->iocb;
199                if (len == MAX_QUEUED_IO) {
200                    break;
201                }


On 16/3/25 上午12:15, Cornelia Huck wrote:
Here's the next version of my refactoring of the virtio host notifiers.
This one actually survives a bit of testing for me (reboot loop).

As this patchset fixes a latent bug exposed by the recent dataplane
changes (we have a deassigned ioeventfd for a short period of time
during dataplane start, which leads to the virtqueue handler being
called in both the vcpu thread and the iothread simultaneously), I'd
like to see this in 2.6.

Changes from RFC:
- Fixed some silly errors (checking for !disabled instead of disabled,
   virtio_ccw_stop_ioeventfd() calling virtio_bus_start_ioeventfd()).
- Completely reworked set_host_notifier(): We only want to set/unset
   the actual handler function and don't want to do anything to the
   ioeventfd backing, so reduce the function to actually doing only
   that.
- With the change above, we can lose the 'assign' parameter in
   virtio_bus_stop_ioeventfd() again.
- Added more comments that hopefully make it clearer what is going on.

I'd appreciate it if people could give it some testing; I'll be back
to look at the fallout after Easter.

Cornelia Huck (6):
   virtio-bus: common ioeventfd infrastructure
   virtio-bus: have callers tolerate new host notifier api
   virtio-ccw: convert to ioeventfd callbacks
   virtio-pci: convert to ioeventfd callbacks
   virtio-mmio: convert to ioeventfd callbacks
   virtio-bus: remove old set_host_notifier callback

  hw/block/dataplane/virtio-blk.c |   6 +-
  hw/s390x/virtio-ccw.c           | 133 ++++++++++++++--------------------------
  hw/scsi/virtio-scsi-dataplane.c |   9 ++-
  hw/virtio/vhost.c               |  13 ++--
  hw/virtio/virtio-bus.c          | 132 +++++++++++++++++++++++++++++++++++++++
  hw/virtio/virtio-mmio.c         | 128 +++++++++++++-------------------------
  hw/virtio/virtio-pci.c          | 124 +++++++++++++------------------------
  include/hw/virtio/virtio-bus.h  |  31 +++++++++-
  8 files changed, 303 insertions(+), 273 deletions(-)





reply via email to

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