Why is stat slow?

Eliot Moss moss@cs.umass.edu
Mon Dec 22 15:35:47 GMT 2025


On 12/22/2025 10:07 AM, Christian Franke via Cygwin wrote:
> 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

Aha!  I changed my /etc/fstab to be like this:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
d: /d ntfs binary,posix=0,user 0 0

D: is still available via explicit /cygdrive/d, but that would be without the
noacl option.  Using /d now the previously slow stat completes in a few
seconds, reasonable for going over what is now 2000 files.  My memory of
exactly why is dim, but the noacl seems important for my C: drive.  Using the
ACLs on D: to determine executability seems good.

Thanks!  Eliot


More information about the Cygwin mailing list