> I know links within the filesystem are followed by the client, but the 
> mount protocol has for as long as I can remember (always?) returned a 
> handle to the destination of the link, when the link was passed in the 
> request.
>
> I'm talking about:
>
> Server:
>
> /ex/Inst -> /export/Install
>
> share -F nfs -o ... /export/Install
>
> Client:
>
> mount server:/ex/Inst
>
> This Works with version3. When a mount for /ex/Inst is requested, The 
> mount protocol returns an NFS handle for /export/Install. Once the 
> client has the handle NFSd doesn't have to know about the link, or that 
> it was mounted with a different path.
>
> With Version 4 there is no mountd, or mount protocol. I haven't looked 
> far enough yet to see why the v4 nfsd can't do the same... maybe because 
> that would make it follow all soft links????
>
>   -Kyle
>
>   
Hi Kyle,

FYI, this is documented in share_nfs(1M) man page:

<snip>
     The mountd(1M) process allows the processing of a path  name
     the  contains a symbolic link. This allows the processing of
     paths  that  are  not  themselves  explicitly  shared   with
     share_nfs. For example, /export/foo might be a symbolic link
     that refers  to  /export/bar  which  has  been  specifically
     shared.  When  the client mounts /export/foo the mountd pro-
     cessing follows the symbolic  link  and  responds  with  the
     /export/bar.  The  NFS  Version  4 protocol does not use the
     mountd processing and the client's use of  /export/foo  does
     not work as it does with NFS Version 2 and Version 3 and the
     client  receives  an  error   when   attempting   to   mount
     /export/foo.
<end snip>

Some of the bugs you might be interested in:

6583895 NFSv4 mount fails if specified server mount point path is a sym link
6587955 share_nfs(r1M) needs V4 update concerning sharing a symbolic link

Have you tried the suggested workaround of using lofs mounts on server:

<snip>

Use lofs instead of a symlink on server and mount this lofs directory from 
client.

Server Machine:
---------------
bash-3.00# mkdir /var/tmp/lofs
bash-3.00# mount -F lofs /var/tmp/nfs-corrupt /var/tmp/lofs
bash-3.00# share -F nfs -o anon=0,ro /var/tmp/lofs
bash-3.00# share
-               /var/tmp/lofs   anon=0,ro   ""

Client Machine:
---------------
bash-3.00# mount -F nfs -o vers=4 nfs-server:/var/tmp/lofs /mnt


<end snip>

Regards,
-Vallish



Reply via email to