On Tue, Jun 03, 2014 at 06:39:05PM +0200, Paolo Bonzini wrote: > Even though virtio-blk-dataplane mostly synchronizes with the block layer > by means of the AioContext, we still need to introduce mutexes for other > QEMU subsystems that the dataplane thread might encounter on its way. > Adding rerror/werror support, for example, means that the dataplane > thread will have to generate QMP events. > > monitor_puts is the entry point for generating QMP responses and events. > Making it thread-safe lets virtio-blk-dataplane threads generate QMP > events; because the same entry point is also used for responses, a > response and an event will never be intertwined. > > Protection is inserted at both the qemu-char and monitor levels. > A generic mutex is necessary in qemu_fe_chr_write so that > qemu_chr_fe_write_all does not break its output; we reuse that > mutex in some of the character devices. > > There is no need to protect against removal of the monitor's backend, > since the monitor itself cannot be removed. > > Paolo Bonzini (6): > qemu-char: introduce qemu_chr_alloc > qemu-char: do not call chr_write directly > qemu-char: move pty_chr_update_read_handler around > qemu-char: make writes thread-safe > monitor: protect outbuf with mutex > monitor: protect event emission > > backends/baum.c | 2 +- > backends/msmouse.c | 2 +- > include/sysemu/char.h | 20 ++++++-- > monitor.c | 55 ++++++++++++++++++---- > qemu-char.c | 125 > +++++++++++++++++++++++++++++++++----------------- > spice-qemu-char.c | 2 +- > ui/console.c | 2 +- > 7 files changed, 149 insertions(+), 59 deletions(-)
Modulo Fam's missing unlock comment: Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
pgpVwyyyd0A4v.pgp
Description: PGP signature