On Mon, Jun 02, 2025 at 03:27:32PM +0200, Michal Privoznik via Devel wrote: > From: Michal Privoznik <mpriv...@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. > > Resolves: https://gitlab.com/libvirt/libvirt/-/issues/646 > Signed-off-by: Michal Privoznik <mpriv...@redhat.com> > --- > docs/manpages/virsh.rst | 3 ++- > src/libvirt-domain.c | 2 ++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst > index 3a00778467..14f22b32c3 100644 > --- a/docs/manpages/virsh.rst > +++ b/docs/manpages/virsh.rst > @@ -2927,7 +2927,8 @@ dump > > Dumps the core of a domain to a file for analysis. > If *--live* is specified, the domain continues to run until the core > -dump is complete, rather than pausing up front. > +dump is complete, rather than pausing up front. Although, the hypervisor > might > +still decide to pause the guest's vCPUs. > If *--crash* is specified, the domain is halted with a crashed status, > rather than merely left in a paused state. > If *--reset* is specified, the domain is reset after successful dump. > diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c > index 93e8f5b853..6d1cd2dba1 100644 > --- a/src/libvirt-domain.c > +++ b/src/libvirt-domain.c > @@ -1445,6 +1445,8 @@ virDomainSaveImageDefineXML(virConnectPtr conn, const > char *file, > * the guest to run; otherwise, the guest is suspended during the dump. > * VIR_DUMP_RESET flag forces reset of the guest after dump. > * The above three flags are mutually exclusive. > + * However, note that even if VIR_DUMP_LIVE flag is specified, the hypervisor > + * might temporarily suspend the guest vCPUs anyway. > * > * Additionally, if @flags includes VIR_DUMP_BYPASS_CACHE, then libvirt > * will attempt to bypass the file system cache while creating the file, > -- > 2.49.0 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|