X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_20,RCVD_IN_DNSWL_NONE,T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY X-Spam-Check-By: sourceware.org Message-ID: <4F2C2589.2000907@t-online.de> Date: Fri, 03 Feb 2012 19:20:57 +0100 From: Christian Franke User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 SeaMonkey/2.4.1 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Slow stat() on noacl mounts due to x permission check Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com 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? 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, ... Another more flexible solution would be a mount option to configure this. (xguess=0: no check; 1: some extensions only; 2: all files) Christian -- 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