This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: File operations really slow in emacs


On Feb 16 08:17, Ryan Johnson wrote:
> On 16/02/2012 6:09 AM, Corinna Vinschen wrote:
> >I just applied a patch which calls NetUseGetInfo on SMB drives in
> >the cygdrive::readdir call.  As I mentioned above, if the function
> >returns OK, we fetch the inode number.  If the function returns
> >"Disconnected", we just omit the drive from the cygdrive directory.
> >If the drive is available again, it might not be noticed by the
> >NetUseGetInfo function for a long while.  But as soon as you access
> >the drive successfully, the info will be updated in the OS, and the
> >NetUseGetInfo function will happily return OK again.  This new
> >behaviour is not a swiss army knife since that's impossible with
> >SMB.  But it might be better suited then the former code.  I'm
> >just going to create a new snapshot.  Please test.
> That sounds like a reasonable approach (how do you figure out which
> drive letters are network drives before calling NetUseGetInfo, btw?

http://sourceware.org/cgi-bin/cvsweb.cgi/src/winsup/cygwin/mount.cc.diff?cvsroot=src&r1=1.86&r2=1.87

> That would allow stat /cygdrive to return proper link counts).

Nah, that's not needed.  All GNU tools are fine with directories with
link count of 1.  That's what we get from NTFS drives anyway, so why
bother?
 
> BTW, this latency problem has been observed before [1]. There's no
> real solution, but one reader suggested using a second thread to
> call CancelSynchronousIo if you lose patience before the call

Not an option.  CancelSynchronousIo is only available starting with
Vista.  Running the read in a thread and killing the thread if a signal
arrives is probably better.  That's how the network scanning code
for // is implemented.

> Others [3] have suggested that calling FindFirstFile first
> eliminates the latency, though I have to wonder if that would
> actually be helpful.

Not to get the inode number of the share directory.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]