[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 1307360451 25200
# Node ID 0af6803eeb9f278abd1739cb54ceb0fc2ed14470
# Parent  dc243b6893366c453834734e0b4b17a3f233daa2
remus: handle exceptions while installing/unstalling net buffer

Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx>

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)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.