On Fri, Jul 10, 2009 at 10:18:23AM -0700, Scott Rotondo wrote: > Darren J Moffat wrote: > >This looks very cool but I haven't quite got my head around it > >completely yet. > > > >What happens if open(2) is called with O_NOFOLLOW set on one of these > >reparse points ? (Please answer for ZFS local access, NFS and CIFS). > > Since these reparse points are implemented with a special type of > symlink, open() with O_NOFOLLOW should fail with such an object.
On the client side a server-side reparse point behaves like a mount point, very much in the same way as mirror mounts. Locally (on the server) a reparse point is stored in a symlink, but it isn't followed, and if it were then it'd behave like a mount, just as on the client side. There's nothing quite like following a symlink here, therefore O_NOFOLLOW shouldn't apply on the client side. An option to not cross mount-points and/or an option to not trigger [mirror or referral] mounts might be nice. E.g., O_XDEV and O_XTRIGGER. Nico --