diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-05-19 02:18:48 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-05-19 02:18:48 +0100 |
commit | 41af6f38d95ac1ec058488705c048539df92c125 (patch) | |
tree | 94b36ee2c89a3939d3f9dcc5421841dc249fe46b | |
parent | 9125594e4e27944df656d99f5ba28e1923b6de18 (diff) | |
download | xen-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.5 | 10 | ||||
-rw-r--r-- | tools/examples/xend-config.sxp | 6 | ||||
-rw-r--r-- | tools/python/xen/xend/XendOptions.py | 14 | ||||
-rw-r--r-- | tools/python/xen/xend/server/DevConstants.py | 8 |
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" |