aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-24 14:05:58 +0100
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-24 14:05:58 +0100
commit1c77b7cb9f97eeb025af6d38753b3917e026c4ee (patch)
treec25e0720b41f9168857c4e08a6935838cf292b28 /tools
parent565f279e0732f15734ee8cf25a393bbf42a80072 (diff)
downloadxen-1c77b7cb9f97eeb025af6d38753b3917e026c4ee.tar.gz
xen-1c77b7cb9f97eeb025af6d38753b3917e026c4ee.tar.bz2
xen-1c77b7cb9f97eeb025af6d38753b3917e026c4ee.zip
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>
Diffstat (limited to 'tools')
-rw-r--r--tools/python/xen/xend/XendDomain.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py
index d210aa634b..f507104db2 100644
--- a/tools/python/xen/xend/XendDomain.py
+++ b/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