Slow stat() on noacl mounts due to x permission check

Earnie Boyd earnie@users.sourceforge.net
Fri Feb 3 18:54:00 GMT 2012


On Fri, Feb 3, 2012 at 1:20 PM, Christian Franke
<Christian.Franke@t-online.de> wrote:
> Cygwin stat() may be much slower on noacl mounts than on acl mounts.This is
> because on noacl mounts the x-permission bit is guessed by checking for
> "#!", ":" or "MZ" in the first bytes of the file. AFAIKS this is done for
> all files except *.exe, *.lnk and *.com.
>
> A real world testcase with 20120201 snapshot on a (C++/Java development)
> tree with ~52000 files in ~12000 dirs:
>
> .                            noacl  acl
> find -size ... (after boot)   518s  51s
> find -size ... (disk cached)   13s   8s
> find -name ... (disk cached)    3s   3s (does not need stat())
>
> Is it really needed to do the header check for each file?
>

Yes.

> Would it break important use cases if the check is only done for files with
> typical script file extensions?
> For example: no extension, .sh, .csh, .pl, .py, ...
>

Yes it would break my use of this feature.

> Another more flexible solution would be a mount option to configure this.
> (xguess=0: no check; 1: some extensions only; 2: all files)
>

The default should be the existing behavior.

-- 
Earnie
-- https://sites.google.com/site/earnieboyd

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



More information about the Cygwin mailing list