DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 5BMGTBhj1034383 Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 5BMGTBhj1034383 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=lWBTK+Q4 X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B3DC4BA2E04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1766420950; bh=XskuaP8L5rDO08W1l3l+x7Syu8HCBCVaE3ct12jV3UM=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=lWBTK+Q4uigk3qY+8wBb45FRxRANqBeODN5jzgaG6rRxmfkLaAY++WEink4gCIrlF 6sKSfqRbp/1DzZvD9qUTrrNX7ZKVDaPfwEAVr4rXNlwbYXwxAoM8JzEUY2qmrYVmeX NO3i0/IV7okUrJQuW5NNREZgybiFQ6nXzTspz2O8= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9F8304BA2E1E ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9F8304BA2E1E ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1766420900; cv=none; b=g3FJvKsCsGmb8R2BsP0udVY0vjETldp2JMBie6L+rR+Pms4vn5PM7lLW/ueKHDo81GFTQXiyMb+7tXkJ22sh4vWgmIxwhBOOCXZ4/JetYMNrZFUraz32Y5E4D7IleK+lBNiGRMXrRXmyW4sAqKl6oamx98T5SJZQKifeHzDOS18= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1766420900; c=relaxed/simple; bh=wNVvx9zbrYziMqYutZLDuoMljc003exuGDuMIObu66g=; h=Message-ID:Date:MIME-Version:From:Subject:To:DKIM-Signature; b=Zf3YfFp+rhfjqKYtEJOhJQfSdkdlafYDMuziVu9OKQ4miw3mZ5eUSvz8JpqX3CkhSfQr0WMjYBiD6aN8SfuiabCkJEaCUBiYiNxWcoe/UApGGe/NcIst07XWv0twOJM4BnS/jlVEsXsHdKsBhMLN29VguzNcXsMHb1SgYPbJG80= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F8304BA2E1E Message-ID: <30e1a743-0e08-4f00-aafc-82fe7dd9078d@SystematicSW.ab.ca> Date: Mon, 22 Dec 2025 09:28:17 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Why is stat slow? Content-Language: en-CA To: cygwin AT cygwin DOT com References: <74bdc787-9099-8e29-492a-588546b6eedb AT cs DOT umass DOT edu> <510a193d-633c-ddf1-68a7-a61b9847cfa8 AT cs DOT umass DOT edu> Organization: Systematic Software In-Reply-To: <510a193d-633c-ddf1-68a7-a61b9847cfa8@cs.umass.edu> X-Stat-Signature: 98t7zi73i3ixad8inm6fdqbtskybkhk5 X-Rspamd-Server: rspamout04 X-Rspamd-Queue-Id: CE40C20012 X-Session-Marker: 427269616E2E496E676C69734053797374656D6174696353572E61622E6361 X-Session-ID: U2FsdGVkX19dXX0anw704VbrRLyDtXxt9A8pEXaV0bs= X-HE-Tag: 1766420898-405354 X-HE-Meta: U2FsdGVkX1/Rytv4toDncEjXClri/mt4jU9eT26L3ZB7l8CTwcH+phnKCZkSy/0xM1HNSGTF04DamM2DpVdJYMCpGlCfhcFL9tDjzRh7TK0he/ozAMlt8/WZyRCxCIUDLufa5U+x3HgtJpwx3DEMLcigDmwDvS2J3fVIs1XgnvAFkxLCsdccGfs8mua4ooxIdQYSPFNyX9JzBSf37GwS22ckJOmxEMC/Z/UED1C1kyh5ijPft7x5QiA8DtxMHcv1GGckbh9wIZNjRmyF1NumJKDtU4Rvivv0XHyfgGpAhPpyEvtETwZf1kvo4vfZpsst2hT6ytJMSK73mrxDJ9K8x4KNPrxdyQ6M X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Brian Inglis via Cygwin Reply-To: cygwin AT cygwin DOT com Cc: Brian DOT Inglis AT SystematicSW DOT ab DOT ca Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 5BMGTBhj1034383 On 2025-12-22 08:35, Eliot Moss via Cygwin wrote: > 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 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. Mapping drives to /? causes an issue if you ever want to get help from any non-Cygwin Windows console program that uses Windows help conventions /? -> /d: I believe using /\? avoids that. -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retrancher but when there is no more to cut -- Antoine de Saint-Exupéry -- 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