mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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:
1 parent
77af399e7f
commit
3dc27ee385
1 file changed
+7
-1
@@ -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);
|
||||
|
||||