[comp.unix.msdos] PC-NFS and symbolic links

john@pcad.UUCP (John Grow) (01/05/91)

It seems that Sun's PC-NFS (Version 3.0) does not recognize symbolic
links through the file systems mounted as drive letters.  For example,
if there is an NFS directory /usr/dostools which has the subdirectories:
toola, toolb, and toolc and a symbolic link to another filesystem called
toold, then from PC-NFS, only tool[a-c] can be accessed.  toold does not
even show up in the directory listing.

Is there a way around this (besides mounting the other filesystem as 
another drive)?  Has this been changed in the latest version of PC-NFS?

Thank you very much,

-- John
-- 
John Grow                   |   uucp:    (uunet!pcad!john)
Personal CAD Systems/CADAM  |
1 Technology Park Drive     |
Westford, MA 01886          |

goggi@rhi.hi.is (Gardar Georg Nielsen) (01/08/91)

In <328@pcad.UUCP> john@pcad.UUCP (John Grow) writes:

>It seems that Sun's PC-NFS (Version 3.0) does not recognize symbolic
>links through the file systems mounted as drive letters.  For example,
>if there is an NFS directory /usr/dostools which has the subdirectories:
>toola, toolb, and toolc and a symbolic link to another filesystem called
>toold, then from PC-NFS, only tool[a-c] can be accessed.  toold does not
>even show up in the directory listing.

>Is there a way around this (besides mounting the other filesystem as 
>another drive)?  Has this been changed in the latest version of PC-NFS?

You can never access filesystem without mounting it.  This has nothing to
do with PC-NFS, the same thing will happen if you try to do this between
two unix machines.

-----

Gardar Nielsen					goggi@rhi.hi.is
University of Iceland

john@pcad.UUCP (John Grow) (01/10/91)

(My original posting)
> >It seems that Sun's PC-NFS (Version 3.0) does not recognize symbolic
> >links through the file systems mounted as drive letters.  For example,
> >if there is an NFS directory /usr/dostools which has the subdirectories:
> >toola, toolb, and toolc and a symbolic link to another filesystem called
> >toold, then from PC-NFS, only tool[a-c] can be accessed.  toold does not
> >even show up in the directory listing.
> 
(Response)
> You can never access filesystem without mounting it.  This has nothing to
> do with PC-NFS, the same thing will happen if you try to do this between
> two unix machines.
> 
> -----
> 
> Gardar Nielsen					goggi@rhi.hi.is
> University of Iceland

Even if both file systems (the one with tool[a-c] and the one with toold)
are mounted, PC-NFS fails to recognize the symbolic link from one mounted
file system to another mounted file system.

Basically the issue comes down to two separate problems:

	a) the number of mounts allowed by PC-NFS (limited to 7 I think).
	b) the failure of PC-NFS to recognize symbolic links.

	For b) I got an e-mail response from wagner@chepil.weru.ksu.edu who
	suggested using the NET JOIN command to do what the symbolic link
	does for UNIX.
-- 
John Grow                   |   uucp:    (uunet!pcad!john)
Personal CAD Systems/CADAM  |
1 Technology Park Drive     |
Westford, MA 01886          |

vhulzen@freyr.pttrnl.nl (Wilfried van Hulzen) (01/11/91)

john@pcad.UUCP (John Grow) writes:

>(My original posting)
>> >It seems that Sun's PC-NFS (Version 3.0) does not recognize symbolic
>> >links through the file systems mounted as drive letters.  For example,
>> >if there is an NFS directory /usr/dostools which has the subdirectories:
>[stuff deleted]

>Basically the issue comes down to two separate problems:

>	a) the number of mounts allowed by PC-NFS (limited to 7 I think).
>	b) the failure of PC-NFS to recognize symbolic links.

>	For b) I got an e-mail response from wagner@chepil.weru.ksu.edu who
>	suggested using the NET JOIN command to do what the symbolic link
>	does for UNIX.
>-- 
>John Grow                   |   uucp:    (uunet!pcad!john)
>Personal CAD Systems/CADAM  |
>1 Technology Park Drive     |
>Westford, MA 01886          |

I found by trial and error that PC-NFS only recognizes symbolic links that
stay within the mounted part of the file system.  So symbolic links to
another file system or that refer to directories `beyond the root' of
the mounted part don't work.  This also means that mounting the other
file system separately will not help you.

Wilfried H.P. van Hulzen

---
PTT Research Neher Laboratories       [ E-mail: WHP_vHulzen@pttrnl.nl]
P.O. Box 421, 2260 AK Leidschendam,   [ UUCP  : hp4nl!dnlunx!vhulzen ]
The Netherlands. Tel: +31 70 3326402

yedidya@bimacs.BITNET (Yedidya Israel) (01/13/91)

In article <vhulzen.663527245@freyr> vhulzen@freyr.pttrnl.nl (Wilfried van Hulzen) writes:
>john@pcad.UUCP (John Grow) writes:
>
>>(My original posting)
>>> >It seems that Suns PC-NFS (Version 3.0) does not recognize symbolic
>>> >links through the file systems mounted as drive letters.  For example,
>>> >if there is an NFS directory /usr/dostools which has the subdirectories:
>>[stuff deleted]

Does it recignize foo -> d:bar where d is another nfs-drive ?
--
| Israel Yedidya, Math & CS Department, Bar-Ilan U, Ramat-Gan, ISRAEL. |
+----------------------------------------------------------------------+
| Internet: yedidya@bimacs.biu.ac.il            Bitnet: yedidya@bimacs |
|           Uucp: ...!uunet!mcvax!humus!bimacs!yedidya                 |
\----------------------------------------------------------------------/
 \--- If someone proves there is no God, I'll stop being religious ---/
  --------------------------------------------------------------------

wagner@iti.org (Larry Wagner) (01/15/91)

yedidya@bimacs.BITNET (Yedidya Israel) writes:

>In article <vhulzen.663527245@freyr> vhulzen@freyr.pttrnl.nl (Wilfried van Hulzen) writes:
>>john@pcad.UUCP (John Grow) writes:
>>
>>>(My original posting)
>>>> >It seems that Suns PC-NFS (Version 3.0) does not recognize symbolic
>>>> >links through the file systems mounted as drive letters.  For example,
>>>> >if there is an NFS directory /usr/dostools which has the subdirectories:
>>>[stuff deleted]

>Does it recignize foo -> d:bar where d is another nfs-drive ?

PC-NFS cannot follow symbolic links that go across filesystems or above the mount
point you specified.  For example, if your UNIX directory structure is such:


                            /
                            |
                            |
                 (usr)|-----------|(bin)
                      |           |
                 |---------|   |-------| 
               joe       pete  f1      f2
                 |         |
           |--------|   |---------|
          bin      txt  bin      txt
           |        |             |
        |---|    |--------|     |--------|
        f1 f2   t1       t2    t1        t2
                 |              |
              |----|          |----|
              t1a  t1a        t1a  t1a




Making the following assumptions:
1) /, /usr, and /bin are all on separate filesystems
2) /usr/joe/bin/f1 is a symbolic link to /bin/f1
3) /usr/joe/txt/t1 is a symbolic link to /usr/pete/txt/t1
   (therefore  /usr/joe/txt/t1/t1a = /usr/pete/txt/t1/t1a)
   (and /usr/joe/txt/t1/t1b = /usr/pete/txt/t1/t1b)
4) /usr/joe/txt/t2 is a symbolic link to ../../pete/txt/t2
5) /usr and /bin are exported filesystems

Now assuming you have made the following PC-NFS mounts:
1) drive D: corresponds to /usr
2) drive E: corresponds to /usr/joe
3) drive F: corresponds to /usr/pete/t1
4) drive G: corresponds to /bin

The following conditions will arise on the PC with respect to the 3 symbolic links:
1) The link for /usr/joe/bin/f1 WILL NOT appear under drive D: or E: since this link crosses
   a filesystem boundary.
2) The link for /usr/joe/txt/t1 WILL NOT appear under drive D: or E: since this link crosses
   a filesystem boundary.  This is so even for drive D: because the link uses an absolute path
   which of course includes the root (/) filesystem.
3) The link for /usr/joe/txt/t2 WILL appear under drive D: but WILL NOT appear under drive E:
   This is so because the relative path used in the link does not go above the mount point for
   drive D: (/usr) but does for drive E: (/usr/joe).

If the net join command is used, the directory link /usr/pete/t1 can be simulated
using the PC-NFS net join command by entering:

    net join E:\t1 F:

These examples are what I would expect from my experiences with PC-NFS and symbolic links
on our fileserver (I have not tested the exact example provided above).  I have emulated
symbolic links to subdirectories in the manner presented above but do not know of a way
to simulate symbolic links to files.  Read the manual about the limitations of the net join
command for further information.  Note the join command available in later versions of DOS
does not work on networked drives.  I hope this helps clear up some of the confusion about
PC-NFS and symbolic links (provided I didn't make any mistakes in my example).

--
--------------------------------------------------------------------------------
Larry E. Wagner                     | wagner@chepil.weru.ksu.edu
USDA-ARS Wind Erosion Research Unit | wagner@matt.ksu.ksu.edu
105B East Waters Hall, KSU          | ...!{rutgers,texbell}!ksuvax1!weru!wagner
Manhattan, KS 66506                 |phone (913)532-6807
--------------------------------------------------------------------------------

wagner@iti.org (Larry Wagner) (01/15/91)

This is a corrected version of my response.  After I went home last night I realized
I had forgotten to mention that the net join command can only join drives to empty directories - LEW

yedidya@bimacs.BITNET (Yedidya Israel) writes:

>In article <vhulzen.663527245@freyr> vhulzen@freyr.pttrnl.nl (Wilfried van Hulzen) writes:
>>john@pcad.UUCP (John Grow) writes:
>>
>>>(My original posting)
>>>> >It seems that Suns PC-NFS (Version 3.0) does not recognize symbolic
>>>> >links through the file systems mounted as drive letters.  For example,
>>>> >if there is an NFS directory /usr/dostools which has the subdirectories:
>>>[stuff deleted]

>Does it recignize foo -> d:bar where d is another nfs-drive ?

PC-NFS cannot follow symbolic links that go across filesystems or above the mount
point you specified.  For example, if your UNIX directory structure is such:


                            /
                            |
                            |
                 (usr)|-----------|(bin)
                      |           |
                 |---------|   |-------| 
               joe       pete  f1      f2
                 |         |
           |--------|   |---------|
          bin      txt  bin      txt
           |        |             |
        |---|    |----|       |--------|
        f1 f2   t1   t2      t1        t2
                 |              |
              |----|          |----|
              t1a  t1a        t1a  t1a




Making the following assumptions:
1) /, /usr, and /bin are all on separate filesystems
2) /usr/joe/bin/f1 is a symbolic link to /bin/f1
3) /usr/joe/txt/t1 is a symbolic link to /usr/pete/txt/t1
   (therefore  /usr/joe/txt/t1/t1a ==> /usr/pete/txt/t1/t1a)
   (and /usr/joe/txt/t1/t1b ==> /usr/pete/txt/t1/t1b)
4) /usr/joe/txt/t2 is a symbolic link to ../../pete/txt/t2
5) /usr and /bin are exported filesystems

Now assuming you have made the following PC-NFS mounts:
1) drive D: corresponds to /usr
2) drive E: corresponds to /usr/joe
3) drive F: corresponds to /usr/pete/txt/t1            <<<-- correction made here - LEW
4) drive G: corresponds to /bin

The following conditions will arise on the PC with respect to the 3 symbolic links:
1) The link for /usr/joe/bin/f1 WILL NOT appear under drive D: or E: since this link crosses
   a filesystem boundary.
2) The link for /usr/joe/txt/t1 WILL NOT appear under drive D: or E: since this link crosses
   a filesystem boundary.  This is so even for drive D: because the link uses an absolute path
   which of course includes the root (/) filesystem.
3) The link for /usr/joe/txt/t2 WILL appear under drive D: but WILL NOT appear under drive E:
   This is so because the relative path used in the link does not go above the mount point for
   drive D: (/usr) but does for drive E: (/usr/joe).

>>>> Other changes begin here - LEW <<<<<

If the net join command is used, the directory link from /usr/joe/txt/t1 to /usr/pete/txt/t1
CANNOT be duplicated (The symbolic directory name exists and is not an empty directory,
even though you cannot see it on the PC's directory listing). However, a symbolic link
to a directory CAN be simulated by using the PC-NFS net join command by performing the following
steps:

1) mkdir E:\txt\mnt      # this creates an empty dir (/usr/joe/txt/mnt) to join another PC-NFS drive to
                         # (The net join command only works with an empty directory which
                         # /usr/joe/txt/t1 or E:\txt\t1 is not)
2)net join E:\txt\mnt F: # join drive F: at this mount point
                         # therefore /usr/joe/txt/mnt/ta ==> /usr/pete/txt/t1/t1a
                         # and /usr/joe/txt/mnt/t1b ==> /usr/pete/txt/t1/t1b

These examples are what I would expect from my experiences with PC-NFS and symbolic links
on our fileserver (I have not tested the exact example provided above - HAVE NOW!! - LEW).
I have emulated (not duplicated) symbolic links to subdirectories in the manner presented above
but do not know of a way to simulate symbolic links to files.  This obviously cannot resolve all
of the problems associated with mounting directories with PC-NFS that have symbolic links but
it may help in some specific cases.  Read the manual about the limitations of the net join command
for further information.  Note the join command available in later versions of DOS does not work
on networked drives.

I hope this helps clear up some of the confusion about PC-NFS and symbolic links
(provided I haven't made anymore mistakes in my posting).
--
--------------------------------------------------------------------------------
Larry E. Wagner                     | wagner@chepil.weru.ksu.edu
USDA-ARS Wind Erosion Research Unit | wagner@matt.ksu.ksu.edu
105B East Waters Hall, KSU          | ...!{rutgers,texbell}!ksuvax1!weru!wagner
Manhattan, KS 66506                 |phone (913)532-6807
--------------------------------------------------------------------------------