What a smbc_new_context timeout does and is there a way to change it?
Jeremy Allison
jra at samba.org
Tue Dec 15 19:05:41 UTC 2015
On Wed, Dec 09, 2015 at 03:08:52PM +0100, Vladimir Marek wrote:
> Hi,
>
> we have a customer who reports that sometimes his smbget processes fail
> with error message:
>
> Can't read 32768000 bytes at offset 7700480000, file smb://...
>
>
> I have traced it to a timeout in smbc_free_context in
> source3/libsmb/libsmb_context.c
>
>
> smbc_new_context(void)
> {
> ...
> smbc_setTimeout(context, 20000);
> ...
>
>
> This happens for samba 3.6, but I believe that the same code is used in
> samba 4.
>
>
> If I increase the timeout the problems with smbget go away.
>
> I would like to ask for help
>
> a) what is this timeout doing?
> I have suspicion that it's related to network operations and since
> customer is transferring huge amounts of data the network might be
> saturated.
Yes, it times out the connection after that number of msec.
> b) Is there a way to modify this timeout without touching the code, ie.
> from configuration file? I haven't been able to find a way - I believe
> it's set to be 20 seconds.
No, you'll need to modify the code.
> c) If we accept that the way to fix the problem is to increase the
> timeout, what would be the preferred way to do it? Just increase the
> number? Make it configurable? I don't know how difficult is to add
> configuration variable.
I would add a command line parameter, say '-t timeout' (in seconds)
to smbget, then just pass that into smbc_setTimeout().
Jeremy.
More information about the samba-technical
mailing list