On 23/03/2015 14:56, Stefan Hajnoczi wrote: > On Mon, Mar 23, 2015 at 01:24:15PM +0800, Fam Zheng wrote: >> Currently, throttle timers won't make any progress when VCPU is not >> running, which would stall the request queue in utils, qtest, vm >> suspending, and live migration without special handling. >> >> For example in bdrv_drain_all, all requests are resumed immediately >> without taking throttling limit into account. This means whenever it is >> called, IO throttling goes ineffective (examples: system reset, >> migration and many block job operations.). >> >> This might be some loophole that guest could exploit. >> >> If we use the host clock, we can later just trust the nested poll when >> waiting for requests. >> >> Note that for qemu-iotests case 093, which sets up qtest when running >> QEMU, we still use vm clock so the script can control the clock stepping >> in order to be deterministic. >> >> Signed-off-by: Fam Zheng <f...@redhat.com> >> >> --- >> v2: Don't break qemu-iotests 093. >> --- >> block.c | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) > > Should we make an exception for live migration to reduce downtime? > > I'm concerned that now vm_stop() can take even longer since we'll wait > for throttling.
What would have prevented the wait before? (In fact I'm not sure why we would have even terminated bdrv_drain_all, since we run it when QEMU_CLOCK_VIRTUAL is not advancing anymore!). Paolo