forked from pool/libvirt
Add libxl driver fixes from SLE12 SP1 work.
- libxl: set dom0 state to running 4ffb21c8-libxl-dom0-state-fix.patch bsc#937316 - libxl: support management of dom0 45697fe5-libxl-support-dom0.patch bsc#937316 - libxl: libxl: fix setting state of virDomainObj e9c27344-libxl-fix-virDomainObj-state.patch bsc#934937 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=471
This commit is contained in:
parent
37e0137a03
commit
2f5a2436b0
225
45697fe5-libxl-support-dom0.patch
Normal file
225
45697fe5-libxl-support-dom0.patch
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
commit 45697fe545841af46c95c996439ed59ca3a7ef9d
|
||||||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||||||
|
Date: Mon Jun 22 11:36:59 2015 -0600
|
||||||
|
|
||||||
|
libxl: support dom0
|
||||||
|
|
||||||
|
In Xen, dom0 is really just another domain that supports ballooning,
|
||||||
|
adding/removing devices, changing vcpu configuration, etc. This patch
|
||||||
|
adds support to the libxl driver for managing dom0. Note that the
|
||||||
|
legacy xend driver has long supported managing dom0.
|
||||||
|
|
||||||
|
Operations that are not supported on dom0 are filtered in libvirt
|
||||||
|
where a sensible error is reported. Errors from libxl are not
|
||||||
|
always helpful. E.g., attempting a save on dom0 results in
|
||||||
|
|
||||||
|
2015-06-23 15:25:05 MDT libxl: debug: libxl_dom.c:1570:libxl__toolstack_save: domain=0 toolstack data size=8
|
||||||
|
2015-06-23 15:25:05 MDT libxl: debug: libxl.c:979:do_libxl_domain_suspend: ao 0x7f7e68000b70: inprogress: poller=0x7f7e68000930, flags=i
|
||||||
|
2015-06-23 15:25:05 MDT libxl-save-helper: debug: starting save: Success
|
||||||
|
2015-06-23 15:25:05 MDT xc: detail: xc_domain_save_suse: starting save of domid 0
|
||||||
|
2015-06-23 15:25:05 MDT xc: error: Couldn't map live_shinfo (3 = No such process): Internal error
|
||||||
|
2015-06-23 15:25:05 MDT xc: detail: Save exit of domid 0 with errno=3
|
||||||
|
2015-06-23 15:25:05 MDT libxl-save-helper: debug: complete r=1: No such process
|
||||||
|
2015-06-23 15:25:05 MDT libxl: error: libxl_dom.c:1876:libxl__xc_domain_save_done: saving domain: domain did not respond to suspend request: No such process
|
||||||
|
2015-06-23 15:25:05 MDT libxl: error: libxl_dom.c:2033:remus_teardown_done: Remus: failed to teardown device for guest with domid 0, rc -8
|
||||||
|
|
||||||
|
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||||
|
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_driver.c
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
@@ -79,6 +79,15 @@ VIR_LOG_INIT("libxl.libxl_driver");
|
||||||
|
/* Number of Xen scheduler parameters */
|
||||||
|
#define XEN_SCHED_CREDIT_NPARAM 2
|
||||||
|
|
||||||
|
+#define LIBXL_CHECK_DOM0_GOTO(name, label) \
|
||||||
|
+ do { \
|
||||||
|
+ if (STREQ_NULLABLE(name, "Domain-0")) { \
|
||||||
|
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s", \
|
||||||
|
+ _("Domain-0 does not support requested operation")); \
|
||||||
|
+ goto label; \
|
||||||
|
+ } \
|
||||||
|
+ } while (0)
|
||||||
|
+
|
||||||
|
|
||||||
|
static libxlDriverPrivatePtr libxl_driver;
|
||||||
|
|
||||||
|
@@ -501,6 +510,63 @@ const struct libxl_event_hooks ev_hooks
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
+libxlAddDom0(libxlDriverPrivatePtr driver)
|
||||||
|
+{
|
||||||
|
+ libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
|
||||||
|
+ virDomainDefPtr def = NULL;
|
||||||
|
+ virDomainObjPtr vm = NULL;
|
||||||
|
+ virDomainDefPtr oldDef = NULL;
|
||||||
|
+ libxl_dominfo d_info;
|
||||||
|
+ int ret = -1;
|
||||||
|
+
|
||||||
|
+ libxl_dominfo_init(&d_info);
|
||||||
|
+
|
||||||
|
+ /* Ensure we have a dom0 */
|
||||||
|
+ if (libxl_domain_info(cfg->ctx, &d_info, 0) != 0) {
|
||||||
|
+ virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
+ "%s", _("unable to get Domain-0 information from libxenlight"));
|
||||||
|
+ goto cleanup;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!(def = virDomainDefNew()))
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ def->id = 0;
|
||||||
|
+ def->virtType = VIR_DOMAIN_VIRT_XEN;
|
||||||
|
+ if (VIR_STRDUP(def->name, "Domain-0") < 0)
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ def->os.type = VIR_DOMAIN_OSTYPE_XEN;
|
||||||
|
+
|
||||||
|
+ if (virUUIDParse("00000000-0000-0000-0000-000000000000", def->uuid) < 0)
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ if (!(vm = virDomainObjListAdd(driver->domains, def,
|
||||||
|
+ driver->xmlopt,
|
||||||
|
+ 0,
|
||||||
|
+ &oldDef)))
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ def = NULL;
|
||||||
|
+
|
||||||
|
+ vm->def->vcpus = d_info.vcpu_online;
|
||||||
|
+ vm->def->maxvcpus = d_info.vcpu_max_id + 1;
|
||||||
|
+ vm->def->mem.cur_balloon = d_info.current_memkb;
|
||||||
|
+ vm->def->mem.max_balloon = d_info.max_memkb;
|
||||||
|
+
|
||||||
|
+ ret = 0;
|
||||||
|
+
|
||||||
|
+ cleanup:
|
||||||
|
+ libxl_dominfo_dispose(&d_info);
|
||||||
|
+ virDomainDefFree(def);
|
||||||
|
+ virDomainDefFree(oldDef);
|
||||||
|
+ if (vm)
|
||||||
|
+ virObjectUnlock(vm);
|
||||||
|
+ virObjectUnref(cfg);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
libxlStateInitialize(bool privileged,
|
||||||
|
virStateInhibitCallback callback ATTRIBUTE_UNUSED,
|
||||||
|
void *opaque ATTRIBUTE_UNUSED)
|
||||||
|
@@ -616,6 +682,10 @@ libxlStateInitialize(bool privileged,
|
||||||
|
if (!(libxl_driver->xmlopt = libxlCreateXMLConf()))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
+ /* Add Domain-0 */
|
||||||
|
+ if (libxlAddDom0(libxl_driver) < 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
/* Load running domains first. */
|
||||||
|
if (virDomainObjListLoadAllConfigs(libxl_driver->domains,
|
||||||
|
cfg->stateDir,
|
||||||
|
@@ -1030,6 +1100,8 @@ libxlDomainSuspend(virDomainPtr dom)
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainSuspendEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1086,6 +1158,8 @@ libxlDomainResume(virDomainPtr dom)
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainResumeEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1147,6 +1221,8 @@ libxlDomainShutdownFlags(virDomainPtr do
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1212,6 +1288,8 @@ libxlDomainReboot(virDomainPtr dom, unsi
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainRebootEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1254,6 +1332,8 @@ libxlDomainDestroyFlags(virDomainPtr dom
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainDestroyFlagsEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1656,6 +1736,8 @@ libxlDomainSaveFlags(virDomainPtr dom, c
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainSaveFlagsEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1782,6 +1864,8 @@ libxlDomainCoreDump(virDomainPtr dom, co
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainCoreDumpEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -1877,6 +1961,8 @@ libxlDomainManagedSave(virDomainPtr dom,
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainManagedSaveEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -4000,6 +4086,8 @@ libxlDomainSetAutostart(virDomainPtr dom
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainSetAutostartEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -4294,6 +4382,8 @@ libxlDomainOpenConsole(virDomainPtr dom,
|
||||||
|
if (!(vm = libxlDomObjFromDomain(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ LIBXL_CHECK_DOM0_GOTO(vm->def->name, cleanup);
|
||||||
|
+
|
||||||
|
if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -4817,6 +4907,12 @@ libxlDomainMigrateBegin3Params(virDomain
|
||||||
|
if (!(vm = libxlDomObjFromDomain(domain)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ if (STREQ_NULLABLE(vm->def->name, "Domain-0")) {
|
||||||
|
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
+ _("Domain-0 cannot be migrated"));
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (virDomainMigrateBegin3ParamsEnsureACL(domain->conn, vm->def) < 0) {
|
||||||
|
virObjectUnlock(vm);
|
||||||
|
return NULL;
|
26
4ffb21c8-libxl-dom0-state-fix.patch
Normal file
26
4ffb21c8-libxl-dom0-state-fix.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
commit 4ffb21c89a6b9ae2b4bfd2999c24b01433e360a9
|
||||||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||||||
|
Date: Thu Jul 9 15:16:18 2015 -0600
|
||||||
|
|
||||||
|
libxl: set dom0 state to running
|
||||||
|
|
||||||
|
Commit 45697fe5 added dom0 to driver->domains, but missed
|
||||||
|
setting its state to 'running'
|
||||||
|
|
||||||
|
$ virsh list
|
||||||
|
Id Name State
|
||||||
|
----------------------------------------------------
|
||||||
|
0 Domain-0 shut off
|
||||||
|
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_driver.c
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
@@ -549,6 +549,7 @@ libxlAddDom0(libxlDriverPrivatePtr drive
|
||||||
|
|
||||||
|
def = NULL;
|
||||||
|
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_BOOTED);
|
||||||
|
vm->def->vcpus = d_info.vcpu_online;
|
||||||
|
vm->def->maxvcpus = d_info.vcpu_max_id + 1;
|
||||||
|
vm->def->mem.cur_balloon = d_info.current_memkb;
|
232
e9c27344-libxl-fix-virDomainObj-state.patch
Normal file
232
e9c27344-libxl-fix-virDomainObj-state.patch
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
commit e9c2734441af0065c69fc1317965a6dd6c7f14e3
|
||||||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||||||
|
Date: Tue Jul 7 12:29:24 2015 -0600
|
||||||
|
|
||||||
|
libxl: rework setting the state of virDomainObj
|
||||||
|
|
||||||
|
Set the state of virDomainObj in the functions that
|
||||||
|
actually change the domain state, instead of the generic
|
||||||
|
libxlDomainCleanup function. This approach gives functions
|
||||||
|
calling libxlDomainCleanup more flexibility wrt when and
|
||||||
|
how they change virDomainObj state via virDomainObjSetState.
|
||||||
|
|
||||||
|
The prior approach of calling virDomainObjSetState in
|
||||||
|
libxlDomainCleanup resulted in the following incorrect
|
||||||
|
coding pattern in the various functions that change
|
||||||
|
domain state
|
||||||
|
|
||||||
|
libxlDomain<DoStateTransition>
|
||||||
|
call libxl function to do state transition
|
||||||
|
emit lifecycle event
|
||||||
|
libxlDomainCleanup
|
||||||
|
virDomainObjSetState
|
||||||
|
|
||||||
|
Once simple manifestation of this bug is seeing a domain
|
||||||
|
running in virt-manager after selecting the shutdown button,
|
||||||
|
even after the domain has long shutdown.
|
||||||
|
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_domain.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_domain.c
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_domain.c
|
||||||
|
@@ -397,7 +397,6 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
libxlDriverPrivatePtr driver = shutdown_info->driver;
|
||||||
|
virObjectEventPtr dom_event = NULL;
|
||||||
|
libxl_shutdown_reason xl_reason = ev->u.domain_shutdown.shutdown_reason;
|
||||||
|
- virDomainShutoffReason reason = VIR_DOMAIN_SHUTOFF_SHUTDOWN;
|
||||||
|
libxlDriverConfigPtr cfg;
|
||||||
|
|
||||||
|
cfg = libxlDriverConfigGet(driver);
|
||||||
|
@@ -406,12 +405,14 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (xl_reason == LIBXL_SHUTDOWN_REASON_POWEROFF) {
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_SHUTDOWN);
|
||||||
|
+
|
||||||
|
dom_event = virDomainEventLifecycleNewFromObj(vm,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
||||||
|
switch ((virDomainLifecycleAction) vm->def->onPoweroff) {
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_DESTROY:
|
||||||
|
- reason = VIR_DOMAIN_SHUTOFF_SHUTDOWN;
|
||||||
|
goto destroy;
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_RESTART:
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME:
|
||||||
|
@@ -421,12 +422,14 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
goto endjob;
|
||||||
|
}
|
||||||
|
} else if (xl_reason == LIBXL_SHUTDOWN_REASON_CRASH) {
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_CRASHED);
|
||||||
|
+
|
||||||
|
dom_event = virDomainEventLifecycleNewFromObj(vm,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_CRASHED);
|
||||||
|
switch ((virDomainLifecycleCrashAction) vm->def->onCrash) {
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_CRASH_DESTROY:
|
||||||
|
- reason = VIR_DOMAIN_SHUTOFF_CRASHED;
|
||||||
|
goto destroy;
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART:
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_CRASH_RESTART_RENAME:
|
||||||
|
@@ -442,12 +445,14 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
goto restart;
|
||||||
|
}
|
||||||
|
} else if (xl_reason == LIBXL_SHUTDOWN_REASON_REBOOT) {
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_SHUTDOWN);
|
||||||
|
+
|
||||||
|
dom_event = virDomainEventLifecycleNewFromObj(vm,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
||||||
|
switch ((virDomainLifecycleAction) vm->def->onReboot) {
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_DESTROY:
|
||||||
|
- reason = VIR_DOMAIN_SHUTOFF_SHUTDOWN;
|
||||||
|
goto destroy;
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_RESTART:
|
||||||
|
case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME:
|
||||||
|
@@ -467,7 +472,7 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
dom_event = NULL;
|
||||||
|
}
|
||||||
|
libxlDomainDestroyInternal(driver, vm);
|
||||||
|
- libxlDomainCleanup(driver, vm, reason);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
if (!vm->persistent)
|
||||||
|
virDomainObjListRemove(driver->domains, vm);
|
||||||
|
|
||||||
|
@@ -479,7 +484,7 @@ libxlDomainShutdownThread(void *opaque)
|
||||||
|
dom_event = NULL;
|
||||||
|
}
|
||||||
|
libxlDomainDestroyInternal(driver, vm);
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_SHUTDOWN);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
if (libxlDomainStart(driver, vm, false, -1) < 0) {
|
||||||
|
virErrorPtr err = virGetLastError();
|
||||||
|
VIR_ERROR(_("Failed to restart VM '%s': %s"),
|
||||||
|
@@ -685,8 +690,7 @@ libxlDomainDestroyInternal(libxlDriverPr
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
libxlDomainCleanup(libxlDriverPrivatePtr driver,
|
||||||
|
- virDomainObjPtr vm,
|
||||||
|
- virDomainShutoffReason reason)
|
||||||
|
+ virDomainObjPtr vm)
|
||||||
|
{
|
||||||
|
libxlDomainObjPrivatePtr priv = vm->privateData;
|
||||||
|
libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
|
||||||
|
@@ -709,9 +713,6 @@ libxlDomainCleanup(libxlDriverPrivatePtr
|
||||||
|
priv->deathW = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (vm->persistent)
|
||||||
|
- virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, reason);
|
||||||
|
-
|
||||||
|
if (virAtomicIntDecAndTest(&driver->nactive) && driver->inhibitCallback)
|
||||||
|
driver->inhibitCallback(false, driver->inhibitOpaque);
|
||||||
|
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_domain.h
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_domain.h
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_domain.h
|
||||||
|
@@ -110,8 +110,7 @@ libxlDomainDestroyInternal(libxlDriverPr
|
||||||
|
|
||||||
|
void
|
||||||
|
libxlDomainCleanup(libxlDriverPrivatePtr driver,
|
||||||
|
- virDomainObjPtr vm,
|
||||||
|
- virDomainShutoffReason reason);
|
||||||
|
+ virDomainObjPtr vm);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note: Xen 4.3 removed the const from the event handler signature.
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_driver.c
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_driver.c
|
||||||
|
@@ -392,7 +392,7 @@ libxlReconnectDomain(virDomainObjPtr vm,
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
out:
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_UNKNOWN);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
if (!vm->persistent)
|
||||||
|
virDomainObjListRemoveLocked(driver->domains, vm);
|
||||||
|
else
|
||||||
|
@@ -1346,16 +1346,19 @@ libxlDomainDestroyFlags(virDomainPtr dom
|
||||||
|
goto endjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
- event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
- VIR_DOMAIN_EVENT_STOPPED_DESTROYED);
|
||||||
|
-
|
||||||
|
if (libxlDomainDestroyInternal(driver, vm) < 0) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Failed to destroy domain '%d'"), vm->def->id);
|
||||||
|
goto endjob;
|
||||||
|
}
|
||||||
|
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_DESTROYED);
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_DESTROYED);
|
||||||
|
+
|
||||||
|
+ event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
+ VIR_DOMAIN_EVENT_STOPPED_DESTROYED);
|
||||||
|
+
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
if (!vm->persistent)
|
||||||
|
virDomainObjListRemove(driver->domains, vm);
|
||||||
|
|
||||||
|
@@ -1689,6 +1692,9 @@ libxlDoDomainSave(libxlDriverPrivatePtr
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_SAVED);
|
||||||
|
+
|
||||||
|
event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_SAVED);
|
||||||
|
|
||||||
|
@@ -1698,7 +1704,7 @@ libxlDoDomainSave(libxlDriverPrivatePtr
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_SAVED);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
vm->hasManagedSave = true;
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
@@ -1909,7 +1915,9 @@ libxlDomainCoreDump(virDomainPtr dom, co
|
||||||
|
goto unpause;
|
||||||
|
}
|
||||||
|
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_CRASHED);
|
||||||
|
event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_CRASHED);
|
||||||
|
if (!vm->persistent)
|
||||||
|
Index: libvirt-1.2.17/src/libxl/libxl_migration.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.2.17.orig/src/libxl/libxl_migration.c
|
||||||
|
+++ libvirt-1.2.17/src/libxl/libxl_migration.c
|
||||||
|
@@ -585,7 +585,9 @@ libxlDomainMigrationFinish(virConnectPtr
|
||||||
|
cleanup:
|
||||||
|
if (dom == NULL) {
|
||||||
|
libxlDomainDestroyInternal(driver, vm);
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_FAILED);
|
||||||
|
event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_FAILED);
|
||||||
|
if (!vm->persistent)
|
||||||
|
@@ -624,7 +626,9 @@ libxlDomainMigrationConfirm(libxlDriverP
|
||||||
|
}
|
||||||
|
|
||||||
|
libxlDomainDestroyInternal(driver, vm);
|
||||||
|
- libxlDomainCleanup(driver, vm, VIR_DOMAIN_SHUTOFF_MIGRATED);
|
||||||
|
+ libxlDomainCleanup(driver, vm);
|
||||||
|
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
|
||||||
|
+ VIR_DOMAIN_SHUTOFF_MIGRATED);
|
||||||
|
event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
|
||||||
|
VIR_DOMAIN_EVENT_STOPPED_MIGRATED);
|
||||||
|
|
@ -1,5 +1,18 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jul 10 13:29:51 UTC 2015 - cbosdonnat@suse.com
|
Fri Jul 10 18:35:27 UTC 2015 - jfehlig@suse.com
|
||||||
|
|
||||||
|
- libxl: set dom0 state to running
|
||||||
|
4ffb21c8-libxl-dom0-state-fix.patch
|
||||||
|
bsc#937316
|
||||||
|
- libxl: support management of dom0
|
||||||
|
45697fe5-libxl-support-dom0.patch
|
||||||
|
bsc#937316
|
||||||
|
- libxl: libxl: fix setting state of virDomainObj
|
||||||
|
e9c27344-libxl-fix-virDomainObj-state.patch
|
||||||
|
bsc#934937
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 10 13:29:51 UTC 2015 - cbosdonnat@suse.com
|
||||||
|
|
||||||
- Fixed virt-aa-helper bugs preventing virt-sandbox to work.
|
- Fixed virt-aa-helper bugs preventing virt-sandbox to work.
|
||||||
24f3c2f-virt-aa-helper-fix-caps.patch
|
24f3c2f-virt-aa-helper-fix-caps.patch
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package libvirt
|
# spec file for package libvirt
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -450,6 +450,9 @@ Patch0: e44bcae-virt-aa-helper-trailing-slash.patch
|
|||||||
Patch1: a55a5e7-virt-aa-helper-log.patch
|
Patch1: a55a5e7-virt-aa-helper-log.patch
|
||||||
Patch2: 61dab0f-virt-aa-helper-renaming.patch
|
Patch2: 61dab0f-virt-aa-helper-renaming.patch
|
||||||
Patch3: 24f3c2f-virt-aa-helper-fix-caps.patch
|
Patch3: 24f3c2f-virt-aa-helper-fix-caps.patch
|
||||||
|
Patch4: 45697fe5-libxl-support-dom0.patch
|
||||||
|
Patch5: e9c27344-libxl-fix-virDomainObj-state.patch
|
||||||
|
Patch6: 4ffb21c8-libxl-dom0-state-fix.patch
|
||||||
# Patches pending upstream review
|
# Patches pending upstream review
|
||||||
# Need to go upstream
|
# Need to go upstream
|
||||||
Patch150: xen-pv-cdrom.patch
|
Patch150: xen-pv-cdrom.patch
|
||||||
@ -985,6 +988,9 @@ Provides a dissector for the libvirt RPC protocol to help debugging it.
|
|||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
%patch150 -p1
|
%patch150 -p1
|
||||||
%patch151 -p1
|
%patch151 -p1
|
||||||
%patch152 -p1
|
%patch152 -p1
|
||||||
|
Loading…
Reference in New Issue
Block a user