]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: command: don't overwrite watchdog dump action
authorCole Robinson <crobinso@redhat.com>
Wed, 13 Apr 2016 15:20:19 +0000 (11:20 -0400)
committerCole Robinson <crobinso@redhat.com>
Wed, 20 Apr 2016 13:23:04 +0000 (09:23 -0400)
The watchdog cli refactoring in 4666b762 dropped the temporary variable
we use to convert to action=dump to action=pause for the qemu cli, and
stored the converted value in the domain structure. Our other watchdog
handling code then treated it as though the user requested action=pause,
which broke action=dump handling.

Revive the temporary variable to fix things.

(cherry picked from commit a91177c8f7b432e67d2e232650d7debbbfc694da)

src/qemu/qemu_command.c

index 9001d064ca6555718bccb34de2318758cbddf781..03f9a6c092f126bd7c63ea138fadb276b26fb775 100644 (file)
@@ -3354,6 +3354,7 @@ qemuBuildWatchdogCommandLine(virCommandPtr cmd,
     virDomainWatchdogDefPtr watchdog = def->watchdog;
     char *optstr;
     const char *action;
+    int actualAction;
 
     if (!def->watchdog)
         return 0;
@@ -3380,10 +3381,14 @@ qemuBuildWatchdogCommandLine(virCommandPtr cmd,
     virCommandAddArg(cmd, optstr);
     VIR_FREE(optstr);
 
+    /* qemu doesn't have a 'dump' action; we tell qemu to 'pause', then
+       libvirt listens for the watchdog event, and we perform the dump
+       ourselves. so convert 'dump' to 'pause' for the qemu cli */
+    actualAction = watchdog->action;
     if (watchdog->action == VIR_DOMAIN_WATCHDOG_ACTION_DUMP)
-        watchdog->action = VIR_DOMAIN_WATCHDOG_ACTION_PAUSE;
+        actualAction = VIR_DOMAIN_WATCHDOG_ACTION_PAUSE;
 
-    action = virDomainWatchdogActionTypeToString(watchdog->action);
+    action = virDomainWatchdogActionTypeToString(actualAction);
     if (!action) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        "%s", _("invalid watchdog action"));