From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42810) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YDBuH-0007LX-MQ for qemu-devel@nongnu.org; Mon, 19 Jan 2015 07:58:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YDBuD-00058x-IU for qemu-devel@nongnu.org; Mon, 19 Jan 2015 07:58:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58348) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YDBuD-000568-Av for qemu-devel@nongnu.org; Mon, 19 Jan 2015 07:58:09 -0500 Message-ID: <54BCFF4E.408@redhat.com> Date: Mon, 19 Jan 2015 13:57:50 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <20150112115944.3504.66763.stgit@PASHA-ISP> <20150112120054.3504.35220.stgit@PASHA-ISP> <54B3BA89.6080705@redhat.com> <000501d02f12$61177b30$23467190$@Dovgaluk@ispras.ru> <54B4E79C.5010201@redhat.com> <000101d03162$f2d2ed50$d878c7f0$@Dovgaluk@ispras.ru> <54BCEFD1.5040702@redhat.com> <000c01d033df$ece29420$c6a7bc60$@Dovgaluk@ispras.ru> <54BCF55D.7040607@redhat.com> <000d01d033e5$90d30420$b2790c60$@Dovgaluk@ispras.ru> In-Reply-To: <000d01d033e5$90d30420$b2790c60$@Dovgaluk@ispras.ru> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [RFC PATCH v7 12/21] replay: recording and replaying clock ticks List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Dovgaluk , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, alex.bennee@linaro.org, mark.burton@greensocs.com, real@ispras.ru, batuzovk@ispras.ru, maria.klimushenkova@ispras.ru, afaerber@suse.de, fred.konrad@greensocs.com On 19/01/2015 13:43, Pavel Dovgaluk wrote: > > For example, why can't replay_run_event (or something > > that it calls) take the replay lock locally, when it writes to the log? > > replay_run_event can take the lock. Suppose that it writes data 'A'. > replay_run_event itself corresponds to some event 'E'. > We expect that the following sequence of the events should occur: 'E', 'A'. > But if something will be written to the log between 'E' and 'A' then > replay_run_event in replay mode will stuck, because it will not see its data 'A'. It would be easier if you pointed me to actual code in the series. But this doesn't seem impossible to fix by atomically writing the 'E' and 'A' in the same critical section. This is for example how QMP events are thread-safe: it just adds the JSON string corresponding to the QMP event atomically in monitor_puts. Paolo