This is the mail archive of the
mailing list for the Cygwin project.
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?
> 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
> BTW, this latency problem has been observed before . 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  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 Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple