Re: [RFT 2/4] Add mod_timer_noact

From: David Miller
Date: Wed Feb 18 2009 - 16:50:35 EST


From: Ingo Molnar <mingo@xxxxxxx>
Date: Wed, 18 Feb 2009 12:01:44 +0100

> * David Miller <davem@xxxxxxxxxxxxx> wrote:
>
> | Introduce mod_timer_noact() which for example is to replace
> | the calls to del_timer()/add_timer() in
> | __nf_ct_refresh_acct(). It works like mod_timer() but doesn't
> | activate or modify the timeout of an inactive timer which is
> | the behaviour we want in order to be able to use timers as a
> | means of synchronization in nf_conntrack.
>
> It does not mention the overhead to the regular timer interfaces
> at all, nor does it explain the reasons for this change
> adequately.

You (conveniently) skipped this part of his commit message, so
I guess this is the part you didn't read very carefully:

A later patch will modify __nf_ct_refresh_acct() to use
mod_timer_noact() which will then save one spin_lock_irqsave()
/ spin_lock_irqrestore() pair per conntrack timer update. This
will also get rid of the race we currently have without adding
more locking in nf_conntrack.

The whole point is to avoid two spin_lock_irqsave() sequences, thus
taking the timer locks twice.

So Ingo, when you say in response:

Why don't you use?

if (del_timer())
add_timer();

you really look foolish and, in fact, disrespectful to Stephen.

This was my objection to your email, it proved that you didn't
really read his changelog message. He explained perfectly well
what the final goal was of his changes.

And you have this knee-jerk reaction quite often.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/