Re: [RFT 2/4] Add mod_timer_noact
From: Ingo Molnar <hidden>
Date: 2009-02-18 21:52:17
Also in:
lkml, netfilter-devel
* David Miller [off-list ref] wrote:
From: Ingo Molnar <redacted> Date: Wed, 18 Feb 2009 12:01:44 +0100quoted
* David Miller [off-list ref] 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