[PATCH 21/25] netns ct: per-netns event cache

Alexey Dobriyan adobriyan at gmail.com
Thu Sep 4 20:44:15 PDT 2008


On Thu, Sep 04, 2008 at 06:58:38PM +0200, Patrick McHardy wrote:
> adobriyan at gmail.com wrote:
>>  static inline void
>> -nf_conntrack_event_cache(enum ip_conntrack_events event,
>> +nf_conntrack_event_cache(struct net *net, enum ip_conntrack_events event,
>>  			 const struct sk_buff *skb)
>>  {
>
> Passing the conntrack instead of the struct net and the skb
> would probably keep the callers cleaner.

Dunno, passing netns explicitly like saying conntrack event happened in
netns A, which is reasonable. OTOH, s/skb/ct/ is indeed nicer.

I'll change it as you suggest and see what happens.

BTW, I asked earlier if untracked conntracks are ever supposed to drop into
event cache. If they're, trimming nf_conntrack_untracked is out of question.

>>  	struct nf_conn *ct = (struct nf_conn *)skb->nfct;
>>  	struct nf_conntrack_ecache *ecache;
>>   	local_bh_disable();
>> -	ecache = &__get_cpu_var(nf_conntrack_ecache);
>> +	ecache = per_cpu_ptr(net->ct.ecache, raw_smp_processor_id());
>>  	if (ct != ecache->ct)
>>  		__nf_ct_event_cache_init(ct);
>>  	ecache->events |= event;
>> @@ -60,16 +58,29 @@ nf_ct_expect_event(enum ip_conntrack_expect_events event,
>>  	atomic_notifier_call_chain(&nf_ct_expect_chain, event, exp);
>>  }
>>  



More information about the Containers mailing list