diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-07-16 23:28:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-16 23:28:10 -0400 |
commit | 5c52ba170f8167511bdb65b981f4582100c40675 (patch) | |
tree | 1dab120003eb696dfb4ca18c40861274a317739d | |
parent | cf1100a7a4f2573f50f9a923b53373977328e3c8 (diff) |
sock: add net to prot->enter_memory_pressure callback
The tcp_enter_memory_pressure calls NET_INC_STATS, but doesn't
have where to get the net from.
I decided to add a sk argument, not the net itself, only to factor
all the required sock_net(sk) calls inside the enter_memory_pressure
callback itself.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/sock.h | 4 | ||||
-rw-r--r-- | include/net/tcp.h | 2 | ||||
-rw-r--r-- | net/core/sock.c | 2 | ||||
-rw-r--r-- | net/decnet/af_decnet.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp.c | 4 | ||||
-rw-r--r-- | net/sctp/socket.c | 2 |
6 files changed, 8 insertions, 8 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 3f4897ab432e..06c5259aff30 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -565,7 +565,7 @@ struct proto { | |||
565 | #endif | 565 | #endif |
566 | 566 | ||
567 | /* Memory pressure */ | 567 | /* Memory pressure */ |
568 | void (*enter_memory_pressure)(void); | 568 | void (*enter_memory_pressure)(struct sock *sk); |
569 | atomic_t *memory_allocated; /* Current allocated memory. */ | 569 | atomic_t *memory_allocated; /* Current allocated memory. */ |
570 | atomic_t *sockets_allocated; /* Current number of sockets. */ | 570 | atomic_t *sockets_allocated; /* Current number of sockets. */ |
571 | /* | 571 | /* |
@@ -1210,7 +1210,7 @@ static inline struct page *sk_stream_alloc_page(struct sock *sk) | |||
1210 | 1210 | ||
1211 | page = alloc_pages(sk->sk_allocation, 0); | 1211 | page = alloc_pages(sk->sk_allocation, 0); |
1212 | if (!page) { | 1212 | if (!page) { |
1213 | sk->sk_prot->enter_memory_pressure(); | 1213 | sk->sk_prot->enter_memory_pressure(sk); |
1214 | sk_stream_moderate_sndbuf(sk); | 1214 | sk_stream_moderate_sndbuf(sk); |
1215 | } | 1215 | } |
1216 | return page; | 1216 | return page; |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 4d788181654e..c25cb5278b95 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -975,7 +975,7 @@ static inline void tcp_openreq_init(struct request_sock *req, | |||
975 | ireq->rmt_port = tcp_hdr(skb)->source; | 975 | ireq->rmt_port = tcp_hdr(skb)->source; |
976 | } | 976 | } |
977 | 977 | ||
978 | extern void tcp_enter_memory_pressure(void); | 978 | extern void tcp_enter_memory_pressure(struct sock *sk); |
979 | 979 | ||
980 | static inline int keepalive_intvl_when(const struct tcp_sock *tp) | 980 | static inline int keepalive_intvl_when(const struct tcp_sock *tp) |
981 | { | 981 | { |
diff --git a/net/core/sock.c b/net/core/sock.c index 2c0ba52e5303..10a64d57078c 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1442,7 +1442,7 @@ int __sk_mem_schedule(struct sock *sk, int size, int kind) | |||
1442 | /* Under pressure. */ | 1442 | /* Under pressure. */ |
1443 | if (allocated > prot->sysctl_mem[1]) | 1443 | if (allocated > prot->sysctl_mem[1]) |
1444 | if (prot->enter_memory_pressure) | 1444 | if (prot->enter_memory_pressure) |
1445 | prot->enter_memory_pressure(); | 1445 | prot->enter_memory_pressure(sk); |
1446 | 1446 | ||
1447 | /* Over hard limit. */ | 1447 | /* Over hard limit. */ |
1448 | if (allocated > prot->sysctl_mem[2]) | 1448 | if (allocated > prot->sysctl_mem[2]) |
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index 931bdf9cb756..61b7df577ddd 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c | |||
@@ -451,7 +451,7 @@ static void dn_destruct(struct sock *sk) | |||
451 | 451 | ||
452 | static int dn_memory_pressure; | 452 | static int dn_memory_pressure; |
453 | 453 | ||
454 | static void dn_enter_memory_pressure(void) | 454 | static void dn_enter_memory_pressure(struct sock *sk) |
455 | { | 455 | { |
456 | if (!dn_memory_pressure) { | 456 | if (!dn_memory_pressure) { |
457 | dn_memory_pressure = 1; | 457 | dn_memory_pressure = 1; |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 525dcf534153..bc8559a6f7e5 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -316,7 +316,7 @@ int tcp_memory_pressure __read_mostly; | |||
316 | 316 | ||
317 | EXPORT_SYMBOL(tcp_memory_pressure); | 317 | EXPORT_SYMBOL(tcp_memory_pressure); |
318 | 318 | ||
319 | void tcp_enter_memory_pressure(void) | 319 | void tcp_enter_memory_pressure(struct sock *sk) |
320 | { | 320 | { |
321 | if (!tcp_memory_pressure) { | 321 | if (!tcp_memory_pressure) { |
322 | NET_INC_STATS(LINUX_MIB_TCPMEMORYPRESSURES); | 322 | NET_INC_STATS(LINUX_MIB_TCPMEMORYPRESSURES); |
@@ -649,7 +649,7 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp) | |||
649 | } | 649 | } |
650 | __kfree_skb(skb); | 650 | __kfree_skb(skb); |
651 | } else { | 651 | } else { |
652 | sk->sk_prot->enter_memory_pressure(); | 652 | sk->sk_prot->enter_memory_pressure(sk); |
653 | sk_stream_moderate_sndbuf(sk); | 653 | sk_stream_moderate_sndbuf(sk); |
654 | } | 654 | } |
655 | return NULL; | 655 | return NULL; |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index df5572c39f0c..6aba01b0ce4e 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -116,7 +116,7 @@ static int sctp_memory_pressure; | |||
116 | static atomic_t sctp_memory_allocated; | 116 | static atomic_t sctp_memory_allocated; |
117 | static atomic_t sctp_sockets_allocated; | 117 | static atomic_t sctp_sockets_allocated; |
118 | 118 | ||
119 | static void sctp_enter_memory_pressure(void) | 119 | static void sctp_enter_memory_pressure(struct sock *sk) |
120 | { | 120 | { |
121 | sctp_memory_pressure = 1; | 121 | sctp_memory_pressure = 1; |
122 | } | 122 | } |