[Top] [All Lists]

Re: acl and attr: Fix path walking code

To: Andreas Gruenbacher <agruen@xxxxxxx>
Subject: Re: acl and attr: Fix path walking code
From: Timothy Shimmin <tes@xxxxxxx>
Date: Tue, 20 Nov 2007 16:11:12 +1100
Cc: linux-xfs@xxxxxxxxxxx, Gerald Bringhurst <gbringhurst@xxxxxxxxxx>, Brandon Philips <bphilips@xxxxxxx>
In-reply-to: <473A82E6.50709@sgi.com>
References: <200710281858.24428.agruen@suse.de> <4733F301.9020706@sgi.com> <200711102152.05619.agruen@suse.de> <473A82E6.50709@sgi.com>
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird (Macintosh/20070728)

> On Friday 09 November 2007 08:39:56 Timothy Shimmin wrote:
>> > You mention -L/-P is like chown.
>> > However, -P for getattr isn't about not walking symlinks
>> > to directories,
>> > it's about skipping symlinks altogether, right?
> Hmm, -L and -P define which files and directories are visited, and -h defines
> whether we are looking at symlinks or the files they point to. The two
> concepts are orthogonal. -P is not about skipping symlinks, only about not
> recursing into them.
Oh okay.
There is the concept of following the symlink for traversal versus
following the symlink to get the EA on.

So with -L should it just follow the symlink or look at the symlink first
and then follow it?
And will -h modify this behavior?
I'm still confused about the 1st difference in 062 output.

I wonder if the man pages can be clarified in this area :)


Okay, looked at the code.


no -h => stat, getxattr, listxattr
-h    => lstat, lgetxattr, llistxattr

-P => skip symlinks (as soon as see them, then return from place in walk)

-L => process symlink and then opendir on symlink (hence follow/traverse it)

default => -L for argument (depth==1) and -P for subdirs (depth>1)


This was different than my intuition.
I am happy with -h.
For -P, I was expecting it to process symlink but not follow/traverse it,
I wouldn't think it should just skip them altogether (I realise the
man page says that).

For -L, I wasn't sure if it should process it first and then traverse
or simply just traverse.

So were these your intentions?
If so, the code seems to follow them but it would be nicer to
have more explanation in the man page.


<Prev in Thread] Current Thread [Next in Thread>