[PATCH] s3: Avoid oplock break by storing timestamps with gpfs_set_times
Christof Schmitt
cs at samba.org
Wed Jan 8 09:30:29 MST 2014
On Tue, Jan 07, 2014 at 05:19:21PM -0800, Jeremy Allison wrote:
> On Tue, Jan 07, 2014 at 02:58:24PM -0700, Christof Schmitt wrote:
> > >From 241e2865d11276688427ee3b1adbc0c0eb7d007a Mon Sep 17 00:00:00 2001
> > From: Christof Schmitt <cs at samba.org>
> > Date: Tue, 7 Jan 2014 11:55:46 -0700
> > Subject: [PATCH] s3: Avoid oplock break by storing timestamps with gpfs_set_times
> >
> > The gpfs_set_times API call allows setting timestamps directly in GPFS
> > without going through the utime() call. Using this API call fixes an
> > unecessary oplock break when a client sends a SET_FILE_ALLOCATION_INFO
> > request and no other client has opened the file. The call to utime()
> > triggers the oplock break through the Linux kernel. Using the
> > gpfs_set_times call for updating the timestamp avoids the call to
> > utime() and the oplock break.
>
> > Signed-off-by: Christof Schmitt <cs at samba.org>
>
> LGTM.
>
> Reviewed-by: Jeremy Allison <jra at samba.org>
Thank you, i will push it to autobuild.
> One question though - why don't use use gpfs_set_times()
> by default or just set gpfs:settimes = yes by default ?
>
> I'm not sure why you want it off by default - any
> particular reason ?
I am not sure what you referring to. It is enabled by default, see the
comment in the manpage and the default setting for gpfs:settimes:
+ <command>yes(default)</command> - Use gpfs_set_times.
+ Fall back to utime and winattr when it is not available.
+ </para></listitem>
+ config->settimes = lp_parm_bool(SNUM(handle->conn), "gpfs",
+ "settimes", true);
It won't be used when the API call is not available on older GPFS
versions and it can be manually disabled (gpfs:settimes = no).
Christof
More information about the samba-technical
mailing list