Fix the fucking TSO bug! Also, fix our ARP replies while we are at it. 0.0.31
authorQuentin Smith <quentin@mit.edu>
Mon, 27 Dec 2010 06:21:26 +0000 (01:21 -0500)
committerQuentin Smith <quentin@mit.edu>
Mon, 27 Dec 2010 06:21:26 +0000 (01:21 -0500)
debian/changelog
vif-invirtroute

index 5d8decf..693f2de 100644 (file)
@@ -1,3 +1,14 @@
+invirt-xen-config (0.0.31) unstable; urgency=low
+
+  * Only run arpspoof when NICs are brought online (this potentially fixes
+    a race condition that occurs when migrating VMs)
+  * Remove the advertised gso-tcpv4 feature from VIFs which causes the
+    guest to incorrectly believe that Xen supports TCP segmentation
+    offload. This supercedes our previous fix of disabling TSO in guest
+    kernels.
+
+ -- Quentin Smith <quentin@mit.edu>  Mon, 27 Dec 2010 01:19:58 -0500
+
 invirt-xen-config (0.0.30) unstable; urgency=low
 
   * Support debian-installer based autoinstallation.
index c76a95e..4663664 100755 (executable)
@@ -35,6 +35,7 @@ case "$command" in
         ifconfig ${dev} ${main_ip} netmask 255.255.255.255 up
         echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp
        echo 1 >/proc/sys/net/ipv4/conf/${dev}/rp_filter 
+       xenstore-write "$XENBUS_PATH/feature-gso-tcpv4" 0
         if [ x${qemu_online} != xyes ]; then
           ethtool -K ${dev} tx off
         fi
@@ -55,9 +56,11 @@ if [  ${vif_type} != "ioemu"  -o  x${qemu_online} = xyes ] ; then
     # the guest using those addresses.
        for addr in ${ip} ; do
            ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip}
-           arpspoof -i $(invirt-getconf xen.iface) -t 18.181.0.1 ${addr}&
-           sleep 5
-           kill %arpspoof
+           if [ "$command" == "online" ]; then
+               arpspoof -i $(invirt-getconf xen.iface) -t 18.181.0.1 ${addr}&
+               sleep 5
+               kill %arpspoof
+           fi
        done 
     fi
 fi