 
	
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Cleanup xenstore after console device teardown
 # HG changeset patch
# User john.levon@xxxxxxx
# Date 1200081658 28800
# Node ID 05096f5585fbfd1bac54b69a6920a698b4f40b54
# Parent  fc7a750bfdabdcca35f85cdb5eb4fc74d31f75e8
Cleanup xenstore after console device teardown
After the changes in 13616:b111908dd70b, DevController was leaking
xenstore entries every time we took down a console device, as there was
no equivalent to 'xenstore-rm -t' used in the hotplug scripts for "real"
devices. Implement the moral equivalent whenever removal is forced.
Signed-off-by: John Levon <john.levon@xxxxxxx>
diff --git a/tools/python/xen/xend/server/DevController.py 
b/tools/python/xen/xend/server/DevController.py
--- a/tools/python/xen/xend/server/DevController.py
+++ b/tools/python/xen/xend/server/DevController.py
@@ -231,11 +231,23 @@ class DevController:
         self.writeBackend(dev, 'state', str(xenbusState['Closing']))
 
         if force:
-            frontpath = self.frontendPath(dev)
-            backpath = xstransact.Read(frontpath, "backend")
-            if backpath:
-                xstransact.Remove(backpath)
-            xstransact.Remove(frontpath)
+            try:
+                frontpath = self.frontendPath(dev)
+                while True:
+                    t = xstransact()
+                    backpath = t.read("%s/backend" % frontpath)
+                    if backpath:
+                        t.remove(backpath)
+                        # tidy up empty directories
+                        while not t.list(backpath):
+                            t.remove(backpath)
+                            backpath = os.path.dirname(backpath)
+                    t.remove(frontpath)
+                    if t.commit():
+                        break
+            except:
+                t.abort()
+                raise
 
         self.vm._removeVm("device/%s/%d" % (self.deviceClass, dev))
 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 | 
|  | Lists.xenproject.org is hosted with RackSpace, monitoring our |