Le jeudi 30 septembre 2010 Ã 10:39 -0700, Andrew Morton a Ãcrit : > On Thu, 30 Sep 2010 19:28:05 +0200 Eric Dumazet <eric.dumazet@xxxxxxxxx> wrote: > > > Le jeudi 30 septembre 2010 __ 09:45 -0700, Andrew Morton a __crit : > > > > > Could eliminate `p' I guess, but that would involve using > > > __get_cpu_var() as an lval, which looks vile and might generate worse > > > code. > > > > > > > Hmm, I see, please check this new patch, using the most modern stuff ;) > > > > > Readers of this code won't know why last_ino_get() was marked noinline. > > > It looks wrong, really. > > > > Oops sorry, this was a temporary hack of mine to ease disassembly > > analysis. Good catch ! > > > > Here is the new generated code on i686 (with the noinline) : > > pretty good ;) > > > > c02e5930 <last_ino_get>: > > c02e5930: 55 push %ebp > > c02e5931: 89 e5 mov %esp,%ebp > > c02e5933: 64 a1 44 29 7d c0 mov %fs:0xc07d2944,%eax > > c02e5939: a9 ff 03 00 00 test $0x3ff,%eax > > c02e593e: 74 09 je c02e5949 <last_ino_get+0x19> > > c02e5940: 40 inc %eax > > c02e5941: 64 a3 44 29 7d c0 mov %eax,%fs:0xc07d2944 > > c02e5947: c9 leave > > c02e5948: c3 ret > > c02e5949: b8 00 04 00 00 mov $0x400,%eax > > c02e594e: f0 0f c1 05 80 c8 92 c0 lock xadd %eax,0xc092c880 > > c02e5956: eb e8 jmp c02e5940 <last_ino_get+0x10> > > > > That uniprocessor, PREEMPT=n I guess. > It is SMP. PREEMPT=n On UP, you would not have the %fs suffixes, and no "lock" before the xadd. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html