Re: [RFT 2/4] Add mod_timer_noact

From: Ingo Molnar
Date: Wed Feb 18 2009 - 16:52:18 EST



* David Miller <davem@xxxxxxxxxxxxx> wrote:

> 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.

You accusing me of knee-jerk reaction is the joke of the century
;-)

Anyway, it's all handled, you just need to read the rest of the
thread.

Thanks,

Ingo
--
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/