[linux-cifs-client] Re: stuck requests in cifs

Steven French sfrench at us.ibm.com
Tue Nov 29 17:35:43 GMT 2005






> I'm still trying to track down the problem I mentioned on the list
> last week, where a cifs command seems to get stuck in an infinite loop.
> I was wondering if you thought there was any possibility that these two
> issues are related, perhaps it is in some sort of retry loop

Yes.   The wait_event code in the cifs send path (waiting for responses for
up to 15 seconds in most cases) does not kick in unless the queue is woken
up by something else - and certainly in single threaded, one process test
cases requests you can stay stuck long after the timeout should have gotten
them out of the wait_event

And cifs retries operations on EAGAIN ... so there are some of these paths
that return EAGAIN and will continue to retry (including SMBFindFirst) as
long as the server keeps not responding (or malforming the response) as
timeouts are recognized.   The "hard" vs "soft" mount option is checked for
how many times we try to reconnect a dead smb session/tcp session but that
is not the issue here - and we probably should find a nice way to not retry
on EAGAIN more than once or twice on a few of these paths
(readdir/FindFirst, Open, Mkdir, Create, ...) when "soft" is set but I have
not seen a clean way to generalize that across the similar functions which
goto retry labels in fs/cifs/cifssmb.c

The other thing I need to do is add a wake up of response q (probably in
the oplock thread) at least every 10 or 20 seconds.

Steve French
Senior Software Engineer
Linux Technology Center - IBM Austin
phone: 512-838-2294
email: sfrench at-sign us dot ibm dot com
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the linux-cifs-client mailing list