aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-05-19 02:18:48 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-05-19 02:18:48 +0100
commit41af6f38d95ac1ec058488705c048539df92c125 (patch)
tree94b36ee2c89a3939d3f9dcc5421841dc249fe46b
parent9125594e4e27944df656d99f5ba28e1923b6de18 (diff)
downloadxen-41af6f38d95ac1ec058488705c048539df92c125.tar.gz
xen-41af6f38d95ac1ec058488705c048539df92c125.tar.bz2
xen-41af6f38d95ac1ec058488705c048539df92c125.zip
xend: Make hotplug script timeouts configurable
In some configurations, when dom0 is busy with I/O, it may take several minutes to complete all hotplug scripts required when a new domain is being created. As device create timeout is set to 100 seconds, users get "hotplug scripts not working" error instead of a new domain. This patch makes both DEVICE_CREATE_TIMEOUT and DEVICE_DESTROY_TIMEOUT configurable in xend-config.sxp to allow users to easily adapt hotplug timeouts to their environment. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
-rw-r--r--docs/man/xend-config.sxp.pod.510
-rw-r--r--tools/examples/xend-config.sxp6
-rw-r--r--tools/python/xen/xend/XendOptions.py14
-rw-r--r--tools/python/xen/xend/server/DevConstants.py8
4 files changed, 36 insertions, 2 deletions
diff --git a/docs/man/xend-config.sxp.pod.5 b/docs/man/xend-config.sxp.pod.5
index 3851bba3b4..9504c71fed 100644
--- a/docs/man/xend-config.sxp.pod.5
+++ b/docs/man/xend-config.sxp.pod.5
@@ -115,6 +115,16 @@ The name of an application or script that can handle external device
migration, such as for example virtual TPM migration. An example
script is I</etc/xen/scripts/external-device-migrate>.
+=item I<device-create-timeout>
+
+Integer value that tells xend how long it should wait for a new device
+to be created. Defaults to I<100>.
+
+=item I<device-destroy-timeout>
+
+Integer value that tells xend how long it should wait for a device to
+be destroyed. Defaults to I<100>.
+
=back
=head1 EXAMPLES
diff --git a/tools/examples/xend-config.sxp b/tools/examples/xend-config.sxp
index 7ca270661a..a1d8c85fa3 100644
--- a/tools/examples/xend-config.sxp
+++ b/tools/examples/xend-config.sxp
@@ -254,3 +254,9 @@
# Path where persistent domain configuration is stored.
# Default is /var/lib/xend/domains/
#(xend-domains-path /var/lib/xend/domains)
+
+# Number of seconds xend will wait for device creation and
+# destruction
+#(device-create-timeout 100)
+#(device-destroy-timeout 100)
+
diff --git a/tools/python/xen/xend/XendOptions.py b/tools/python/xen/xend/XendOptions.py
index b507f9b3b7..edd16221e5 100644
--- a/tools/python/xen/xend/XendOptions.py
+++ b/tools/python/xen/xend/XendOptions.py
@@ -141,6 +141,12 @@ class XendOptions:
"""Default rotation count of qemu-dm log file."""
qemu_dm_logrotate_count = 10
+ """Default timeout for device creation."""
+ device_create_timeout_default = 100
+
+ """Default timeout for device destruction."""
+ device_destroy_timeout_default = 100
+
def __init__(self):
self.configure()
@@ -368,6 +374,14 @@ class XendOptions:
return self.get_config_int("qemu-dm-logrotate-count",
self.qemu_dm_logrotate_count)
+ def get_device_create_timeout(self):
+ return self.get_config_int("device-create-timeout",
+ self.device_create_timeout_default)
+
+ def get_device_destroy_timeout(self):
+ return self.get_config_int("device-destroy-timeout",
+ self.device_destroy_timeout_default)
+
class XendOptionsFile(XendOptions):
diff --git a/tools/python/xen/xend/server/DevConstants.py b/tools/python/xen/xend/server/DevConstants.py
index ba7abfc7a9..ed5fd2978c 100644
--- a/tools/python/xen/xend/server/DevConstants.py
+++ b/tools/python/xen/xend/server/DevConstants.py
@@ -16,8 +16,12 @@
# Copyright (C) 2005 XenSource Ltd
#============================================================================
-DEVICE_CREATE_TIMEOUT = 100
-DEVICE_DESTROY_TIMEOUT = 100
+from xen.xend import XendOptions
+
+xoptions = XendOptions.instance()
+
+DEVICE_CREATE_TIMEOUT = xoptions.get_device_create_timeout();
+DEVICE_DESTROY_TIMEOUT = xoptions.get_device_destroy_timeout();
HOTPLUG_STATUS_NODE = "hotplug-status"
HOTPLUG_ERROR_NODE = "hotplug-error"
HOTPLUG_STATUS_ERROR = "error"