fcntl F_SETLKW64 failing on Solaris - And a open_sockets listen issue

Tristan Ball tristanb at vsl.com.au
Mon Jan 14 17:07:15 GMT 2002


I'll give it light testing today. If it stands up, it'll get heavy testing
(400+ connections) as of tomorrow.

On a unrelated note: We had the primary samba process die this morning (all
children were inherited by init), with an error in the logs saying "Software
caused connection abort" (ECONNABORTED) from smbd/server.c:open_sockets.
This came from the listen() call (bound to 0.0.0.0 btw). I have no idea what
caused the error, as I wasn't on site at the time, but the server would have
been under high load.

Looking at the code, if open_sockets fails, smbd dies. I'm not sure this is
correct behaviour in the case were things were working OK, untill the error.
Shouldn't we rebind to the socket and keep listening?

Cheers.

----- Original Message -----
From: "Jeremy Allison" <jra at samba.org>
To: "Mayers, Philip J" <p.mayers at ic.ac.uk>
Cc: <jra at samba.org>; <David.Collier-Brown at Sun.COM>; "Romeril, Alan"
<a.romeril at ic.ac.uk>; <samba-technical at samba.org>
Sent: Tuesday, January 15, 2002 6:32 AM
Subject: Re: fcntl F_SETLKW64 failing on Solaris


> On Thu, Jan 10, 2002 at 08:04:09PM -0000, Mayers, Philip J wrote:
> >
> > The only solution I can think of is to move the tdb_traverse of the
various
> > locking and connection TDBs into a periodic scan made from either a
watching
> > process or the listening smbd (in daemon mode). This should reduce the
load
> > somewhat, and IIRC was already suggested a month or so back. Sadly, I
have
> > neither the time to make nor the ability to test such large changes...
> > (there's always one, isn't there :o)
>
> This email triggered me to look closely at the claim_connection code
> in smbd. NB. All the traversals on startup in the locking and share
> mode db's have been removed in the latest CVS code.
>
> I discovered something very stupid..... in include/local.h the variable
> MAXSTATUS was set to 100000, whereas the code in smbd/connection.c looks
> for the value *zero* to stop the tdb traversal.
>
> This was a holdover from old Samba 1.9.x code - I have now fixed this
> in 2.2.x and HEAD CVS trees so that MAXSTATUS is removed, and zero means
> infinite connections.
>
> This will stop any tdb traversal of the connections tdb on smbd
> startup, and should mean no smbd does a traversal of any tdb on
> startup.
>
> This may have been the last missing piece in the Solaris puzzle....
>
> DaveCB & all, can you please checkout this change and kick the c*$p
> out of it in stress testing on big Solaris servers .... :-) :-).
>
> I'm hoping this will fix it (fingers crossed). This was my last
> showstopper 2.2.x bug.... !
>
> Jeremy.
>
>





More information about the samba-technical mailing list