> 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