 ea781f197d
			
		
	
	
	ea781f197d
	
	
	
		
			
			Use "hlist_nulls" infrastructure we added in 2.6.29 for RCUification of UDP & TCP. This permits an easy conversion from call_rcu() based hash lists to a SLAB_DESTROY_BY_RCU one. Avoiding call_rcu() delay at nf_conn freeing time has numerous gains. First, it doesnt fill RCU queues (up to 10000 elements per cpu). This reduces OOM possibility, if queued elements are not taken into account This reduces latency problems when RCU queue size hits hilimit and triggers emergency mode. - It allows fast reuse of just freed elements, permitting better use of CPU cache. - We delete rcu_head from "struct nf_conn", shrinking size of this structure by 8 or 16 bytes. This patch only takes care of "struct nf_conn". call_rcu() is still used for less critical conntrack parts, that may be converted later if necessary. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			743 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			743 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __NETNS_CONNTRACK_H
 | |
| #define __NETNS_CONNTRACK_H
 | |
| 
 | |
| #include <linux/list.h>
 | |
| #include <linux/list_nulls.h>
 | |
| #include <asm/atomic.h>
 | |
| 
 | |
| struct ctl_table_header;
 | |
| struct nf_conntrack_ecache;
 | |
| 
 | |
| struct netns_ct {
 | |
| 	atomic_t		count;
 | |
| 	unsigned int		expect_count;
 | |
| 	struct hlist_nulls_head	*hash;
 | |
| 	struct hlist_head	*expect_hash;
 | |
| 	struct hlist_nulls_head	unconfirmed;
 | |
| 	struct ip_conntrack_stat *stat;
 | |
| #ifdef CONFIG_NF_CONNTRACK_EVENTS
 | |
| 	struct nf_conntrack_ecache *ecache;
 | |
| #endif
 | |
| 	int			sysctl_acct;
 | |
| 	int			sysctl_checksum;
 | |
| 	unsigned int		sysctl_log_invalid; /* Log invalid packets */
 | |
| #ifdef CONFIG_SYSCTL
 | |
| 	struct ctl_table_header	*sysctl_header;
 | |
| 	struct ctl_table_header	*acct_sysctl_header;
 | |
| #endif
 | |
| 	int			hash_vmalloc;
 | |
| 	int			expect_vmalloc;
 | |
| };
 | |
| #endif
 |