dataplane: Fix startup race.
commit8caf907f07688972e5e7cd11526079b1665d6dba
authorCornelia Huck <cornelia.huck@de.ibm.com>
Wed, 4 Sep 2013 12:16:15 +0000 (4 14:16 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Fri, 6 Sep 2013 13:25:09 +0000 (6 15:25 +0200)
tree0b8f280f58f6cbc5d96865eee443a38dbcbb17b9
parent5daa74a6ebce7543aaad178c4061dc087bb4c705
dataplane: Fix startup race.

Avoid trying to setup dataplane again if dataplane setup is already in
progress. This may happen if an eventfd is triggered during setup.

I saw this occasionally with an experimental s390 irqfd implementation:

virtio_blk_handle_output
-> virtio_blk_data_plane_start
-> virtio_ccw_set_host_notifier
...
-> virtio_queue_set_host_notifier_fd_handler
-> virtio_queue_host_notifier_read
-> virtio_queue_notify_vq
-> virtio_blk_handle_output
-> virtio_blk_data_plane_start
-> vring_setup
-> hostmem_init
-> memory_listener_register
-> BOOM

As virtio-ccw tries to follow what virtio-pci does, it might be triggerable
for other platforms as well.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
hw/block/dataplane/virtio-blk.c