[PATCH 00/22] qemu: Fix mess with lifecycle actions and unbreak transient disks

Peter Krempa pkrempa at redhat.com
Tue Aug 24 14:44:21 UTC 2021


While investigating how to fix issue with transient disks breaking when
-no-shutdown is not used I've ended up figuring out that lifecycle
action handling in the qemu driver is very broken.

Unbreak the handling by rejecting some actions which were never
implemented, add support for 'set-action' qmp command and use it to
update the 'reset' action in qemu and always use '-no-shutdown'.

Peter Krempa (22):
  qemuMonitorJSONSetWatchdogAction: Use automatic memory clearing
  qemuDomainSetLifecycleAction: Add a note about argument range-check
  qemu: driver: Use 'qemuDomainSaveStatus' for saving status XML
  qemu: validate: Reformat header and purge unused includes
  qemu: Reject 'rename-restart' action for
    'on_reboot'/'on_poweroff'/'on_crash'
  qemu: driver: Validate lifecycle actions in
    'qemuDomainSetLifecycleAction'
  qemu: Reject 'preserve' action for
    'on_reboot'/'on_poweroff'/'on_crash'
  qemu: Honor 'restart' action for 'on_poweroff'
  qemu: capablities: Detect presence of 'set-action' as
    QEMU_CAPS_SET_ACTION
  qemu: monitor: Implement monitor code for 'set-action' command
  qemuDomainAttachWatchdog: Use 'set-action' instead of
    'watchdog-set-action' if supported
  qemuxml2argvtest: Add 'LATEST' version of 'misc-no-reboot' test case
  qemuDomainObjPrivate: Annotate 'allowReboot' field
  qemu: migration: Don't transfer 'allowReboot' flag
  qemu: domain: Remove qemuDomainIsUsingNoShutdown
  qemuDomainSetLifecycleAction: Forbid live update of 'on_reboot'
  qemuProcessHandleReset: Don't emulate lifecycle actions for RESET
    event
  qemuProcessLaunch: Setup handling of 'on_reboot' via QMP when starting
    the process
  qemu: command: Always use '-no-shutdown'
  qemu: process: Don't set 'allowReboot' when qemu supports 'set-action'
  qemuDomainSetLifecycleAction: Properly update 'onReboot' action in
    qemu
  qemu: process: Ignore 'RESET' event during startup

 docs/formatdomain.rst                         |   8 +-
 src/qemu/qemu_capabilities.c                  |   2 +
 src/qemu/qemu_capabilities.h                  |   1 +
 src/qemu/qemu_command.c                       |  14 +-
 src/qemu/qemu_domain.c                        |  16 --
 src/qemu/qemu_domain.h                        |  11 +-
 src/qemu/qemu_driver.c                        | 201 +++++++++++-------
 src/qemu/qemu_hotplug.c                       |  54 ++++-
 src/qemu/qemu_migration.c                     |   5 -
 src/qemu/qemu_migration_cookie.c              |  22 --
 src/qemu/qemu_migration_cookie.h              |   4 -
 src/qemu/qemu_monitor.c                       |  16 ++
 src/qemu/qemu_monitor.h                       |  49 +++++
 src/qemu/qemu_monitor_json.c                  |  95 ++++++++-
 src/qemu/qemu_monitor_json.h                  |   7 +
 src/qemu/qemu_process.c                       |  85 +++++---
 src/qemu/qemu_validate.c                      |  51 +++++
 src/qemu/qemu_validate.h                      |  31 +--
 .../caps_6.0.0.aarch64.xml                    |   1 +
 .../qemucapabilitiesdata/caps_6.0.0.s390x.xml |   1 +
 .../caps_6.0.0.x86_64.xml                     |   1 +
 .../caps_6.1.0.x86_64.xml                     |   1 +
 .../basic-xml2xml-out.xml                     |   1 -
 .../full-xml2xml-out.xml                      |   1 -
 .../modern-dom-out-dest.xml                   |   1 -
 .../modern-dom-out-source.xml                 |   1 -
 .../nbd-bitmaps-xml2xml-out.xml               |   1 -
 tests/qemumonitorjsontest.c                   |   6 +
 .../misc-no-reboot.x86_64-latest.args         |  35 +++
 tests/qemuxml2argvtest.c                      |   1 +
 30 files changed, 529 insertions(+), 194 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/misc-no-reboot.x86_64-latest.args

-- 
2.31.1




More information about the libvir-list mailing list