I have previously posted a patch with changes to the xenbus for being

able to detect the reason why a frontend is created, which can be either
due to domain creation or a restore. The attached patch now puts this
functionality into XenD and allows driver implementations in Xend to
read the state and see whether a domain is currently being resumed or
created and write this value into the xenstore for hotplug scripts to
read it. The state of a domain being resumed is set when a
XendDomainInfo object is created and reset at the end of the restore
function.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2006-02-03 11:54:05 +01:00
1 parent b7327bd081
commit 49c3d24510
2 files changed
+14 -3

No files matched your search

+12 -2
View File
@@ -251,13 +251,14 @@ def restore(config):
log.debug("XendDomainInfo.restore(%s)", config)
vm = XendDomainInfo(parseConfig(config))
vm = XendDomainInfo(parseConfig(config), None, None, False, False, True)
try:
vm.construct()
vm.storeVmDetails()
vm.createDevices()
vm.createChannels()
vm.storeDomDetails()
vm.endRestore()
return vm
except:
vm.destroy()
@@ -410,7 +411,7 @@ def dom_get(dom):
class XendDomainInfo:
def __init__(self, info, domid = None, dompath = None, augment = False,
priv = False):
priv = False, resume = False):
self.info = info
@@ -445,6 +446,7 @@ class XendDomainInfo:
self.state_updated = threading.Condition()
self.refresh_shutdown_lock = threading.Condition()
self.setResume(resume)
## private:
@@ -758,6 +760,14 @@ class XendDomainInfo:
"""Get this domain's target memory size, in KB."""
return self.info['memory'] * 1024
def getResume(self):
return "%s" % self.info['resume']
def endRestore(self):
self.setResume(False)
def setResume(self, state):
self.info['resume'] = state
def refreshShutdown(self, xeninfo = None):
# If set at the end of this method, a restart is required, with the
+2 -1
View File
@@ -45,7 +45,8 @@ class TPMifController(DevController):
log.info("The domain has a TPM with instance %d and devid %d.",
inst, devid)
back = { 'pref_instance' : "%i" % inst }
back = { 'pref_instance' : "%i" % inst,
'resume' : "%s" % (self.vm.getResume()) }
front = { 'handle' : "%i" % devid }
return (devid, back, front)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.