[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1285869910.2615.925.camel@edumazet-laptop>
Date: Thu, 30 Sep 2010 20:05:10 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: Dave Chinner <david@...morbit.com>, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] fs: inode per-cpu last_ino allocator
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@...il.com> 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-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists