On Tue, 4 Feb 2025, Roland Mainz via Cygwin wrote:

> it seems that Cygwin does not support |IO_REPARSE_TAG_MOUNTPOINT| for
> "remote" filesystems:
> ---- snip ----
>   2582        /* Don't handle junctions on remote filesystems as
> symlinks.  This type
>   2583           of reparse point is handled transparently by the OS so that 
> the
>   2584           target of the junction is the remote directory it is
> supposed to
>   2585           point to.  If we handle it as symlink, it will be mistreated 
> as
>   2586           pointing to a dir on the local system. */
>
> The matching code in our filesystems seems to work in PowerShell and
> cmd.exe - so what context am I missing ?

The comment seemed to explain it pretty well.  Junctions are always
absolute.  If it is absolute to a local path, that path is local to the
server, not the client.  If Cygwin treated it as a symlink, it would see
the target as /cygdrive/c/whatever and would try to follow that to the
client-local directory.  By *not* treating those as symlinks, it will
instead treat them as ordinary directories to be traversed, which will
allow the OS to handle them as normal.

Perhaps it could be relaxed to allow remote junctions to be treated as
symlinks if their targets are UNC rather than local?  Is that the case
your filesystems are exposing?

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

Reply via email to