mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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:
1 parent
b7327bd081
commit
49c3d24510
2 files changed
+14
-3
No files matched your search
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||