[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Time-out if guest fails to suspend
# HG changeset patch # User John Levon <john.levon@xxxxxxx> # Date 1236822206 25200 # Node ID 7bc32ac888a5088e6c704252675e49468cdf7456 # Parent 0bcb69805b1e11a8b36d92362d74d95653458589 Time-out if guest fails to suspend If a guest fails to re-write control/shutdown node within a minute, fail the suspend operation. Signed-off-by: John Levon <john.levon@xxxxxxx> diff --git a/tools/python/xen/xend/XendCheckpoint.py b/tools/python/xen/xend/XendCheckpoint.py --- a/tools/python/xen/xend/XendCheckpoint.py +++ b/tools/python/xen/xend/XendCheckpoint.py @@ -114,7 +114,7 @@ def save(fd, dominfo, network, live, dst if line == "suspend": log.debug("Suspending %d ...", dominfo.getDomid()) dominfo.shutdown('suspend') - dominfo.waitForShutdown() + dominfo.waitForSuspend() if line in ('suspend', 'suspended'): dominfo.migrateDevices(network, dst, DEV_MIGRATE_STEP2, domain_name) diff --git a/tools/python/xen/xend/XendDomainInfo.py b/tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -2607,6 +2607,31 @@ class XendDomainInfo: finally: self.state_updated.release() + def waitForSuspend(self): + """Wait for the guest to respond to a suspend request by + shutting down. If the guest hasn't re-written control/shutdown + after a certain amount of time, it's obviously not listening and + won't suspend, so we give up. HVM guests with no PV drivers + should already be shutdown. + """ + state = "suspend" + nr_tries = 60 + + self.state_updated.acquire() + try: + while self._stateGet() in (DOM_STATE_RUNNING,DOM_STATE_PAUSED): + self.state_updated.wait(1.0) + if state == "suspend": + if nr_tries == 0: + msg = ('Timeout waiting for domain %s to suspend' + % self.domid) + self._writeDom('control/shutdown', '') + raise XendError(msg) + state = self.readDom('control/shutdown') + nr_tries -= 1 + finally: + self.state_updated.release() + # # TODO: recategorise - called from XendCheckpoint # _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |