On 04/05/2017 14:10, Pavel Dovgalyuk wrote: >> From: Paolo Bonzini [mailto:pbonz...@redhat.com] >> On 04/05/2017 13:54, Pavel Dovgalyuk wrote: >>>> From: Paolo Bonzini [mailto:pbonz...@redhat.com] >>>> On 04/05/2017 13:13, Pavel Dovgalyuk wrote: >>>>>>> This patch does not allows saving/loading vmstate when >>>>>>> replay events queue is not empty. There is no reliable >>>>>>> way to save events queue, because it describes internal >>>>>>> coroutine state. Therefore saving and loading operations >>>>>>> should be deferred to another record/replay step. >>>>>> >>>>>> Can it actually be non-empty after bdrv_drain_all? >>>>> >>>>> drain/flush cannot succeed, because started requests are >>>>> prisoned in the replay events queue. >>>> >>>> But that would apply to loading only. Saving should still be always >>>> possible. >>> >>> We can save it. But it wouldn't load correctly - replay queue will be empty >>> after loading. >> >> When saving you can drain, and then the events queue should be empty. >> Or I am misunderstanding how it works, which is possible too. > > Drain will wait until the queue becomes empty. > Queue is processed only at checkpoints. > Checkpoints are met in iothread (at timers processing and so on). > But iothread is waiting for finishing the drain.
What checkpoint can hang the drain during a save? Paolo