On 17.06.2014 08:32, Fam Zheng wrote:
This drops request handling code from dataplane, and uses code from
hw/block/virtio-blk.c.

It starts to use multiwrite as non-dataplane does.

Dataplane sets VirtIOBlock.complete_request to vring version, and calls
into non-dataplane's process handling. In complete_request_early,
qiov.size is added to vring push length, because it's also called in rw
completion now.

Signed-off-by: Fam Zheng <f...@redhat.com>
---
  hw/block/dataplane/virtio-blk.c | 183 +++++-----------------------------------
  1 file changed, 19 insertions(+), 164 deletions(-)

Is it intended that qemu segfaults after this commit with x-data-plane=on?

$ ./qemu-img create -f qcow2 test.qcow2 64M
$ x86_64-softmmu/qemu-system-x86_64 -drive if=none,file=test.qcow2,id=drv0 -device virtio-blk-pci,drive=drv0,x-data-plane=on [1] 4604 segmentation fault x86_64-softmmu/qemu-system-x86_64 -drive if=none,file=test.qcow2,id=drv0

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd75ff700 (LWP 5217)]
0x00005555556373af in virtio_blk_rw_complete (opaque=0x5555565ff5e0, ret=0) at hw/block/virtio-blk.c:99
99          bdrv_acct_done(req->dev->bs, &req->acct);
(gdb) print req
$1 = (VirtIOBlockReq *) 0x5555565ff5e0
(gdb) print req->dev
$2 = (VirtIOBlock *) 0x0
(gdb) bt
#0 0x00005555556373af in virtio_blk_rw_complete (opaque=0x5555565ff5e0, ret=0) at hw/block/virtio-blk.c:99 #1 0x0000555555840ebe in bdrv_co_em_bh (opaque=0x5555566152d0) at block.c:4675 #2 0x000055555583de77 in aio_bh_poll (ctx=ctx@entry=0x5555563a8150) at async.c:81 #3 0x000055555584b7a7 in aio_poll (ctx=0x5555563a8150, blocking=blocking@entry=true) at aio-posix.c:188 #4 0x00005555556e520e in iothread_run (opaque=0x5555563a7fd8) at iothread.c:41
#5  0x00007ffff42ba124 in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007ffff16d14bd in clone () from /usr/lib/libc.so.6

Max

Reply via email to