slow filesystem access mc start take sometimes 1 sec sometimes upto 7 sec or sometimes more

Larry Hall (Cygwin) reply-to-list-only-lh@cygwin.com
Mon Sep 22 09:09:00 GMT 2008


Bernd Roesch wrote:
> i do a strace now and get this exception and delay when wlan run in
> WNetGetResourceInformation. 
> 
> http://www.cygwin.com/ml/cygwin/2005-06/msg00345.html
> 
> here stand what problem can be, maybe me too.
> 
> I install winxp a second time but dont delete the files for user bernd.
> 
> winxp create now another dir with name bernd.BERND.LBZQ11xxx.But my dir
> bernd is in winxp here.
> 
> also there are other dirs in my windows documents and setting dir
> 
> default user
> defaut user.windows
> 
> local service
> local service.NT-AUTORITÄT
> 
> network service
> network service.NT-AUTORITÄT
> Is there a way to decativate in cygwin, the network access ?.so
> WNetGetResourceInformation is not used ? 

No.

> my passwd file contain that line 
> 
> bernd:unused_by_nt/2000/xp:1004:513:U-BERND-LBZQ11NHW\BERND-LBZQ11xxx,S-1-5-21-484763869-1563985344-839522115-1004:/cygdrive/c/Dokumente
> und Einstellungen/BERND-LBZQ11xxx:/bin/bash 
> 
> I try to correct the passwd file to that, but dont help.
> 
> bernd:unused_by_nt/2000/xp:1004:513:U-bernd.BERND-LBZQ11NHW\bernd.BERND-LBZQ11xxx,S-1-5-21-484763869-1563985344-839522115-1004:/cygdrive/c/Dokumente
> und Einstellungen/bernd.BERND-LBZQ11xxx/bin/bash 

If you used the above then it's an invalid entry.  Put the ':' before
'/bin/bash'.

> i also try the user Gast(have dir with no . extension, but is slow too.
> 
> here is stats snippet
> 
> 19  205930 [main] bash 4004 set_flags: flags: binary (0x2)
>    19  205949 [main] bash 4004 mount_info::conv_to_win32_path: src_path
> //.terminfo, dst \\.terminfo, flags 0x2, rc 0
>  5537  211486 [main] bash 4004 build_fh_pc: fh 0x61169E30
>   301  211787 [WNetGetResourceInformation] bash 4004 cygthread::stub: thread
> 'WNetGetResourceInformation', id 0x298, stack_ptr 0x18DDCDC0
> --- Process 4004, exception 000006BA at 7C812AEB
> 4666838 4878625 [main] bash 4004 __set_errno: fhandler_base*
> build_fh_name(const char*, void*, unsigned int, suffix_info*):362 val 136
>    55 4878680 [main] bash 4004 stat_worker: got 136 error from build_fh_name
>    22 4878702 [main] bash 4004 __set_errno: int stat_worker(const char*,
> __stat64*, int):1072 val 136
> 
> ------------------------ here is when wlan is off
> 
> 19   49971 [main] bash 3524 set_flags: flags: binary (0x2)
>    18   49989 [main] bash 3524 mount_info::conv_to_win32_path: src_path
> //.terminfo, dst \\.terminfo, flags 0x2, rc 0
>    24   50013 [main] bash 3524 build_fh_pc: fh 0x61169E30
>   196   50209 [WNetGetResourceInformation] bash 3524 cygthread::stub: thread
> 'WNetGetResourceInformation', id 0x564, stack_ptr 0x18DECDC0
> --- Process 3524, exception 000006BA at 7C812AEB
> 781207  831416 [main] bash 3524 __set_errno: fhandler_base*
> build_fh_name(const char*, void*, unsigned int, suffix_info*):362 val 136
>    43  831459 [main] bash 3524 stat_worker: got 136 error from build_fh_name
>    28  831487 [main] bash 3524 __set_errno: int stat_worker(const char*,
> __stat64*, int):1072 val 136
>    22  831509 [main] bash 3524 stat_worker: -1 = (//.terminfo, 0x22BA70)
>    61  831570 [main] bash 3524 stat64: entering

OK, this explains it.  I should have seen this before when I reviewed your
cygcheck output but I missed it.  The home directory in your '/etc/passwd'
is invalid.  What are the permissions on your home directory?  Make sure
you have full access to it in both the POSIX world of permissions ('ls -l')
and in the world of ACLs (getfacl).  If this isn't the problem, you can try
creating a '/home/bernd' directory, symlinking it to the home directory
you want (or just using it directly), and pointing your entry in
'/etc/passwd' to it.

The reason you're getting slowed down by network access with bash on startup
is because Cygwin can't find or get access to your home directory and you've
been given the default home directory of '/'.  The above output from strace
shows that when bash is trying to access '.terminfo' in your home directory,
it's assuming that you're going to have some directory path for your home.
So it prepends a '/'.  But for you, your home directory is only '/'.  As a
result, you end up with '//.terminfo'.  '//' triggers implementation-defined
behavior and the special treatment in this case is allowed by POSIX.  On
traditional UNIX platforms, repeated slashes are collapsed to 1.  On
Windows, they are not.  They map to UNC file names which interact with the 
network.  See <http://cygwin.com/faq/faq-nochunks.html#faq.using.slow> for
more info about '//' and how it's handled by Cygwin.  Although this FAQ
addresses a slightly different way to cause this behavior, the results are
very much the same.

-- 
Larry Hall                              http://www.rfk.com
RFK Partners, Inc.                      (508) 893-9779 - RFK Office
216 Dalton Rd.                          (508) 893-9889 - FAX
Holliston, MA 01746

_____________________________________________________________________

A: Yes.
 > Q: Are you sure?
 >> A: Because it reverses the logical flow of conversation.
 >>> Q: Why is top posting annoying in email?

--
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