2009/387 [Pathname Reparse Points]

Joerg Schilling Joerg.Schilling at fokus.fraunhofer.de
Mon Jul 13 09:27:57 PDT 2009


Hugh McIntyre <lists at mcintyreweb.com> wrote:

> 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.

In your example, there will be a timeout and other hints that may allow 
you to distinguish between a hung server and a non-existing target.

> 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.

As I did not see a sufficient descption that could help me to understand what
the intention of these reparse points is, I cannot discuss related issues.


> 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).

nftw is not a "system call" and previous versions did have massive problems 
and Sun's /bin/find -follow did go into directory loops in case that there have 
been e.g. symlinks with a "." target name. This was the reason for writing 
sfind in August 2004 but it seems to have been fixed now...

Jörg

-- 
 EMail:joerg at schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin
       js at cs.tu-berlin.de                (uni)  
       joerg.schilling at fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily



More information about the opensolaris-arc mailing list