[PATCH/RFC 1/2] optimization updating timer in connection
kaber at trash.net
Mon Sep 20 05:40:24 CEST 2004
Pablo Neira wrote:
> Hi Patrick,
> I think that I found something interesting reading kernel/timer.c some
> weeks ago, well I would like to know about this idea. The comment
> above mod_timer speaks by itself...
> * mod_timer(timer, expires) is equivalent to:
> * del_timer(timer); timer->expires = expires; add_timer(timer);
> * Note that if there are multiple unserialized concurrent users of the
> * same timer, then mod_timer() is the only safe way to modify the
> * since add_timer() cannot modify an already running timer.
> * The function returns whether it has modified a pending timer or not.
> * (ie. mod_timer() of an inactive timer returns 0, mod_timer() of an
> * active timer returns 1.)
> so I think that you could use mod_timer in 2.6 and remove that
> WRITE_LOCK when updating the timer, because it's there to serialize
> timer updates and now mod_timer controls this possible situation. I
> don't have a smp machine here but this week I'll look for a platform
> to test it.
> If I'm missing something, please let me know.
We can't use mod_timer because it will re-add a timer that
already went off and dropped it's reference count to the conntrack.
mod_timer is equivalent to del_timer(); add_timer(); but we do
del_timer() && add_timer();
More information about the netfilter-devel