|
From: | Marcin Gibuła |
Subject: | Re: [Qemu-devel] [PATCH v2] kvmclock: Ensure time in migration never goes backward |
Date: | Mon, 02 Jun 2014 22:31:44 +0200 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 |
+ cpu_physical_memory_read(kvmclock_struct_pa, &time, sizeof(time)); + + delta = migration_tsc - time.tsc_timestamp;
Hi,when I was testing live storage migration with libvirt I found out that this patch can cause virtual machine to hang when completing mirror job.
This is (probably) because kvmclock_current_nsec() is called twice in a row and on second call time.tsc_timestamp is larger than migration_tsc. This causes delta to be huge and sets timer to invalid value.
The double call happens when switching from old to new disk (pivoting in libvirt's nomenclature).
Example values:First call: migration_tsc: 12052203518652476, time_tsc: 12052203301565676, delta 108543400
Second call: migration_tsc: 12052203518652476, time_tsc: 12052204478600322, delta 9223372036374801885
Perhaps it is worth adding: if (time.tsc_timestamp > migration_tsc) { return 0; } there? Untested though... -- mg
[Prev in Thread] | Current Thread | [Next in Thread] |