45 lines
1.7 KiB
Diff
45 lines
1.7 KiB
Diff
# HG changeset patch
|
|
# User kfraser@localhost.localdomain
|
|
# Date 1180011958 -3600
|
|
# Node ID f07c1bb86d6c54458ff944e71453173cbf567ed2
|
|
# Parent 853853686147c4e863551b5742ca424e2929599a
|
|
xend: Tear down domain if device hotplug fails during startup
|
|
|
|
If creating an unmanaged guest (eg xm create), if device hotplug fails
|
|
during the startup of the guest, then the guest will be torn down
|
|
again. If creating and starting a managed guest (eg xm new && xm
|
|
start), then if device hotplug fails, the still born guest gets left
|
|
in 'paused' state. This confuses users no end, who go an unpause and
|
|
then get all upset when it shortly crashes (due to lack of disk or
|
|
network devices).
|
|
|
|
The attached patch fixes XenDomain.py's domain_start() method so that
|
|
if waitForDevices() fails, then the entire domain is torn down. This
|
|
is the same approach used in xm create.
|
|
|
|
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
Index: xen-3.1-testing/tools/python/xen/xend/XendDomain.py
|
|
===================================================================
|
|
--- xen-3.1-testing.orig/tools/python/xen/xend/XendDomain.py
|
|
+++ xen-3.1-testing/tools/python/xen/xend/XendDomain.py
|
|
@@ -985,10 +985,16 @@ class XendDomain:
|
|
dominfo.start(is_managed = True)
|
|
finally:
|
|
self.domains_lock.release()
|
|
- dominfo.waitForDevices()
|
|
+
|
|
+ try:
|
|
+ dominfo.waitForDevices()
|
|
+ except Exception, ex:
|
|
+ log.warn("Failed to setup devices for " + str(dominfo) + ": " + str(ex))
|
|
+ dominfo.destroy()
|
|
+ raise
|
|
+
|
|
if not start_paused:
|
|
dominfo.unpause()
|
|
-
|
|
|
|
def domain_delete(self, domid):
|
|
"""Remove a managed domain from database
|