diff for duplicates of <20100713102025.2835.61045.sendpatchset@danny.redhat> diff --git a/a/1.txt b/N1/1.txt index 1fa6ffb..b9e9077 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -115,9 +115,3 @@ index aa72e89..ebbbfea 100644 -- 1.7.1.1 - --- -To unsubscribe, send a message with 'unsubscribe linux-mm' in -the body to majordomo@kvack.org. For more info on Linux MM, -see: http://www.linux-mm.org/ . -Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index 811b28b..d585828 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -132,12 +132,6 @@ " \t}\n" " \n" "-- \n" - "1.7.1.1\n" - "\n" - "--\n" - "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" - "the body to majordomo@kvack.org. For more info on Linux MM,\n" - "see: http://www.linux-mm.org/ .\n" - "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" + 1.7.1.1 -8f28ade9803fee8db9bc8d9b5c2bcaeb995f1943c54474ca7dc950d4b1df11a2 +0dcdd1e4539258a3a8e68d7a07e4519143342b0bb32e0915c041a307a5407c54
diff --git a/a/1.txt b/N2/1.txt index 1fa6ffb..8b13789 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,123 +1 @@ ->From 97cab9c6b5964ba48bee576214d71edbef74d0a6 Mon Sep 17 00:00:00 2001 -From: Xiaotian Feng <dfeng@redhat.com> -Date: Tue, 13 Jul 2010 11:37:56 +0800 -Subject: [PATCH 19/30] netvm: prevent a stream specific deadlock -It could happen that all !SOCK_MEMALLOC sockets have buffered so much data -that we're over the global rmem limit. This will prevent SOCK_MEMALLOC buffers -from receiving data, which will prevent userspace from running, which is needed -to reduce the buffered data. - -Fix this by exempting the SOCK_MEMALLOC sockets from the rmem limit. - -Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> -Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de> -Signed-off-by: Xiaotian Feng <dfeng@redhat.com> ---- - include/net/sock.h | 7 ++++--- - net/core/sock.c | 2 +- - net/ipv4/tcp_input.c | 12 ++++++------ - net/sctp/ulpevent.c | 2 +- - 4 files changed, 12 insertions(+), 11 deletions(-) - -diff --git a/include/net/sock.h b/include/net/sock.h -index 1de14b6..ac87f6f 100644 ---- a/include/net/sock.h -+++ b/include/net/sock.h -@@ -977,12 +977,13 @@ static inline int sk_wmem_schedule(struct sock *sk, int size) - __sk_mem_schedule(sk, size, SK_MEM_SEND); - } - --static inline int sk_rmem_schedule(struct sock *sk, int size) -+static inline int sk_rmem_schedule(struct sock *sk, struct sk_buff *skb) - { - if (!sk_has_account(sk)) - return 1; -- return size <= sk->sk_forward_alloc || -- __sk_mem_schedule(sk, size, SK_MEM_RECV); -+ return skb->truesize <= sk->sk_forward_alloc || -+ __sk_mem_schedule(sk, skb->truesize, SK_MEM_RECV) || -+ skb_emergency(skb); - } - - static inline void sk_mem_reclaim(struct sock *sk) -diff --git a/net/core/sock.c b/net/core/sock.c -index 6bd5765..f24560c 100644 ---- a/net/core/sock.c -+++ b/net/core/sock.c -@@ -399,7 +399,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) - if (err) - return err; - -- if (!sk_rmem_schedule(sk, skb->truesize)) { -+ if (!sk_rmem_schedule(sk, skb)) { - atomic_inc(&sk->sk_drops); - return -ENOBUFS; - } -diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index 0433466..cea2bc2 100644 ---- a/net/ipv4/tcp_input.c -+++ b/net/ipv4/tcp_input.c -@@ -4340,19 +4340,19 @@ static void tcp_ofo_queue(struct sock *sk) - static int tcp_prune_ofo_queue(struct sock *sk); - static int tcp_prune_queue(struct sock *sk); - --static inline int tcp_try_rmem_schedule(struct sock *sk, unsigned int size) -+static inline int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb) - { - if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || -- !sk_rmem_schedule(sk, size)) { -+ !sk_rmem_schedule(sk, skb)) { - - if (tcp_prune_queue(sk) < 0) - return -1; - -- if (!sk_rmem_schedule(sk, size)) { -+ if (!sk_rmem_schedule(sk, skb)) { - if (!tcp_prune_ofo_queue(sk)) - return -1; - -- if (!sk_rmem_schedule(sk, size)) -+ if (!sk_rmem_schedule(sk, skb)) - return -1; - } - } -@@ -4405,7 +4405,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) - if (eaten <= 0) { - queue_and_out: - if (eaten < 0 && -- tcp_try_rmem_schedule(sk, skb->truesize)) -+ tcp_try_rmem_schedule(sk, skb)) - goto drop; - - skb_set_owner_r(skb, sk); -@@ -4476,7 +4476,7 @@ drop: - - TCP_ECN_check_ce(tp, skb); - -- if (tcp_try_rmem_schedule(sk, skb->truesize)) -+ if (tcp_try_rmem_schedule(sk, skb)) - goto drop; - - /* Disable header prediction. */ -diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c -index aa72e89..ebbbfea 100644 ---- a/net/sctp/ulpevent.c -+++ b/net/sctp/ulpevent.c -@@ -702,7 +702,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, - if (rx_count >= asoc->base.sk->sk_rcvbuf) { - - if ((asoc->base.sk->sk_userlocks & SOCK_RCVBUF_LOCK) || -- (!sk_rmem_schedule(asoc->base.sk, chunk->skb->truesize))) -+ (!sk_rmem_schedule(asoc->base.sk, chunk->skb))) - goto fail; - } - --- -1.7.1.1 - --- -To unsubscribe, send a message with 'unsubscribe linux-mm' in -the body to majordomo@kvack.org. For more info on Linux MM, -see: http://www.linux-mm.org/ . -Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N2/content_digest index 811b28b..a97105a 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -16,128 +16,5 @@ " davem@davemloft.net\0" "\00:1\0" "b\0" - ">From 97cab9c6b5964ba48bee576214d71edbef74d0a6 Mon Sep 17 00:00:00 2001\n" - "From: Xiaotian Feng <dfeng@redhat.com>\n" - "Date: Tue, 13 Jul 2010 11:37:56 +0800\n" - "Subject: [PATCH 19/30] netvm: prevent a stream specific deadlock\n" - "\n" - "It could happen that all !SOCK_MEMALLOC sockets have buffered so much data\n" - "that we're over the global rmem limit. This will prevent SOCK_MEMALLOC buffers\n" - "from receiving data, which will prevent userspace from running, which is needed\n" - "to reduce the buffered data.\n" - "\n" - "Fix this by exempting the SOCK_MEMALLOC sockets from the rmem limit.\n" - "\n" - "Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>\n" - "Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>\n" - "Signed-off-by: Xiaotian Feng <dfeng@redhat.com>\n" - "---\n" - " include/net/sock.h | 7 ++++---\n" - " net/core/sock.c | 2 +-\n" - " net/ipv4/tcp_input.c | 12 ++++++------\n" - " net/sctp/ulpevent.c | 2 +-\n" - " 4 files changed, 12 insertions(+), 11 deletions(-)\n" - "\n" - "diff --git a/include/net/sock.h b/include/net/sock.h\n" - "index 1de14b6..ac87f6f 100644\n" - "--- a/include/net/sock.h\n" - "+++ b/include/net/sock.h\n" - "@@ -977,12 +977,13 @@ static inline int sk_wmem_schedule(struct sock *sk, int size)\n" - " \t\t__sk_mem_schedule(sk, size, SK_MEM_SEND);\n" - " }\n" - " \n" - "-static inline int sk_rmem_schedule(struct sock *sk, int size)\n" - "+static inline int sk_rmem_schedule(struct sock *sk, struct sk_buff *skb)\n" - " {\n" - " \tif (!sk_has_account(sk))\n" - " \t\treturn 1;\n" - "-\treturn size <= sk->sk_forward_alloc ||\n" - "-\t\t__sk_mem_schedule(sk, size, SK_MEM_RECV);\n" - "+\treturn skb->truesize <= sk->sk_forward_alloc ||\n" - "+\t\t__sk_mem_schedule(sk, skb->truesize, SK_MEM_RECV) ||\n" - "+\t\tskb_emergency(skb);\n" - " }\n" - " \n" - " static inline void sk_mem_reclaim(struct sock *sk)\n" - "diff --git a/net/core/sock.c b/net/core/sock.c\n" - "index 6bd5765..f24560c 100644\n" - "--- a/net/core/sock.c\n" - "+++ b/net/core/sock.c\n" - "@@ -399,7 +399,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)\n" - " \tif (err)\n" - " \t\treturn err;\n" - " \n" - "-\tif (!sk_rmem_schedule(sk, skb->truesize)) {\n" - "+\tif (!sk_rmem_schedule(sk, skb)) {\n" - " \t\tatomic_inc(&sk->sk_drops);\n" - " \t\treturn -ENOBUFS;\n" - " \t}\n" - "diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c\n" - "index 0433466..cea2bc2 100644\n" - "--- a/net/ipv4/tcp_input.c\n" - "+++ b/net/ipv4/tcp_input.c\n" - "@@ -4340,19 +4340,19 @@ static void tcp_ofo_queue(struct sock *sk)\n" - " static int tcp_prune_ofo_queue(struct sock *sk);\n" - " static int tcp_prune_queue(struct sock *sk);\n" - " \n" - "-static inline int tcp_try_rmem_schedule(struct sock *sk, unsigned int size)\n" - "+static inline int tcp_try_rmem_schedule(struct sock *sk, struct sk_buff *skb)\n" - " {\n" - " \tif (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf ||\n" - "-\t !sk_rmem_schedule(sk, size)) {\n" - "+\t !sk_rmem_schedule(sk, skb)) {\n" - " \n" - " \t\tif (tcp_prune_queue(sk) < 0)\n" - " \t\t\treturn -1;\n" - " \n" - "-\t\tif (!sk_rmem_schedule(sk, size)) {\n" - "+\t\tif (!sk_rmem_schedule(sk, skb)) {\n" - " \t\t\tif (!tcp_prune_ofo_queue(sk))\n" - " \t\t\t\treturn -1;\n" - " \n" - "-\t\t\tif (!sk_rmem_schedule(sk, size))\n" - "+\t\t\tif (!sk_rmem_schedule(sk, skb))\n" - " \t\t\t\treturn -1;\n" - " \t\t}\n" - " \t}\n" - "@@ -4405,7 +4405,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)\n" - " \t\tif (eaten <= 0) {\n" - " queue_and_out:\n" - " \t\t\tif (eaten < 0 &&\n" - "-\t\t\t tcp_try_rmem_schedule(sk, skb->truesize))\n" - "+\t\t\t tcp_try_rmem_schedule(sk, skb))\n" - " \t\t\t\tgoto drop;\n" - " \n" - " \t\t\tskb_set_owner_r(skb, sk);\n" - "@@ -4476,7 +4476,7 @@ drop:\n" - " \n" - " \tTCP_ECN_check_ce(tp, skb);\n" - " \n" - "-\tif (tcp_try_rmem_schedule(sk, skb->truesize))\n" - "+\tif (tcp_try_rmem_schedule(sk, skb))\n" - " \t\tgoto drop;\n" - " \n" - " \t/* Disable header prediction. */\n" - "diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c\n" - "index aa72e89..ebbbfea 100644\n" - "--- a/net/sctp/ulpevent.c\n" - "+++ b/net/sctp/ulpevent.c\n" - "@@ -702,7 +702,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,\n" - " \tif (rx_count >= asoc->base.sk->sk_rcvbuf) {\n" - " \n" - " \t\tif ((asoc->base.sk->sk_userlocks & SOCK_RCVBUF_LOCK) ||\n" - "-\t\t (!sk_rmem_schedule(asoc->base.sk, chunk->skb->truesize)))\n" - "+\t\t (!sk_rmem_schedule(asoc->base.sk, chunk->skb)))\n" - " \t\t\tgoto fail;\n" - " \t}\n" - " \n" - "-- \n" - "1.7.1.1\n" - "\n" - "--\n" - "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" - "the body to majordomo@kvack.org. For more info on Linux MM,\n" - "see: http://www.linux-mm.org/ .\n" - "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -8f28ade9803fee8db9bc8d9b5c2bcaeb995f1943c54474ca7dc950d4b1df11a2 +241f787bbd058b0c74d2fc64d872261d6cb92b418f23d08cfc1249d88ecaaec7
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.