The Samba-Bugzilla – Attachment 6382 Details for
Bug 8031
merge patc to make sharemodes/leases parameter a per share setting
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch set containing both in one
s3-vfs-gpfs-convert-sharemodes-leases-parameter.patch (text/plain), 5.68 KB, created by
Björn Jacke
on 2011-04-06 11:56:48 UTC
(
hide
)
Description:
patch set containing both in one
Filename:
MIME Type:
Creator:
Björn Jacke
Created:
2011-04-06 11:56:48 UTC
Size:
5.68 KB
patch
obsolete
>From 65444deca2588fc9c5e1beb5f343a74104b3d41a Mon Sep 17 00:00:00 2001 >From: Christian Ambach <christian.ambach@de.ibm.com> >Date: Fri, 8 Oct 2010 13:15:57 +0200 >Subject: [PATCH 2/4] s3:vfs:gpfs convert sharemodes/leases parameter > >convert gpfs:sharemodes and gpfs:leases parameters from a global setting >to a per share setting > >cherry-picked from 22018b8b887c2677d30bbb4589f800197edf0e98 >--- > source3/modules/gpfs.c | 12 ------- > source3/modules/vfs_gpfs.c | 72 +++++++++++++++++++++++++++++++++++++++----- > 2 files changed, 64 insertions(+), 20 deletions(-) > >diff --git a/source3/modules/gpfs.c b/source3/modules/gpfs.c >index e059808..c8fb88d 100644 >--- a/source3/modules/gpfs.c >+++ b/source3/modules/gpfs.c >@@ -24,8 +24,6 @@ > #include "gpfs_gpl.h" > #include "vfs_gpfs.h" > >-static bool gpfs_share_modes; >-static bool gpfs_leases; > static bool gpfs_getrealfilename; > static bool gpfs_winattr; > >@@ -47,10 +45,6 @@ bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask, > unsigned int deny = GPFS_DENY_NONE; > int result; > >- if (!gpfs_share_modes) { >- return True; >- } >- > if (gpfs_set_share_fn == NULL) { > return False; > } >@@ -96,10 +90,6 @@ int set_gpfs_lease(int fd, int leasetype) > { > int gpfs_type = GPFS_LEASE_NONE; > >- if (!gpfs_leases) { >- return True; >- } >- > if (gpfs_set_lease_fn == NULL) { > errno = EINVAL; > return -1; >@@ -249,8 +239,6 @@ void init_gpfs(void) > init_gpfs_function(&gpfs_get_winattrs_fn,"gpfs_get_winattrs"); > > >- gpfs_share_modes = lp_parm_bool(-1, "gpfs", "sharemodes", True); >- gpfs_leases = lp_parm_bool(-1, "gpfs", "leases", True); > gpfs_getrealfilename = lp_parm_bool(-1, "gpfs", "getrealfilename", > True); > gpfs_winattr = lp_parm_bool(-1, "gpfs", "winattr", False); >diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c >index 0c28408..6ae562f 100644 >--- a/source3/modules/vfs_gpfs.c >+++ b/source3/modules/vfs_gpfs.c >@@ -30,18 +30,29 @@ > #include "nfs4_acls.h" > #include "vfs_gpfs.h" > >+struct gpfs_config_data { >+ bool sharemodes; >+ bool leases; >+}; >+ >+ > static int vfs_gpfs_kernel_flock(vfs_handle_struct *handle, files_struct *fsp, > uint32 share_mode, uint32 access_mask) > { > >+ struct gpfs_config_data *config; >+ >+ SMB_VFS_HANDLE_GET_DATA(handle, config, >+ struct gpfs_config_data, >+ return -1); >+ > START_PROFILE(syscall_kernel_flock); > > kernel_flock(fsp->fh->fd, share_mode, access_mask); > >- if (!set_gpfs_sharemode(fsp, access_mask, fsp->share_access)) { >- >+ if (config->sharemodes >+ && !set_gpfs_sharemode(fsp, access_mask, fsp->share_access)) { > return -1; >- > } > > END_PROFILE(syscall_kernel_flock); >@@ -51,7 +62,14 @@ static int vfs_gpfs_kernel_flock(vfs_handle_struct *handle, files_struct *fsp, > > static int vfs_gpfs_close(vfs_handle_struct *handle, files_struct *fsp) > { >- if ((fsp->fh != NULL) && (fsp->fh->fd != -1)) { >+ >+ struct gpfs_config_data *config; >+ >+ SMB_VFS_HANDLE_GET_DATA(handle, config, >+ struct gpfs_config_data, >+ return -1); >+ >+ if (config->sharemodes && (fsp->fh != NULL) && (fsp->fh->fd != -1)) { > set_gpfs_sharemode(fsp, 0, 0); > } > >@@ -61,16 +79,23 @@ static int vfs_gpfs_close(vfs_handle_struct *handle, files_struct *fsp) > static int vfs_gpfs_setlease(vfs_handle_struct *handle, files_struct *fsp, > int leasetype) > { >- int ret; >+ struct gpfs_config_data *config; >+ int ret=0; >+ >+ SMB_VFS_HANDLE_GET_DATA(handle, config, >+ struct gpfs_config_data, >+ return -1); > > START_PROFILE(syscall_linux_setlease); > >- if ( linux_set_lease_sighandler(fsp->fh->fd) == -1) >+ if (linux_set_lease_sighandler(fsp->fh->fd) == -1) > return -1; > >- ret = set_gpfs_lease(fsp->fh->fd,leasetype); >+ if (config->leases) { >+ ret = set_gpfs_lease(fsp->fh->fd,leasetype); >+ } > >- if ( ret < 0 ) { >+ if (ret < 0) { > /* This must have come from GPFS not being available */ > /* or some other error, hence call the default */ > ret = linux_setlease(fsp->fh->fd, leasetype); >@@ -1116,7 +1141,38 @@ static int vfs_gpfs_ntimes(struct vfs_handle_struct *handle, > > } > >+int vfs_gpfs_connect(struct vfs_handle_struct *handle, const char *service, >+ const char *user) >+{ >+ struct gpfs_config_data *config; >+ int ret = SMB_VFS_NEXT_CONNECT(handle, service, user); >+ >+ if (ret < 0) { >+ return ret; >+ } >+ >+ config = talloc_zero(handle->conn, struct gpfs_config_data); >+ if (!config) { >+ SMB_VFS_NEXT_DISCONNECT(handle); >+ DEBUG(0, ("talloc_zero() failed\n")); return -1; >+ } >+ >+ config->sharemodes = lp_parm_bool(SNUM(handle->conn), "gpfs", >+ "sharemodes", true); >+ >+ config->leases = lp_parm_bool(SNUM(handle->conn), "gpfs", >+ "leases", true); >+ >+ SMB_VFS_HANDLE_SET_DATA(handle, config, >+ NULL, struct syncops_config_data, >+ return -1); >+ >+ return 0; >+} >+ >+ > static struct vfs_fn_pointers vfs_gpfs_fns = { >+ .connect_fn = vfs_gpfs_connect, > .kernel_flock = vfs_gpfs_kernel_flock, > .linux_setlease = vfs_gpfs_setlease, > .get_real_filename = vfs_gpfs_get_real_filename, >-- >1.7.4.1 > >From d872bd66ed9f6c8f3aafde64cc3f02fc3708db60 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Bj=C3=B6rn=20Jacke?= <bj@sernet.de> >Date: Sun, 3 Apr 2011 16:19:11 +0200 >Subject: [PATCH 3/4] s3/vfs_gpfs: s/syncops/gpfs > >as pointed out by Metze in bug #8031 > >cherry-picked from dca465fa53f4d16cdce1353685b11010aa8ff0c7 >--- > source3/modules/vfs_gpfs.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > >diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c >index 6ae562f..5e21a4b 100644 >--- a/source3/modules/vfs_gpfs.c >+++ b/source3/modules/vfs_gpfs.c >@@ -1164,7 +1164,7 @@ int vfs_gpfs_connect(struct vfs_handle_struct *handle, const char *service, > "leases", true); > > SMB_VFS_HANDLE_SET_DATA(handle, config, >- NULL, struct syncops_config_data, >+ NULL, struct gpfs_config_data, > return -1); > > return 0; >-- >1.7.4.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
metze
:
review+
Actions:
View
Attachments on
bug 8031
:
6371
| 6382