mirror of https://github.com/xemu-project/xemu.git
virtio-scsi: don't lock AioContext around virtio_queue_aio_attach_host_notifier()
virtio_queue_aio_attach_host_notifier() does not require the AioContext lock. Stop taking the lock and add an explicit smp_wmb() because we were relying on the implicit barrier in the AioContext lock before. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-ID: <20231204164259.1515217-3-stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
eaad0fe260
commit
765ca51606
|
@ -149,23 +149,17 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev)
|
|||
|
||||
memory_region_transaction_commit();
|
||||
|
||||
/*
|
||||
* These fields are visible to the IOThread so we rely on implicit barriers
|
||||
* in aio_context_acquire() on the write side and aio_notify_accept() on
|
||||
* the read side.
|
||||
*/
|
||||
s->dataplane_starting = false;
|
||||
s->dataplane_started = true;
|
||||
smp_wmb(); /* paired with aio_notify_accept() */
|
||||
|
||||
if (s->bus.drain_count == 0) {
|
||||
aio_context_acquire(s->ctx);
|
||||
virtio_queue_aio_attach_host_notifier(vs->ctrl_vq, s->ctx);
|
||||
virtio_queue_aio_attach_host_notifier_no_poll(vs->event_vq, s->ctx);
|
||||
|
||||
for (i = 0; i < vs->conf.num_queues; i++) {
|
||||
virtio_queue_aio_attach_host_notifier(vs->cmd_vqs[i], s->ctx);
|
||||
}
|
||||
aio_context_release(s->ctx);
|
||||
}
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue