xend: Cleanup destroy and destroyDomain methods

When domains are destroyed, _prepare_phantom_paths() method
and _cleanup_phantom_devs() method are called twice as follows.

destroy()@XendDomainInfo.py
    _prepare_phantom_paths() --------------- 1
    _cleanupVm()
    destroyDomain()
        _prepare_phantom_paths() ----------- 2
        xc.domain_destroy_hook()
        xc.domain_pause()
        do_FLR()
        xc.domain_destroy()
        XendDomain.remove_domain()
        cleanupDomain()
        _cleanup_phantom_devs() ------------ 1
    _cleanup_phantom_devs() ---------------- 2
    XendDomain.domain_delete_by_dominfo()

This is a cleanup patch.  It combines destroyDomain() method
into destroy() method, then _prepare_phantom_paths() method and
_cleanup_phantom_devs() method are called only once.

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
This commit is contained in:
Keir Fraser committed 2008-08-28 09:44:13 +01:00
1 parent 2e8459a4fc
commit 309af15419
1 file changed
+10 -22
+10 -22
View File
@@ -2408,29 +2408,14 @@ class XendDomainInfo:
if self.domid is None:
return
from xen.xend import XendDomain
log.debug("XendDomainInfo.destroy: domid=%s", str(self.domid))
paths = self._prepare_phantom_paths()
self._cleanupVm()
if self.dompath is not None:
self.destroyDomain()
self._cleanup_phantom_devs(paths)
if "transient" in self.info["other_config"] \
and bool(self.info["other_config"]["transient"]):
from xen.xend import XendDomain
XendDomain.instance().domain_delete_by_dominfo(self)
def destroyDomain(self):
log.debug("XendDomainInfo.destroyDomain(%s)", str(self.domid))
paths = self._prepare_phantom_paths()
try:
if self.domid is not None:
try:
xc.domain_destroy_hook(self.domid)
xc.domain_pause(self.domid)
do_FLR(self.domid)
@@ -2438,15 +2423,18 @@ class XendDomainInfo:
for state in DOM_STATES_OLD:
self.info[state] = 0
self._stateSet(DOM_STATE_HALTED)
except:
log.exception("XendDomainInfo.destroy: xc.domain_destroy failed.")
except:
log.exception("XendDomainInfo.destroy: domain destruction failed.")
from xen.xend import XendDomain
XendDomain.instance().remove_domain(self)
XendDomain.instance().remove_domain(self)
self.cleanupDomain()
self.cleanupDomain()
self._cleanup_phantom_devs(paths)
if "transient" in self.info["other_config"] \
and bool(self.info["other_config"]["transient"]):
XendDomain.instance().domain_delete_by_dominfo(self)
def resetDomain(self):
log.debug("XendDomainInfo.resetDomain(%s)", str(self.domid))
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.