On Feb 20 15:16, Cedric Blancher via Cygwin wrote:
> On Thu, 20 Feb 2025 at 14:55, Cedric Blancher <cedric.blanc...@gmail.com> 
> wrote:
> >
> > Good afternoon!
> >
> > Cygwin 3.6.0-0.378.g78fb13d21f4f.x86_64, Cygwin coreutils package 9.6-1
> >
> > coreutils mkdir is broken on UNC paths:
> >
> > mkdir -p -- 
> > "//ember.data4.local/afs/disk11/builds/bash/install_root/usr/local/bin"
> > mkdir: cannot create directory ‘//ember.data4.local’: Read-only file system

Works for me:

 [~]$ mkdir -p -- //calimero/corinna/newdir             <-- Samba
 [~]$ echo $?
 0
 [~]$ mkdir -p -- //calimero.vinschen.de/ext/newdir     <-- NFS
 [~]$ echo $?
 0
 [~]$ mkdir -p -- //vmbert2k25/c\$/newdir               <-- Windows SMB

If there *really* is a bug and you want it fixed, we need a *thorough*
bug description, a reliable reproducer or a useful trace.

> > This happens because you cannot do a "cd .." in
> > //ember.data4.local/afs, because "afs" is the UNC prefix for that
> > filesystem.
> 
> Might not be coreutils issue, looks more like a Cygwin issue:
> strace shows that Cygwin tries a mkdir("//ember.data4.local"), which
> fails, and then a chdir("//ember.data4.local"), which also fails
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>   912  621383 [main] mkdir 10898 __set_errno: virtual int
> fhandler_base::mkdir(mode_t):1672 setting errno 30
>  1108  622491 [main] mkdir 10898 mkdir: -1 =
> mkdir(//ember.data4.local, 511), errno 30
>   734  623225 [main] mkdir 10898 chdir: dir '//ember.data4.local'
>   899  624124 [main] mkdir 10898 normalize_posix_path: src //ember.data4.local
>  1241  625365 [main] mkdir 10898 normalize_posix_path:
> //ember.data4.local = normalize_posix_path (//ember.data4.local)
>   870  626235 [main] mkdir 10898 mount_info::conv_to_win32_path:
> conv_to_win32_path (//ember.data4.local)
>   809  627044 [main] mkdir 10898 mount_info::conv_to_win32_path:
> src_path //ember.data4.local, dst \\ember.data4.local, flags 0x0, rc 0
>   723  627767 [main] mkdir 10898 build_fh_pc: fh 0x800009DA0, dev 000000C2
>   782  628549 [main] mkdir 10898 __set_errno: int chdir(const
> char*):3837 setting errno 2
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

This trace snippet is not helpful.  Looks like you removed the really
interesting part of the trace, showing where errno 30 (EROFS) comes
from.  Alternatively you debug this in GDB yourself.


Corinna

-- 
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