
On 6/2/25 16:18, Daniel P. Berrangé wrote:
On Mon, Jun 02, 2025 at 03:27:32PM +0200, Michal Privoznik via Devel wrote:
From: Michal Privoznik <mprivozn@redhat.com>
The virDomainCoreDump() API has VIR_DUMP_LIVE flag which is documented to leave vCPUs running throughout making of the dump of guest memory. Well, this is not the case for QEMU which pauses vCPUs unconditionally (it calls vm_stop() in dump_init()). Document this quirk. And also mention it in 'virsh dump --live' manapage.
How long does QEMU keep the vCPUs paused for ? If it is paused for the entire duration of the dump, then IMHO it is a libvirt bug to allow the VIR_DUMP_LIVE flag to have been set to begin with, rather than a behavioural quirk.
Essentially I'd consider VIR_DUMP_LIVE to mean that the vCPUs are running for the time window when the guest memory is being captured.
If there are small synchronizaiton steps a hypervisor does which result in temporarily pausing CPUs for only a fraction of a second that is acceptable wrt VIR_DUMP_LIVE semantics.
Unfortunately, it's the former: 2025-06-02 08:44:54.531+0000: 343: info : qemuMonitorIOWrite:339 : QEMU_MONITOR_IO_WRITE: mon=0x7f9a4c04bcb0 buf={"execute":"dump-guest-memory","arguments":{"paging":false,"protocol":"fd:dump","detach":true},"id":"libvirt-502"} len=116 ret=116 errno=0 2025-06-02 08:44:54.532+0000: 343: debug : qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds": 1748853894, "microseconds": 532565}, "event": "STOP"}] ... 2025-06-02 08:44:55.720+0000: 343: debug : qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds": 1748853895, "microseconds": 720431}, "event": "DUMP_COMPLETED", "data": {"result": {"total": 4303486976, "status": "completed", "completed": 4303486976}}}] 2025-06-02 08:44:55.720+0000: 343: info : .... 2025-06-02 08:44:55.720+0000: 343: debug : qemuProcessHandleDumpCompleted:1645 : Dump completed for domain 0x7f9a401c4bf0 fedora with stats=0x7f9a50ffd760 error='<null>' 2025-06-02 08:44:55.720+0000: 343: debug : qemuMonitorJSONIOProcessLine:193 : Line [{"timestamp": {"seconds": 1748853895, "microseconds": 720492}, "event": "RESUME"}] 2025-06-02 08:44:55.720+0000: 343: info : Okay, I'll just make qemu driver refuse the flag. Thanks! Michal