Why is stat slow?

Christian Franke Christian.Franke@t-online.de
Mon Dec 22 15:07:11 GMT 2025


Eliot Moss via Cygwin wrote:
> I'm sure this has been asked before, more than once, but I am again 
> wondering
> what, specifically, makes stat (the program, but presumably also the 
> syscall)
> substantially slower on Cygwin compared to stat on WSL2.  I am talking 
> about
> an external HDD (not solid state) on my D: drive.  It shows under WSL 
> 2 as
> /mnt/d like this (output of mount):
>
> D:\ on /mnt/d type 9p 
> (rw,noatime,aname=drvfs;path=D:\;uid=0;gid=0;symlinkroot=/mnt/,cache=5,access=client,msize=65536,trans=fd,rfd=5,wfd=5)
>
> On Cygwin it shows up like this (yes, mount shows two lines):
>
> D: on /cygdrive/d type ntfs (binary,notexec,posix=0,user)
> D: on /cygdrive/d type ntfs (binary,noacl,posix=0,user,noumount,auto)
>
> My /etc/fstab lines are:
>
> none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
> d: /cygdrive/d ntfs binary,posix=0,user,auto,notexec 0 0

In the past, Cygwin did not support individual options for some 
/cygdrive/X. If this is still the case, "noacl" without "notexec" is 
effective for /cygdrive/d. Then Cygwin reads the header of each file to 
check for a possible "x" permission.


>
> (Presumably this has something to do with two mounts showing ...)
>
> On D; I have a folder with hundreds of 2Gb files (they are backups, 
> split into
> 2Gb portions).  On Cygwin
>
> time stat <the files> gives
>
> real    2m12.425s
> user    0m0.249s
> sys     0m1.312s
>

This would explain this long duration.

Quick test:

$ echo '#!/bin/sh' > /cygdrive/d/script.tmp
$ ls -l /cygdrive/d/script.tmp
-rwxr-xr-x .... <== notexec unset
-rw-r--r-- .... <== notexec set


-- 
Regards,
Christian



More information about the Cygwin mailing list