[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "ls -l": Avoid unnecessary getxattr() overhead

From: Bernhard Voelker
Subject: Re: "ls -l": Avoid unnecessary getxattr() overhead
Date: Mon, 20 Feb 2012 09:32:23 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.1) Gecko/20120208 Thunderbird/10.0.1

On 02/18/2012 02:06 PM, Jim Meyering wrote:
>> > See the attached getxattr-speedup.log.gz - I added a "cat k.c" so that
>> > you can check that I got your patch right.
>> > It seems that GCC doesn't like our "__attribute__((destructor)) void p()".
>> > It basically works in a standalone program, but not with LD_PRELOAD.
>> > I didn't find much about this. Can this be a 64-bit issue?
> Is that an open-suse system?
> I tried on an opensuse system with,
> and since there were no getxattr calls at all, no wrapper
> would run, and hence, your atexit call would never be reached.
> I've added this comment at the top:

Yes, it is a OpenSuSE 12.1 with kernel 3.1.9-1.4-desktop.

>   # This test is skipped on systems that lack LD_PRELOAD support; that's fine.

It doesn't lack LD_PRELOAD support, it simply doesn't call the destructor.

> + # Similarly, on a system that lacks getxattr altogether, skipping it is 
> fine.
> and this new skip_ use below:
> test -f x || skip_ "internal test failure: maybe LD_PRELOAD doesn't work?"
> Which may mean this test will simply be skipped on your system.
> But that is fine.

Maybe, but why is LD_PRELOAD honoring the "__attribute__((destructor))",
and on some systems not?

> +ld -G k.o -lc -o || framework_failure_ 'failed to invoke ld -G ...'

I just added "-lc" for pulling in atexit(). It's not needed in your version.

Have a nice day,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]