Auto-triggered dumps (on_crash, watchdog) always use QEMU's elf
default, which is not WinDbg-loadable for a Windows guest and cannot
be reliably converted after the fact.
This was proposed before as a per-domain XML knob
(https://www.mail-archive.com/devel@lists.libvirt.org/msg09638.html).
Daniel P. Berrange objected: QEMU's query-dump-guest-memory-capability
reported win-dmp as available on any x86-64 guest regardless of
whether it had actually published a Windows dump header, so trusting
it was not safe. QEMU's win_dump_available() has since been fixed to
check the guest's vmcoreinfo note
(https://lore.kernel.org/qemu-devel/20260619101834.228432-1-den@openvz.org/,
commit b4bdad7dce). Patch 1 queries it directly instead of adding an
XML knob.
Patch 4 adds a quota (auto_dump_max_size): a guest that keeps
crashing otherwise fills auto_dump_path one dump at a time. Oldest
dumps are pruned after each new one; the dump just written is never
removed, even alone over quota. Patches 2-3 give that setting and
virtlogd's max_size a "10GiB"-style syntax instead of a raw byte
count, reusing virScaleInteger()'s existing unit table.
Validated against real guests: a Windows Server 2022 guest crashed
via Sysinternals NotMyFault produces a PAGEDU64 (win-dmp) dump; an
AlmaLinux 9 guest crashed via sysrq produces an ELF one. A 1GiB quota
across two Linux crashes pruned the older dump and kept the newer,
over-quota one. syntax-check and virstringtest pass.
Denis V. Lunev (4):
qemu: auto-select win-dmp for crash- and watchdog-triggered dumps
util: add virStrToBytes() and virConfGetValueBytes() for scaled sizes
logging: accept a unit suffix in virtlogd's max_size
qemu: cap total size of auto-triggered dumps under auto_dump_path
src/libvirt_private.syms | 2 +
src/logging/log_daemon_config.c | 2 +-
src/logging/log_daemon_config.h | 2 +-
src/logging/virtlogd.conf | 7 +-
src/qemu/qemu.conf.in | 16 ++++
src/qemu/qemu_conf.c | 2 +
src/qemu/qemu_conf.h | 1 +
src/qemu/qemu_driver.c | 127 +++++++++++++++++++++++++++++++-
src/util/virconf.c | 47 ++++++++++++
src/util/virconf.h | 3 +
src/util/virutil.c | 23 ++++++
src/util/virutil.h | 5 ++
tests/virstringtest.c | 76 +++++++++++++++++++
13 files changed, 308 insertions(+), 5 deletions(-)
--
2.53.0