diff --git a/lustre/kernel_patches/patches/tcp_zero_copy_2.4.20_chaos.patch b/lustre/kernel_patches/patches/tcp_zero_copy_2.4.20_chaos.patch
index dfb4de51c6aeea00f4d48a3017a11e9d71e41348..a64ecf95dfe77c4ccad190f4deec983a0d3d9e4d 100644
--- a/lustre/kernel_patches/patches/tcp_zero_copy_2.4.20_chaos.patch
+++ b/lustre/kernel_patches/patches/tcp_zero_copy_2.4.20_chaos.patch
@@ -5,9 +5,11 @@
  net/netsyms.c          |    2 
  5 files changed, 311 insertions(+), 3 deletions(-)
 
---- kernel-2.4.20-6chaos_18_7/include/linux/skbuff.h~tcp_zero_copy_2.4.20_chaos	2003-06-24 11:31:17.000000000 -0600
-+++ kernel-2.4.20-6chaos_18_7-braam/include/linux/skbuff.h	2003-07-12 15:38:07.000000000 -0600
-@@ -116,6 +116,30 @@ struct skb_frag_struct
+Index: linux-2.4.20-rh-20.9/include/linux/skbuff.h
+===================================================================
+--- linux-2.4.20-rh-20.9.orig/include/linux/skbuff.h	2003-09-13 19:34:24.000000000 +0400
++++ linux-2.4.20-rh-20.9/include/linux/skbuff.h	2003-12-19 14:14:55.000000000 +0300
+@@ -116,6 +116,30 @@
  	__u16 size;
  };
  
@@ -38,7 +40,7 @@
  /* This data is invariant across clones and lives at
   * the end of the header data, ie. at skb->end.
   */
-@@ -123,6 +147,12 @@ struct skb_shared_info {
+@@ -123,6 +147,12 @@
  	atomic_t	dataref;
  	unsigned int	nr_frags;
  	struct sk_buff	*frag_list;
@@ -51,9 +53,11 @@
  	skb_frag_t	frags[MAX_SKB_FRAGS];
  };
  
---- kernel-2.4.20-6chaos_18_7/include/net/tcp.h~tcp_zero_copy_2.4.20_chaos	2003-06-24 11:31:17.000000000 -0600
-+++ kernel-2.4.20-6chaos_18_7-braam/include/net/tcp.h	2003-07-12 15:38:07.000000000 -0600
-@@ -643,6 +643,8 @@ extern int		    	tcp_v4_tw_remember_stam
+Index: linux-2.4.20-rh-20.9/include/net/tcp.h
+===================================================================
+--- linux-2.4.20-rh-20.9.orig/include/net/tcp.h	2003-09-13 19:34:25.000000000 +0400
++++ linux-2.4.20-rh-20.9/include/net/tcp.h	2003-12-19 14:14:55.000000000 +0300
+@@ -643,6 +643,8 @@
  
  extern int			tcp_sendmsg(struct sock *sk, struct msghdr *msg, int size);
  extern ssize_t			tcp_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags);
@@ -62,7 +66,7 @@
  
  extern int			tcp_ioctl(struct sock *sk, 
  					  int cmd, 
-@@ -737,6 +739,9 @@ extern int			tcp_recvmsg(struct sock *sk
+@@ -737,6 +739,9 @@
  					    struct msghdr *msg,
  					    int len, int nonblock, 
  					    int flags, int *addr_len);
@@ -72,20 +76,33 @@
  
  extern int			tcp_listen_start(struct sock *sk);
  
---- kernel-2.4.20-6chaos_18_7/net/netsyms.c~tcp_zero_copy_2.4.20_chaos	2003-05-15 21:15:18.000000000 -0600
-+++ kernel-2.4.20-6chaos_18_7-braam/net/netsyms.c	2003-07-12 15:38:54.000000000 -0600
-@@ -397,6 +397,8 @@ EXPORT_SYMBOL(sysctl_tcp_wmem);
+Index: linux-2.4.20-rh-20.9/net/netsyms.c
+===================================================================
+--- linux-2.4.20-rh-20.9.orig/net/netsyms.c	2003-09-13 19:34:24.000000000 +0400
++++ linux-2.4.20-rh-20.9/net/netsyms.c	2003-12-19 14:15:24.000000000 +0300
+@@ -396,7 +396,7 @@
+ EXPORT_SYMBOL(sysctl_tcp_wmem);
  EXPORT_SYMBOL(sysctl_tcp_ecn);
  EXPORT_SYMBOL(tcp_cwnd_application_limited);
- EXPORT_SYMBOL(tcp_sendpage);
-+EXPORT_SYMBOL(tcp_sendpage_zccd);
+-EXPORT_SYMBOL(tcp_sendpage);
 +EXPORT_SYMBOL(tcp_recvpackets);
  EXPORT_SYMBOL(sysctl_tcp_low_latency);
  
  EXPORT_SYMBOL(tcp_write_xmit);
---- kernel-2.4.20-6chaos_18_7/net/core/skbuff.c~tcp_zero_copy_2.4.20_chaos	2003-05-15 21:15:21.000000000 -0600
-+++ kernel-2.4.20-6chaos_18_7-braam/net/core/skbuff.c	2003-07-12 15:38:07.000000000 -0600
-@@ -208,6 +208,8 @@ struct sk_buff *alloc_skb(unsigned int s
+@@ -417,6 +417,8 @@
+ 
+ #endif
+ 
++EXPORT_SYMBOL(tcp_sendpage);
++EXPORT_SYMBOL(tcp_sendpage_zccd);
+ EXPORT_SYMBOL(tcp_read_sock);
+ 
+ EXPORT_SYMBOL(netlink_set_err);
+Index: linux-2.4.20-rh-20.9/net/core/skbuff.c
+===================================================================
+--- linux-2.4.20-rh-20.9.orig/net/core/skbuff.c	2003-09-13 19:34:19.000000000 +0400
++++ linux-2.4.20-rh-20.9/net/core/skbuff.c	2003-12-19 14:14:56.000000000 +0300
+@@ -208,6 +208,8 @@
  	atomic_set(&(skb_shinfo(skb)->dataref), 1);
  	skb_shinfo(skb)->nr_frags = 0;
  	skb_shinfo(skb)->frag_list = NULL;
@@ -94,7 +111,7 @@
  	return skb;
  
  nodata:
-@@ -276,6 +278,10 @@ static void skb_release_data(struct sk_b
+@@ -276,6 +278,10 @@
  {
  	if (!skb->cloned ||
  	    atomic_dec_and_test(&(skb_shinfo(skb)->dataref))) {
@@ -105,7 +122,7 @@
  		if (skb_shinfo(skb)->nr_frags) {
  			int i;
  			for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
-@@ -532,6 +538,8 @@ int skb_linearize(struct sk_buff *skb, i
+@@ -532,6 +538,8 @@
  	atomic_set(&(skb_shinfo(skb)->dataref), 1);
  	skb_shinfo(skb)->nr_frags = 0;
  	skb_shinfo(skb)->frag_list = NULL;
@@ -114,7 +131,7 @@
  
  	/* We are no longer a clone, even if we were. */
  	skb->cloned = 0;
-@@ -578,6 +586,14 @@ struct sk_buff *pskb_copy(struct sk_buff
+@@ -578,6 +586,14 @@
  	n->data_len = skb->data_len;
  	n->len = skb->len;
  
@@ -129,7 +146,7 @@
  	if (skb_shinfo(skb)->nr_frags) {
  		int i;
  
-@@ -620,6 +636,8 @@ int pskb_expand_head(struct sk_buff *skb
+@@ -620,6 +636,8 @@
  	u8 *data;
  	int size = nhead + (skb->end - skb->head) + ntail;
  	long off;
@@ -138,7 +155,7 @@
  
  	if (skb_shared(skb))
  		BUG();
-@@ -641,6 +659,11 @@ int pskb_expand_head(struct sk_buff *skb
+@@ -641,6 +659,11 @@
  	if (skb_shinfo(skb)->frag_list)
  		skb_clone_fraglist(skb);
  
@@ -150,7 +167,7 @@
  	skb_release_data(skb);
  
  	off = (data+nhead) - skb->head;
-@@ -655,6 +678,8 @@ int pskb_expand_head(struct sk_buff *skb
+@@ -655,6 +678,8 @@
  	skb->nh.raw += off;
  	skb->cloned = 0;
  	atomic_set(&skb_shinfo(skb)->dataref, 1);
@@ -159,9 +176,11 @@
  	return 0;
  
  nodata:
---- kernel-2.4.20-6chaos_18_7/net/ipv4/tcp.c~tcp_zero_copy_2.4.20_chaos	2003-05-15 21:15:21.000000000 -0600
-+++ kernel-2.4.20-6chaos_18_7-braam/net/ipv4/tcp.c	2003-07-12 15:38:07.000000000 -0600
-@@ -747,7 +747,7 @@ do_interrupted:
+Index: linux-2.4.20-rh-20.9/net/ipv4/tcp.c
+===================================================================
+--- linux-2.4.20-rh-20.9.orig/net/ipv4/tcp.c	2003-09-13 19:34:25.000000000 +0400
++++ linux-2.4.20-rh-20.9/net/ipv4/tcp.c	2003-12-19 14:14:56.000000000 +0300
+@@ -747,7 +747,7 @@
  	goto out;
  }
  
@@ -170,7 +189,7 @@
  
  static inline int
  can_coalesce(struct sk_buff *skb, int i, struct page *page, int off)
-@@ -826,7 +826,8 @@ static int tcp_error(struct sock *sk, in
+@@ -826,7 +826,8 @@
  	return err;
  }
  
@@ -180,7 +199,7 @@
  {
  	struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
  	int mss_now;
-@@ -874,6 +875,17 @@ new_segment:
+@@ -874,6 +875,17 @@
  			copy = size;
  
  		i = skb_shinfo(skb)->nr_frags;
@@ -198,7 +217,7 @@
  		if (can_coalesce(skb, i, page, offset)) {
  			skb_shinfo(skb)->frags[i-1].size += copy;
  		} else if (i < MAX_SKB_FRAGS) {
-@@ -884,6 +896,20 @@ new_segment:
+@@ -884,6 +896,20 @@
  			goto new_segment;
  		}
  
@@ -219,7 +238,7 @@
  		skb->len += copy;
  		skb->data_len += copy;
  		skb->ip_summed = CHECKSUM_HW;
-@@ -947,7 +973,31 @@ ssize_t tcp_sendpage(struct socket *sock
+@@ -947,7 +973,31 @@
  
  	lock_sock(sk);
  	TCP_CHECK_TIMER(sk);
@@ -252,7 +271,7 @@
  	TCP_CHECK_TIMER(sk);
  	release_sock(sk);
  	return res;
-@@ -1771,6 +1821,202 @@ recv_urg:
+@@ -1771,6 +1821,202 @@
  	goto out;
  }
  
@@ -455,5 +474,3 @@
  /*
   *	State processing on a close. This implements the state shift for
   *	sending our FIN frame. Note that we only send a FIN for some
-
-_