> From: Paolo Bonzini [mailto:pbonz...@redhat.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.
Because 'A' is written only inside some of the replay_run_event callbacks. It depends on type of the event and it's processing function inside the QEMU core. There could be no 'A' at all. Pavel Dovgalyuk