[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3 of 3] remus: handle exceptions while installing/unstalling net buffer
# HG changeset patch # User Shriram Rajagopalan <rshriram@xxxxxxxxx> # Date 1308749695 25200 # Node ID 9eed27800ff6a2e6d73f138f20af072c1b41925e # Parent 794ead1a2be0578d70c38f006e7ab61c7abe9203 remus: handle exceptions while installing/unstalling net buffer Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx> diff -r 794ead1a2be0 -r 9eed27800ff6 tools/python/xen/remus/device.py --- a/tools/python/xen/remus/device.py Tue Jun 21 12:11:44 2011 -0700 +++ b/tools/python/xen/remus/device.py Wed Jun 22 06:34:55 2011 -0700 @@ -169,15 +169,25 @@ self.vif = vif # voodoo from http://www.linuxfoundation.org/collaborate/workgroups/networking/ifb#Typical_Usage util.runcmd('ip link set %s up' % self.devname) - util.runcmd('tc qdisc add dev %s ingress' % vif.dev) + try: + util.runcmd('tc qdisc add dev %s ingress' % vif.dev) + except util.PipeException, e: + # check if error indicates that ingress qdisc + # already exists on the vif. If so, ignore it. + ignoreme = 'RTNETLINK answers: File exists' + if ignoreme in str(e): + pass + else: + raise e util.runcmd('tc filter add dev %s parent ffff: proto ip pref 10 ' 'u32 match u32 0 0 action mirred egress redirect ' 'dev %s' % (vif.dev, self.devname)) def uninstall(self): - util.runcmd('tc filter del dev %s parent ffff: proto ip pref 10 u32' \ - % self.vif.dev) - util.runcmd('tc qdisc del dev %s ingress' % self.vif.dev) + try: + util.runcmd('tc qdisc del dev %s ingress' % self.vif.dev) + except util.PipeException, e: + pass util.runcmd('ip link set %s down' % self.devname) class IMQBuffer(Netbuf): @@ -373,9 +383,15 @@ def uninstall(self): if self.installed: - req = qdisc.delrequest(self.bufdevno, self.handle) - self.rth.talk(req.pack()) + try: + req = qdisc.delrequest(self.bufdevno, self.handle) + self.rth.talk(req.pack()) + except IOError, e: + pass self.installed = False - self.bufdev.uninstall() - self.pool.put(self.bufdev) + try: + self.bufdev.uninstall() + except util.PipeException, e: + pass + self.pool.put(self.bufdev) diff -r 794ead1a2be0 -r 9eed27800ff6 tools/python/xen/remus/util.py --- a/tools/python/xen/remus/util.py Tue Jun 21 12:11:44 2011 -0700 +++ b/tools/python/xen/remus/util.py Wed Jun 22 06:34:55 2011 -0700 @@ -65,8 +65,10 @@ proc.wait() if proc.returncode: print ' '.join(args) - print stderr.strip() - raise PipeException('%s failed' % args[0], proc.returncode) + errmsg = stderr.strip() + print errmsg + raise PipeException('%s failed (errmsg: %s)' % (args[0], errmsg), + proc.returncode) return stdout except (OSError, IOError), inst: raise PipeException('could not run %s' % args[0], inst.errno) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |