From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shriram Rajagopalan Subject: [PATCH 3 of 3] remus: handle exceptions while installing/unstalling net buffer Date: Mon, 06 Jun 2011 04:51:52 -0700 Message-ID: <0af6803eeb9f278abd17.1307361112@athos.nss.cs.ubc.ca> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org # HG changeset patch # User Shriram Rajagopalan # Date 1307360451 25200 # Node ID 0af6803eeb9f278abd1739cb54ceb0fc2ed14470 # Parent dc243b6893366c453834734e0b4b17a3f233daa2 remus: handle exceptions while installing/unstalling net buffer Signed-off-by: Shriram Rajagopalan diff -r dc243b689336 -r 0af6803eeb9f tools/python/xen/remus/device.py --- a/tools/python/xen/remus/device.py Mon Jun 06 04:40:42 2011 -0700 +++ b/tools/python/xen/remus/device.py Mon Jun 06 04:40:51 2011 -0700 @@ -169,15 +169,21 @@ 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: #RTNETLINK file exists error + ##since we already track ifbs via the /var/run/remus/ifb file, + ## RTNETLINK file already exists error is not an issue. + pass 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: + pass util.runcmd('ip link set %s down' % self.devname) class IMQBuffer(Netbuf): @@ -373,9 +379,14 @@ def uninstall(self): if self.installed: - req = qdisc.delrequest(self.bufdevno, self.handle) - self.rth.talk(req.pack()) - self.installed = False - - self.bufdev.uninstall() + try: + req = qdisc.delrequest(self.bufdevno, self.handle) + self.rth.talk(req.pack()) + self.installed = False + except: + pass + try: + self.bufdev.uninstall() + except: + pass self.pool.put(self.bufdev)