提交 817206cd 编写于 作者: J Jim Fehlig

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: NJim Fehlig <jfehlig@suse.com>
上级 47ffd5e8
...@@ -102,6 +102,62 @@ libxlDriverConfigDispose(void *obj) ...@@ -102,6 +102,62 @@ libxlDriverConfigDispose(void *obj)
VIR_FREE(cfg->autoDumpDir); 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 static int
libxlCapsInitHost(libxl_ctx *ctx, virCapsPtr caps) libxlCapsInitHost(libxl_ctx *ctx, virCapsPtr caps)
{ {
...@@ -1432,9 +1488,9 @@ libxlBuildDomainConfig(virPortAllocatorPtr graphicsports, ...@@ -1432,9 +1488,9 @@ libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
if (libxlMakePCIList(def, d_config) < 0) if (libxlMakePCIList(def, d_config) < 0)
return -1; return -1;
d_config->on_reboot = def->onReboot; d_config->on_reboot = libxlActionFromVirLifecycle(def->onReboot);
d_config->on_poweroff = def->onPoweroff; d_config->on_poweroff = libxlActionFromVirLifecycle(def->onPoweroff);
d_config->on_crash = def->onCrash; d_config->on_crash = libxlActionFromVirLifecycleCrash(def->onCrash);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册