xend: earlier remove the backend of tapdisk device in

xenstore to release the resource allocated in backend driver
lies in dom0'kernel

Blktapctl thread will use qemu-dm connection instead of tapdisk-ioemu
in the case of FV VM. We found the resource like memory allocated for
this Guest can't be free for backend driver couldn't be closed in qemu-dm.

This patch would  remove the backend of tapdisk device earlier in
xenstore to triger qemu-dm to notify the backend driver to release the
resource allocated.
I have tested this patch at the case of
1, save && restore
2, destory && shutdown
3, snapshot

Signed-off-by: James ( Song Wei ) <jsong@novell.com>
This commit is contained in:
Keir Fraser committed 2010-04-22 09:44:29 +01:00
1 parent 77af399e7f
commit 3dc27ee385
1 file changed
+7 -1
+7 -1
View File
@@ -2408,8 +2408,13 @@ class XendDomainInfo:
def _releaseDevices(self, suspend = False):
"""Release all domain's devices. Nothrow guarantee."""
t = xstransact("%s/device" % self.vmpath)
if self.image:
try:
for dev in t.list('tap'):
log.debug("Early removing %s", dev);
self.getDeviceController('tap').destroyDevice(dev, True)
time.sleep(0.1)
log.debug("Destroying device model")
self.image.destroyDeviceModel()
except Exception, e:
@@ -2418,9 +2423,10 @@ class XendDomainInfo:
log.debug("No device model")
log.debug("Releasing devices")
t = xstransact("%s/device" % self.vmpath)
try:
for devclass in XendDevices.valid_devices():
if devclass is 'tap':
continue
for dev in t.list(devclass):
try:
log.debug("Removing %s", dev);
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.