Samba performance issues: stat calls

Richard Sharpe rsharpe at richardsharpe.com
Fri Apr 4 21:33:31 GMT 2003


On Fri, 4 Apr 2003, Green, Paul wrote:

> I do have a copy of the POSIX-96 and POSIX-2001 standards here.

OK, I screwed up.

What I really meant to say was that we keen time in nano-seconds or 
hundredths of microseconds (which requires a 64-bit field), but our Posix 
subsystem converts that to seconds since the Epoch, and then in Samba we 
convert back again.
 
> st_atime, st_mtime, and st_ctime are required to have the time_t type, and
> further required to count in units of seconds since the Epoch.  POSIX-96
> defers to the ISO C standard for time_t.  POSIX-2001 says (under
> sys/types.h) that time_t must be an integer or real-floating(!) arithmetic
> type.
> 
> The 1990 C standard says time_t is an arithmetic type capable of
> representing times.
> The 1999 C standard adds that the range and precision of time_t are
> implementation defined.
> 
> So, Steve is right. POSIX itself is fine. Some particular implementation is
> the issue.
> 
> Probably more than you wanted to know.
> 
> PG
> 
> 
> -----Original Message-----
> From: Steve Langasek [mailto:vorlon at netexpress.net]
> Sent: Friday, April 04, 2003 2:22 PM
> To: Richard Sharpe
> Cc: Andrew Bartlett; Simo Sorce; Multiple recipients of list
> SAMBA-TECHNICAL
> Subject: Re: Samba performance issues: stat calls
> 
> 
> On Fri, Apr 04, 2003 at 10:19:57AM -0800, Richard Sharpe wrote:
> > On Fri, 4 Apr 2003, Simo Sorce wrote:
> 
> > > On Fri, 2003-04-04 at 19:53, Richard Sharpe wrote:
> > > > On Fri, 4 Apr 2003, Andrew Bartlett wrote:
> > > > 
> > > > > On Thu, 2003-04-03 at 18:06, Michael B.Allen wrote:
> > > > > > On Wed, 2 Apr 2003 19:26:36 -0800 (PST)
> > > > > > Richard Sharpe <rsharpe at richardsharpe.com> wrote:
> > > > > > 
> > > > > > > That looks like an average of more than one stat call per SMB.
> Not good!
> > > > > > 
> > > > > > Don't you have to stat each label in a path as you walk it?
> > > > > 
> > > > > Yes, given how Samba works, one stat per smb is actually pretty
> low...
> > > > 
> > > > Well, stat just hit number 1 problem for me :-)
> > > > 
> > > > I have got to look at converting it to an IOCTL in our case, because
> our 
> > > > file system keeps times a 64-bit quantities, but POSIX is so aweful
> that 
> > > > we have to convert them to 32-bits in our POSIX subsystem and then
> back to 
> > > > 64-bits in Samba.
> 
> > > even in 64bit systems??
> 
> > The standard POSIX stat call returns 32-bit times, I believe.
> 
> On my 64-bit Linux systems, I have:
> 
> struct stat
> { 
>     [...]
>     __time_t st_atime;          /* Time of last access.  */
>     __time_t st_mtime;          /* Time of last modification.  */
>     __time_t st_ctime;          /* Time of last status change.  */
>     [...]
> }
> 
> AFAIK (and I don't have a copy of the spec handy to confirm -- just
> manpage references), POSIX only defines that these members should be
> 'time_t', it does not define the size of time_t itself.  I see __time_t
> defined here as a 'long int', which makes it 64-bit on 64-bit
> architectures.
> 
> So I don't think your hands are tied by POSIX zipties here, though of
> course changing the size of a member of a published structure is
> difficult in its own right.
> 
> 

-- 
Regards
-----
Richard Sharpe, rsharpe[at]ns.aus.com, rsharpe[at]samba.org, 
sharpe[at]ethereal.com, http://www.richardsharpe.com



More information about the samba-technical mailing list