[Samba] The connection would be broken when read rate is too big

Jeremy Allison jra at samba.org
Thu Mar 2 00:29:49 UTC 2017


On Wed, Mar 01, 2017 at 08:31:32AM +0000, Chenyehua via samba wrote:
> Hi samba-team,
> I met a problem recently:
> 
> Problem Description:
> The connection would be broken when read rate is too big.
> 
> Environment:
> Samba 4.3.11
> Ubuntu server 14.04
> 
> Configuration:
> usershare allow guests = yes
>    max protocol = SMB3
>    large readwrite = yes
>    use sendfile = yes
>    aio read size = 1024
>    oplocks = yes
>    deadtime = 10
>    aio write behind = true
>    clustering = yes
>    store dos attributes = yes
>    vfs objects = acl_xattr
>    socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072
>    ctdbd socket = /var/run/ctdb/ctdbd.socket
>    log level = 2
>    security = user
> 
> I add some logs, found when the send queue is more than the max, it won’t allocate memory to the state->req in smbd_smb2_request_next_incoming function.
> Then, the smbd_smb2_io_handler function mark the fd to not readable because state->req == NULL, and never mark it to readable again.
> Then the Request Expiration Timer will break the connection.
> 
> I don’t know why the fd is marked to readable when the send queue is more than the max.
> Or why mark the fd readable but not allocate memory to the state->req.
> 
> My solution:
> Allocate memory to the state->req before return when the send queue is more than the max in smbd_smb2_request_next_incoming function.
> 
> Could you give us some help about the problem.

I'm looking at this now. Your report looks correct.
Can you log a bug at bugzilla.samba.org so we can
track this ?

I'm redirecting the reply to samba-technical at lists.samba.org
as it more properly belongs there than at samba at lists.samba.org.

Cheers,

	Jeremy.



More information about the samba-technical mailing list