Re: [RFC nf-next-2.6] conntrack: per cpu nf_conntrack_untracked
From: Patrick McHardy <hidden>
Date: 2010-06-04 11:40:29
Also in:
netfilter-devel
Eric Dumazet wrote:
Le mardi 01 juin 2010 à 12:41 +0200, Patrick McHardy a écrit :quoted
quoted
BTW, I notice nf_conntrack_untracked is incorrectly annotated '__read_mostly'. It can be written very often :( Should'nt we special case it and let be really const ?That would need quite a bit of special-casing to avoid touching the reference counts. So far this is completely hidden, so I'd say it just shouldn't be marked __read_mostly. Alternatively we can make "untracked" a nfctinfo state.I tried this suggestion, (a new IP_CT_UNTRACKED ctinfo), over a per_cpu untracked ct, but its a bit hard. For example, I cannot find a way to change ctnetlink_conntrack_event() : if (ct == &nf_conntrack_untracked) return 0; Maybe this piece of code is not necessary, we should not come here anyway, or it means several packets could store events for this (shared) ct ?
We probably shouldn't be reaching that code since that would mean that we previously did modifications to the untracked conntrack. But a quick audit shows that f.i. xt_connmark will do just that.
Obviously, an IPS_UNTRACKED bit would be much easier to implement. Would it be acceptable ?
That also would be fine. However the main idea behind using a nfctinfo bit was that we wouldn't need the untracked conntrack anymore at all. But I guess a per-cpu untrack conntrack would already be an improvement over the current situation.