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

Reply via email to