[linux-cifs-client] Re: sendmsg blocking with sendtimeout vs. non-blocking

Evgeniy Polyakov zbr at ioremap.net
Fri Oct 24 15:20:43 GMT 2008


Hi.

On Fri, Oct 24, 2008 at 09:59:36AM -0400, Jim Rees (rees at umich.edu) wrote:
> My explanation may be flawed but the behavior is real.  If you turn on
> autotuning on the nfsd socket, and don't do anything with the buffer sizes,
> nfsd will stall.  This is in a 2.6.24 kernel.  I would of course welcome
> independent verification.

That's effectively a problem related to wait for full request to be
in the socket queue, which apparently can not grow infinitely and for
huge enough request may 'overflow' currently calculated buffer size.

I do not know why nfsd decided to only read request from the socket,
when it was fully received, probably because it was decided that playing
with additional locks (or socket lock itself) to safely demultiplex
request is not appropriate and instead system could read it in one
kernel_recvmsg() or friend call with own internal locking. Whatever its
decision was based on, it does not apply to cifs which reads data in own
demultiplexin thread via loops of kernel_recvmsg()s.

-- 
	Evgeniy Polyakov


More information about the linux-cifs-client mailing list