Treating Junctions consistently, as "normal dirs" as w/linux "bind"-type mount

L. A. Walsh cygwin@tlinx.org
Thu Mar 9 04:17:00 GMT 2017


Didn't see a response to this, so reposting, as this
would provide a needed vol and subdir mount facility as
exists on linux...

Especially, since there was a misunderstanding of what
was needed or wanted w/regards to the JUNCTION file-system
mounts in Windows.   Didn't need mount table updated, just
needed it to look like a normal mount (as 1 of the 
2 junction usages already does).  So it's just a matter of
making the other junction type w/a path be treated as
a normal dir instead of a symlink.  As it is now, it's 
inconsistent with junctions created with mountvol being
different from junctions created with linkd.

Symlink(D)s would stay as they are now and provide the
symlink functionality.

Original note:

Corinna Vinschen wrote:
>
>>  They
>> half-way work under Cygwin (junctions to volumes look like
>> mounted file systems look under linux, but junctions to
>> pathnames get converted by cygwin to symlinks -- losing
>> information when such junctions are restored.
>>
>> Corinna -- could you _please_ re-look at supporting both
>> types of junctions as mount points?  Then Cygwin could have
>> "mount-parity" with linux! ;-)
>>     
>
> That's not easily possible.  Mount points in Cygwin are virtual entries
> stored in the per-user session, in-memory mount table. 
---
   Ahh.. you are making it more complicated than what I'm
asking! (yey! this should be simpler)...

   If I have a junction to the root of another volume, in
cygwin it looks like a normal directory:

Using mountvol...

C:\>mountvol mountedVol \\?\Volume{578b2172-f917-11e4-b3d9-a0369f15ce28}
03/02/2017  01:24 PM    <JUNCTION>     mountedVol 
[\??\Volume{578b2172-f917-11e4-b3d9-a0369f15ce28}\]
01/11/2017  04:17 PM    <JUNCTION>     var [C:\Windows\System32\cygwin\var]

### a junction is created ... under Cygwin. 
Note, BTW, that 'var' is also a JUNCTION (a MS-mount point).


C:\>exit
exit
/> ll
total 100672654
drwxrwx---+  1            0 Nov 20  2010 $RECYCLE.BIN/
...
drwxrwx---+  1            0 May 15  2015 mountedVol/
lrwxrwxrwx   1           28 Jan 11 16:17 var -> 
/Windows/System32/cygwin/var/

/> ls mountedVol
$RECYCLE.BIN/  System Volume Information/

### mountedVol looks like a normal directory ^^^, but 'var' shows
### as a symlink.  That's the problem I'm referring to.  I'm saying
### JUNCTIONs (MS-mountpoints) should show up as the 'same' in
### Cygwin -- i.e. --

### But is not necessary that it be shown in Cygwin's "mount table":

/> mount
C:/bin on /usr/bin type ntfs (binary,auto)
C:/lib on /usr/lib type ntfs (binary,auto)
C: on / type ntfs (binary,auto)
B: on /b type smbfs (binary,user,noumount,auto)
...

----
It's the same on linux.
linux> stat -c %D /var
822
linux> sudo mount --rbind /var/rtmp /tmp
linux> stat -c %D /tmp
822

----
A mount from the same fs to another place on the same fs,
looks like a normal directory (not a symlink).

This is the behavior I would want for 'JUNCTION's under
Cygwin. 

On Windows, mklink creates a 'SYMLINK' or 'SYMLINKD' when
directories are linked.  Those would stay as "Symlinks".









--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list