[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] That xenstored console leak...
Shouldn't the transaction be wrapped in a 'while True' with a break or return on t.commit() returning True? Otherwise you are not correctly handling transaction failure. Please fix and resubmit. Thanks, Keir On 11/1/08 17:39, "John Levon" <levon@xxxxxxxxxxxxxxxxx> wrote: > > Here's what I'm using to fix it in 3.1. Obviously too risky for 3.2 now, > and anyway, there's a much more serious problem in 3.2 - entire /vm/ > entries are leaked on domU reboot! I haven't got round to debugging that > one yet since it's not present in 3.1, but it really should be fixed > > regards > john > > > # HG changeset patch > # User john.levon@xxxxxxx > # Date 1200028523 28800 > # Node ID 8a26f9a3f573a7c3b970f4349dd47fd4bf851df1 > # Parent c594cafb7e427e3b1f732a37c4b521f1e98dd08d > 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,21 @@ 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) > + 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) > + t.commit() > + 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |