Messages in this thread | | | Date | Wed, 4 May 2011 16:25:32 +0200 | From | Tejun Heo <> | Subject | Re: [block IO crash] Re: 2.6.39-rc5-git2 boot crashs |
| |
Hello,
On Wed, May 04, 2011 at 04:10:29PM +0200, Thomas Gleixner wrote: > > cases where the generic implementation is used. Has anyone measured > > the difference against before the whole this_cpu conversion? > > Yes, that really wants to be done. The whole CMPXCHG_LOCAL ifdeffery > should have been avoided in the first place. this_cpu_cmpxchg can > really be implemented with preempt_enable/disable and the irqsafe > variant in any case.
Yeah, slub code looks pretty scary with the #ifdefs. IIUC, the problem was that cmpxchg_double is an optimization for fast path which was already very light weight and an extra locked op or irq on/off would have made considerable difference.
The cmpxchg_double optimization made the fast path go quite faster when CPU supports it but it may as well slow things down considerably if CPU doesn't, due to extra irq on/off's. Anyways, here's hoping that the slow down is acceptable compared to the base code without cmpxchg_double and the ugliness can be removed.
Thanks.
-- tejun
| |