mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
libxl: fix mapping of libvirt and libxl lifecycle actions
The libxl driver was blindly assigning libvirt's virDomainLifecycleAction to libxl's libxl_action_on_shutdown, when in fact the various actions take on different values in these enums. Introduce helpers to properly map the enum values. Signed-off-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
parent
47ffd5e8fd
commit
817206cdc8
@ -102,6 +102,62 @@ libxlDriverConfigDispose(void *obj)
|
||||
VIR_FREE(cfg->autoDumpDir);
|
||||
}
|
||||
|
||||
|
||||
static libxl_action_on_shutdown
|
||||
libxlActionFromVirLifecycle(virDomainLifecycleAction action)
|
||||
{
|
||||
switch (action) {
|
||||
case VIR_DOMAIN_LIFECYCLE_DESTROY:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_DESTROY;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_RESTART:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_RESTART;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_RESTART_RENAME;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_PRESERVE:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_PRESERVE;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_LAST:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static libxl_action_on_shutdown
|
||||
libxlActionFromVirLifecycleCrash(virDomainLifecycleCrashAction action)
|
||||
{
|
||||
|
||||
switch (action) {
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_DESTROY:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_DESTROY;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_RESTART;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART_RENAME:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_RESTART_RENAME;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_PRESERVE:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_PRESERVE;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_DESTROY:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_DESTROY;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_RESTART:
|
||||
return LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_RESTART;
|
||||
|
||||
case VIR_DOMAIN_LIFECYCLE_CRASH_LAST:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
libxlCapsInitHost(libxl_ctx *ctx, virCapsPtr caps)
|
||||
{
|
||||
@ -1432,9 +1488,9 @@ libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
|
||||
if (libxlMakePCIList(def, d_config) < 0)
|
||||
return -1;
|
||||
|
||||
d_config->on_reboot = def->onReboot;
|
||||
d_config->on_poweroff = def->onPoweroff;
|
||||
d_config->on_crash = def->onCrash;
|
||||
d_config->on_reboot = libxlActionFromVirLifecycle(def->onReboot);
|
||||
d_config->on_poweroff = libxlActionFromVirLifecycle(def->onPoweroff);
|
||||
d_config->on_crash = libxlActionFromVirLifecycleCrash(def->onCrash);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user