diff --git a/iscsi-scst/kernel/patches/rhel/put_page_callback-2.6.32-220.patch b/iscsi-scst/kernel/patches/rhel/put_page_callback-2.6.32-220.patch index d596b0d0b..d5c9b62aa 100644 --- a/iscsi-scst/kernel/patches/rhel/put_page_callback-2.6.32-220.patch +++ b/iscsi-scst/kernel/patches/rhel/put_page_callback-2.6.32-220.patch @@ -1,6 +1,6 @@ -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/Kbuild linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/Kbuild ---- linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/Kbuild 2011-07-09 00:47:13.884215174 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/Kbuild 2011-07-09 00:47:47.530389221 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/Kbuild linux-2.6.32-220.2.1.el6.x86_64/include/linux/Kbuild +--- linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/Kbuild 2011-12-13 20:58:15.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/include/linux/Kbuild 2012-01-11 13:04:25.174935229 +0100 @@ -113,6 +113,7 @@ header-y += map_to_7segment.h header-y += matroxfb.h header-y += meye.h @@ -9,9 +9,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/Kbuild linux-2.6.3 header-y += mmtimer.h header-y += mqueue.h header-y += mtio.h -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/mm_types.h linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/mm_types.h ---- linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/mm_types.h 2011-07-09 00:47:13.893191775 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/mm_types.h 2011-07-09 00:47:47.533311169 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/mm_types.h linux-2.6.32-220.2.1.el6.x86_64/include/linux/mm_types.h +--- linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/mm_types.h 2011-12-13 21:05:37.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/include/linux/mm_types.h 2012-01-11 13:04:25.174935229 +0100 @@ -106,6 +106,18 @@ struct page { */ void *shadow; @@ -31,9 +31,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/mm_types.h linux-2 }; /* -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/net.h linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/net.h ---- linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/net.h 2011-07-09 00:47:13.867629724 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/include/linux/net.h 2011-07-09 00:47:47.536207157 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/net.h linux-2.6.32-220.2.1.el6.x86_64/include/linux/net.h +--- linux-2.6.32-220.2.1.el6.x86_64.orig/include/linux/net.h 2011-12-13 21:07:31.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/include/linux/net.h 2012-01-11 13:04:25.195827374 +0100 @@ -20,6 +20,7 @@ #include @@ -42,7 +42,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/net.h linux-2.6.32 #define NPROTO AF_MAX -@@ -365,5 +366,44 @@ static const struct proto_ops name##_ops +@@ -366,5 +367,44 @@ static const struct proto_ops name##_ops extern struct ratelimit_state net_ratelimit_state; #endif @@ -87,10 +87,10 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/include/linux/net.h linux-2.6.32 + #endif /* __KERNEL__ */ #endif /* _LINUX_NET_H */ -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/dev.c linux-2.6.32-131.4.1.el6.x86_64.new/net/core/dev.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/dev.c 2011-07-09 00:47:14.491417046 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/core/dev.c 2011-07-09 00:47:47.538194361 +0200 -@@ -2903,7 +2903,7 @@ pull: +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/core/dev.c linux-2.6.32-220.2.1.el6.x86_64/net/core/dev.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/core/dev.c 2011-12-13 21:08:32.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/core/dev.c 2012-01-11 13:04:25.201554763 +0100 +@@ -2997,7 +2997,7 @@ pull: skb_shinfo(skb)->frags[0].size -= grow; if (unlikely(!skb_shinfo(skb)->frags[0].size)) { @@ -99,9 +99,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/dev.c linux-2.6.32-131. memmove(skb_shinfo(skb)->frags, skb_shinfo(skb)->frags + 1, --skb_shinfo(skb)->nr_frags); -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-131.4.1.el6.x86_64.new/net/core/skbuff.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c 2011-07-09 00:47:14.491417046 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/core/skbuff.c 2011-07-09 00:47:47.542260687 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-220.2.1.el6.x86_64/net/core/skbuff.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/core/skbuff.c 2011-12-13 21:05:47.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/core/skbuff.c 2012-01-11 13:06:47.336976215 +0100 @@ -76,13 +76,13 @@ static struct kmem_cache *skbuff_fclone_ static void sock_pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf) @@ -126,9 +126,27 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 + net_put_page(skb_shinfo(skb)->frags[i].page); } - if (skb_has_frags(skb)) -@@ -766,7 +766,7 @@ struct sk_buff *pskb_copy(struct sk_buff + /* +@@ -648,7 +648,7 @@ static int skb_copy_ubufs(struct sk_buff + if (!page) { + while (head) { + struct page *next = (struct page *)head->private; +- put_page(head); ++ net_put_page(head); + head = next; + } + return -ENOMEM; +@@ -663,7 +663,7 @@ static int skb_copy_ubufs(struct sk_buff + /* skb frags release userspace buffers */ + for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) +- put_page(skb_shinfo(skb)->frags[i].page); ++ net_put_page(skb_shinfo(skb)->frags[i].page); + + uarg->callback(uarg); + +@@ -840,7 +840,7 @@ struct sk_buff *pskb_copy(struct sk_buff + } for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_shinfo(n)->frags[i] = skb_shinfo(skb)->frags[i]; - get_page(skb_shinfo(n)->frags[i].page); @@ -136,16 +154,16 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 } skb_shinfo(n)->nr_frags = i; } -@@ -832,7 +832,7 @@ int pskb_expand_head(struct sk_buff *skb - skb_tx(skb)->dev_zerocopy = 0; - } +@@ -926,7 +926,7 @@ int pskb_expand_head(struct sk_buff *skb + skb_tx(skb)->dev_zerocopy = 0; + } for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) - get_page(skb_shinfo(skb)->frags[i].page); + net_get_page(skb_shinfo(skb)->frags[i].page); if (skb_has_frags(skb)) skb_clone_fraglist(skb); -@@ -1106,7 +1106,7 @@ drop_pages: +@@ -1202,7 +1202,7 @@ drop_pages: skb_shinfo(skb)->nr_frags = i; for (; i < nfrags; i++) @@ -154,7 +172,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 if (skb_has_frags(skb)) skb_drop_fraglist(skb); -@@ -1275,7 +1275,7 @@ pull_pages: +@@ -1371,7 +1371,7 @@ pull_pages: k = 0; for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { if (skb_shinfo(skb)->frags[i].size <= eat) { @@ -163,7 +181,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 eat -= skb_shinfo(skb)->frags[i].size; } else { skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; -@@ -1376,7 +1376,7 @@ EXPORT_SYMBOL(skb_copy_bits); +@@ -1473,7 +1473,7 @@ EXPORT_SYMBOL(skb_copy_bits); */ static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i) { @@ -172,7 +190,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 } static inline struct page *linear_to_page(struct page *page, unsigned int *len, -@@ -1400,7 +1400,7 @@ new_page: +@@ -1497,7 +1497,7 @@ new_page: off = sk->sk_sndmsg_off; mlen = PAGE_SIZE - off; if (mlen < 64 && mlen < *len) { @@ -181,7 +199,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 goto new_page; } -@@ -1410,7 +1410,7 @@ new_page: +@@ -1507,7 +1507,7 @@ new_page: memcpy(page_address(p) + off, page_address(page) + *offset, *len); sk->sk_sndmsg_off += *len; *offset = off; @@ -190,7 +208,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 return p; } -@@ -1431,7 +1431,7 @@ static inline int spd_fill_page(struct s +@@ -1528,7 +1528,7 @@ static inline int spd_fill_page(struct s if (!page) return 1; } else @@ -199,7 +217,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 spd->pages[spd->nr_pages] = page; spd->partial[spd->nr_pages].len = *len; -@@ -2061,7 +2061,7 @@ static inline void skb_split_no_header(s +@@ -2158,7 +2158,7 @@ static inline void skb_split_no_header(s * where splitting is expensive. * 2. Split is accurately. We make this. */ @@ -208,7 +226,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 skb_shinfo(skb1)->frags[0].page_offset += len - pos; skb_shinfo(skb1)->frags[0].size -= len - pos; skb_shinfo(skb)->frags[i].size = len - pos; -@@ -2183,7 +2183,7 @@ int skb_shift(struct sk_buff *tgt, struc +@@ -2280,7 +2280,7 @@ int skb_shift(struct sk_buff *tgt, struc to++; } else { @@ -217,7 +235,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 fragto->page = fragfrom->page; fragto->page_offset = fragfrom->page_offset; fragto->size = todo; -@@ -2205,7 +2205,7 @@ int skb_shift(struct sk_buff *tgt, struc +@@ -2302,7 +2302,7 @@ int skb_shift(struct sk_buff *tgt, struc fragto = &skb_shinfo(tgt)->frags[merge]; fragto->size += fragfrom->size; @@ -226,7 +244,7 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 } /* Reposition in the original skb */ -@@ -2600,7 +2600,7 @@ struct sk_buff *skb_segment(struct sk_bu +@@ -2697,7 +2697,7 @@ struct sk_buff *skb_segment(struct sk_bu while (pos < offset + len && i < nfrags) { *frag = skb_shinfo(skb)->frags[i]; @@ -235,9 +253,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/core/skbuff.c linux-2.6.32-1 size = frag->size; if (pos < offset) { -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/ip_output.c linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/ip_output.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/ip_output.c 2011-07-09 00:47:14.538469946 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/ip_output.c 2011-07-09 00:47:47.544855733 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/ip_output.c linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/ip_output.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/ip_output.c 2011-12-13 21:03:21.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/ip_output.c 2012-01-11 13:04:25.219980596 +0100 @@ -981,7 +981,7 @@ alloc_new_skb: err = -EMSGSIZE; goto error; @@ -256,9 +274,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/ip_output.c linux-2.6.3 skb_fill_page_desc(skb, i, page, offset, len); } else { err = -EMSGSIZE; -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/Makefile linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/Makefile ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/Makefile 2011-07-09 00:47:14.540204846 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/Makefile 2011-07-09 00:47:47.544855733 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/Makefile linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/Makefile +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/Makefile 2009-12-03 04:51:21.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/Makefile 2012-01-11 13:04:25.222633491 +0100 @@ -49,6 +49,7 @@ obj-$(CONFIG_TCP_CONG_LP) += tcp_lp.o obj-$(CONFIG_TCP_CONG_YEAH) += tcp_yeah.o obj-$(CONFIG_TCP_CONG_ILLINOIS) += tcp_illinois.o @@ -267,9 +285,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/Makefile linux-2.6.32-1 obj-$(CONFIG_XFRM) += xfrm4_policy.o xfrm4_state.o xfrm4_input.o \ xfrm4_output.o -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp.c linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp.c 2011-07-09 00:47:14.522494769 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp.c 2011-07-09 00:47:47.548279863 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp.c linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp.c 2011-12-13 21:02:58.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp.c 2012-01-11 13:04:25.227497748 +0100 @@ -799,7 +799,7 @@ new_segment: if (can_coalesce) { skb_shinfo(skb)->frags[i - 1].size += copy; @@ -300,10 +318,10 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp.c linux-2.6.32-131. TCP_PAGE(sk) = page; } } -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_output.c linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp_output.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_output.c 2011-07-09 00:47:14.535532920 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp_output.c 2011-07-09 00:47:47.548279863 +0200 -@@ -909,7 +909,7 @@ static void __pskb_trim_head(struct sk_b +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp_output.c linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp_output.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp_output.c 2011-12-13 21:07:40.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp_output.c 2012-01-11 13:04:25.232755077 +0100 +@@ -911,7 +911,7 @@ static void __pskb_trim_head(struct sk_b k = 0; for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { if (skb_shinfo(skb)->frags[i].size <= eat) { @@ -312,9 +330,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_output.c linux-2.6. eat -= skb_shinfo(skb)->frags[i].size; } else { skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_zero_copy.c linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp_zero_copy.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_zero_copy.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv4/tcp_zero_copy.c 2011-07-09 00:47:47.548279863 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp_zero_copy.c linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp_zero_copy.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv4/tcp_zero_copy.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv4/tcp_zero_copy.c 2012-01-11 13:04:25.235282486 +0100 @@ -0,0 +1,49 @@ +/* + * Support routines for TCP zero copy transmit @@ -365,10 +383,10 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv4/tcp_zero_copy.c linux-2 + return res; +} +EXPORT_SYMBOL(net_set_get_put_page_callbacks); -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv6/ip6_output.c linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv6/ip6_output.c ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv6/ip6_output.c 2011-07-09 00:47:14.498374289 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/ipv6/ip6_output.c 2011-07-09 00:47:47.557327813 +0200 -@@ -1370,7 +1370,7 @@ alloc_new_skb: +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv6/ip6_output.c linux-2.6.32-220.2.1.el6.x86_64/net/ipv6/ip6_output.c +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/ipv6/ip6_output.c 2011-12-13 21:08:29.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/ipv6/ip6_output.c 2012-01-11 13:04:25.238620480 +0100 +@@ -1400,7 +1400,7 @@ alloc_new_skb: err = -EMSGSIZE; goto error; } @@ -377,9 +395,9 @@ diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/ipv6/ip6_output.c linux-2.6. skb_fill_page_desc(skb, i, page, sk->sk_sndmsg_off, 0); frag = &skb_shinfo(skb)->frags[i]; } -diff -uNrp linux-2.6.32-131.4.1.el6.x86_64.orig/net/Kconfig linux-2.6.32-131.4.1.el6.x86_64.new/net/Kconfig ---- linux-2.6.32-131.4.1.el6.x86_64.orig/net/Kconfig 2011-07-09 00:47:14.452504858 +0200 -+++ linux-2.6.32-131.4.1.el6.x86_64.new/net/Kconfig 2011-07-09 00:47:47.557327813 +0200 +diff -uNrp linux-2.6.32-220.2.1.el6.x86_64.orig/net/Kconfig linux-2.6.32-220.2.1.el6.x86_64/net/Kconfig +--- linux-2.6.32-220.2.1.el6.x86_64.orig/net/Kconfig 2009-12-03 04:51:21.000000000 +0100 ++++ linux-2.6.32-220.2.1.el6.x86_64/net/Kconfig 2012-01-11 13:04:25.241504025 +0100 @@ -72,6 +72,18 @@ config INET Short answer: say Y.