mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
d1dacd62bb
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@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Christof Schmitt <cs@samba.org> Autobuild-Date(master): Thu Jan 9 00:04:48 CET 2014 on sn-devel-104
49 lines
2.0 KiB
C
49 lines
2.0 KiB
C
/*
|
|
Unix SMB/CIFS implementation.
|
|
Wrap gpfs calls in vfs functions.
|
|
|
|
Copyright (C) Christian Ambach <cambach1@de.ibm.com> 2006
|
|
|
|
Major code contributions by Chetan Shringarpure <chetan.sh@in.ibm.com>
|
|
and Gomati Mohanan <gomati.mohanan@in.ibm.com>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
*/
|
|
|
|
#ifndef GPFS_GETACL_NATIVE
|
|
#define GPFS_GETACL_NATIVE 0x00000004
|
|
#endif
|
|
|
|
bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask,
|
|
uint32 share_access);
|
|
int set_gpfs_lease(int fd, int leasetype);
|
|
int smbd_gpfs_getacl(char *pathname, int flags, void *acl);
|
|
int smbd_gpfs_putacl(char *pathname, int flags, void *acl);
|
|
int smbd_gpfs_get_realfilename_path(char *pathname, char *filenamep,
|
|
int *buflen);
|
|
int smbd_fget_gpfs_winattrs(int fd, struct gpfs_winattr *attrs);
|
|
int get_gpfs_winattrs(char * pathname,struct gpfs_winattr *attrs);
|
|
int set_gpfs_winattrs(char * pathname,int flags,struct gpfs_winattr *attrs);
|
|
int smbd_gpfs_prealloc(int fd, gpfs_off64_t start, gpfs_off64_t bytes);
|
|
int smbd_gpfs_ftruncate(int fd, gpfs_off64_t length);
|
|
int get_gpfs_quota(const char *pathname, int type, int id,
|
|
struct gpfs_quotaInfo *qi);
|
|
int get_gpfs_fset_id(const char *pathname, int *fset_id);
|
|
int smbd_gpfs_set_times_path(char *path, struct smb_file_time *ft);
|
|
|
|
void init_gpfs(void);
|
|
void smbd_gpfs_lib_init(void);
|