Joerg Schilling wrote:
> "Alan.M.Wright" <amw at sun.com> wrote:
> 
>>> How will you prevent prople from removing these "reparse points" because 
>>> they
>>> assume that this are symlinks that point to nowhere?
>>> Note that the official POSIX method for removing symlinks that do not point
>>> to a target is:
>>>
>>>     find -L . -type l -exec rm {} +
>>>   
>> Symlinks containing reparse data can be removed in the same way as
>> any other symlink.  There are no special rules, conditions or restrictions.
> 
> So you admit that people who intend to remove garbage symlinks will 
> accidentally
> also remove these objects?

To be fair, if you have a symlink to an automounted file or directory 
and the server is temporarily not accessible or automounter not running, 
I suspect you'll similarly think the link is dangling.  So you'd better 
hope the automounter is in good shape and you have no network glitches 
before using the "find" command above.

But this raises the point that if these special reparse symlinks were 
implemented such that the reparsing also happened when the filesystem is 
mounted locally via mount_zfs or mount_lofs, not just remotely over CIFS 
or NFSv4, then most of the issues would go away.

In other words if open(), stat(), nftw(), and similar system calls 
locally on the server hosting the files (including LOFS) access the 
linked-to file, most code will think the link is OK.  Since in this 
case, "find -L" should point to the target of the reparse point (which 
hopefully exists).

Assuming that most code does not call readlink() and do the pathname 
traversal itself.

I think there was some question about this earlier in the thread, but 
not necessarily a definitive answer.

Hugh.

[*] Even if some sysadmin setup is needed here.

Reply via email to