(1.3.22) mount: strange 15 second delay

Rolf Campbell rcampbell@tropicnetworks.com
Sat Apr 19 16:16:00 GMT 2003


Rolf Campbell wrote:
> Ok, I recompiled the mount.exe program with -ggdb.  The delay was in on 
> line 382.  The last call to getmntent (the one that returns NULL) is the 
> one that takes > 10 seconds.
> 
> Was hoping that this would spark a thought in someone.  I'll start 
> trying to get a debug cygwin load building to test further.
> 
> 374:static void
> 375:show_mounts (void)
> 376:{
> 377:  FILE *m = setmntent ("/-not-used-", "r");
> 378:  struct mntent *p;
> 379:  const char *format = "%s on %s type %s (%s)\n";
> 380:
> 381:  // printf (format, "Device", "Directory", "Type", "Flags");
> 382:  while ((p = getmntent (m)) != NULL)
> 383:    printf (format, p->mnt_fsname, p->mnt_dir, p->mnt_type, 
> p->mnt_opts);
> 384:  endmntent (m);
> 385:}

Now I got the dll building on my machine.  And I know what the real 
problem is.  If a network mounted drive is innaccesible for whatever 
reason, GetFileAttributes("i:\\") will take a LONG time.  So, I just 
avoided running that command on "REMOTE" drives.

So, here's a patch:

Index: path.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/path.cc,v
retrieving revision 1.248
diff -u -p -r1.248 path.cc
--- path.cc	9 Mar 2003 20:31:07 -0000	1.248
+++ path.cc	18 Apr 2003 22:29:48 -0000
@@ -2423,8 +2423,13 @@ cygdrive_getmntent ()
  	  break;

        __small_sprintf (native_path, "%c:\\", drive);
-      if (GetDriveType (native_path) == DRIVE_REMOVABLE ||
-	  GetFileAttributes (native_path) == INVALID_FILE_ATTRIBUTES)
+      unsigned driveType = GetDriveType(native_path);
+
+      if (driveType != DRIVE_REMOTE &&
+          //Remote drives are always valid (takes too long to really
+          // validate.
+          (driveType == DRIVE_REMOVABLE ||
+           GetFileAttributes(native_path) == INVALID_FILE_ATTRIBUTES))
  	{
  	  available_drives &= ~mask;
  	  continue;


And changelog entry:
2003-04-18  Rolf Campbell  <Endlisnis@mailc.net>

	* path.cc (driveType): Don't call GetFileAttributes on REMOTE drives.



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



More information about the Cygwin mailing list