From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X0VLu-0001kw-JB for qemu-devel@nongnu.org; Fri, 27 Jun 2014 08:34:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X0VLo-0005h1-FZ for qemu-devel@nongnu.org; Fri, 27 Jun 2014 08:34:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23530) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X0VLo-0005gv-70 for qemu-devel@nongnu.org; Fri, 27 Jun 2014 08:33:56 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s5RCXtHb030306 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 27 Jun 2014 08:33:55 -0400 Date: Fri, 27 Jun 2014 08:33:54 -0400 From: Luiz Capitulino Message-ID: <20140627083354.04ef285d@redhat.com> In-Reply-To: <20140627094320.GF12061@stefanha-thinkpad.muc.redhat.com> References: <1401813551-6667-1-git-send-email-pbonzini@redhat.com> <20140627094320.GF12061@stefanha-thinkpad.muc.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/5] qemu-char/monitor: make monitor_puts thread safe List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: kwolf@redhat.com, Paolo Bonzini , famz@redhat.com, qemu-devel@nongnu.org, kraxel@redhat.com On Fri, 27 Jun 2014 11:43:20 +0200 Stefan Hajnoczi wrote: > 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 I appreciate your review, but this one is already merged on master.