diff options
-rwxr-xr-x | packaging/RHEL-CTDB/configure.rpm | 67 | ||||
-rw-r--r-- | source3/modules/gpfs.c | 10 | ||||
-rw-r--r-- | source3/modules/vfs_gpfs.c | 13 |
3 files changed, 60 insertions, 30 deletions
diff --git a/packaging/RHEL-CTDB/configure.rpm b/packaging/RHEL-CTDB/configure.rpm index 7596040205..358b40db10 100755 --- a/packaging/RHEL-CTDB/configure.rpm +++ b/packaging/RHEL-CTDB/configure.rpm @@ -1,37 +1,56 @@ +#!/bin/sh case `uname -m` in - x86_64) - libdir=/usr/lib64/samba - ;; - *) - libdir=/usr/lib/samba - ;; + x86_64) + _libarch=lib64 + ;; + *) + _libarch=lib + ;; esac -CFLAGS="-Wall -g -D_GNU_SOURCE" ./configure \ - --prefix=/usr \ - --localstatedir=/var \ - --with-configdir=/etc/samba \ - --with-libdir=$libdir \ - --with-lockdir=/var/lib/samba \ - --with-logfilebase=/var/log/samba \ - --with-mandir=/usr/man \ - --with-piddir=/var/run \ - --with-privatedir=/etc/samba \ - --with-sambabook=/usr/share/swat/using_samba \ - --with-swatdir=/usr/share/swat \ +_libarchdir=/usr/${_libarch} + +_prefix=/usr +_sysconfdir=/etc +_mandir=/usr/man +_datadir=/usr/share + +# check for ccache +ccache -h 2>&1 > /dev/null +if [ $? -eq 0 ]; then + CC="ccache gcc" +else + CC="gcc" +fi + +./autogen.sh + +CC="$CC" CFLAGS="-Wall -g -D_GNU_SOURCE" ./configure -C \ + --prefix=${_prefix} \ + --localstatedir=/var \ + --with-configdir=${_sysconfdir}/samba \ + --with-libdir=${_libarchdir}/samba \ + --with-pammodulesdir=/${_libarch}/security \ + --with-lockdir=/var/lib/samba \ + --with-logfilebase=/var/log/samba \ + --with-mandir=${_mandir} \ + --with-piddir=/var/run \ + --with-privatedir=${_sysconfdir}/samba \ + --with-sambabook=${_datadir}/swat/using_samba \ + --with-swatdir=${_datadir}/swat \ --disable-cups \ - --with-acl-support \ + --with-acl-support \ --with-ads \ - --with-automount \ - --with-fhs \ + --with-automount \ + --with-fhs \ --with-pam_smbpass \ --with-libsmbclient \ --with-libsmbsharemodes \ - --without-smbwrapper \ + --without-smbwrapper \ --with-pam \ --with-quotas \ - --with-shared-modules=idmap_rid,idmap_ad,idmap_tdb2 \ + --with-shared-modules=idmap_rid,idmap_ad,idmap_tdb2,vfs_gpfs \ --with-syslog \ --with-utmp \ --with-cluster-support \ @@ -40,3 +59,5 @@ CFLAGS="-Wall -g -D_GNU_SOURCE" ./configure \ --without-dnsupdate \ --with-aio-support \ $* + +make showlayout diff --git a/source3/modules/gpfs.c b/source3/modules/gpfs.c index 4e76b97ccf..c4b2518e02 100644 --- a/source3/modules/gpfs.c +++ b/source3/modules/gpfs.c @@ -43,7 +43,7 @@ bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask, if (!gpfs_share_modes) { return True; } - + if (gpfs_set_share_fn == NULL) { return False; } @@ -104,7 +104,7 @@ int set_gpfs_lease(int fd, int leasetype) if (leasetype == F_WRLCK) { gpfs_type = GPFS_LEASE_WRITE; } - + /* we unconditionally set CAP_LEASE, rather than looking for -1/EACCES as there is a bug in some versions of libgpfs_gpl.so which results in a leaked fd on /dev/ss0 @@ -143,7 +143,7 @@ static bool init_gpfs_function_lib(void *plibhandle_pointer, void **fn_pointer = (void **)pfn_pointer; if (*libhandle_pointer == NULL) { - *libhandle_pointer = dlopen(libname, RTLD_LAZY); + *libhandle_pointer = sys_dlopen(libname, RTLD_LAZY); did_open_here = true; } if (*libhandle_pointer == NULL) { @@ -151,12 +151,12 @@ static bool init_gpfs_function_lib(void *plibhandle_pointer, return false; } - *fn_pointer = dlsym(*libhandle_pointer, fn_name); + *fn_pointer = sys_dlsym(*libhandle_pointer, fn_name); if (*fn_pointer == NULL) { DEBUG(10, ("Did not find symbol %s in lib %s\n", fn_name, libname)); if (did_open_here) { - dlclose(*libhandle_pointer); + sys_dlclose(*libhandle_pointer); *libhandle_pointer = NULL; } return false; diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c index fa0b4e97a5..a9e7a84249 100644 --- a/source3/modules/vfs_gpfs.c +++ b/source3/modules/vfs_gpfs.c @@ -365,7 +365,7 @@ static bool gpfsacl_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl) return True; } -static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_info_sent, const SEC_DESC *psd) +static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd) { struct gpfs_acl *acl; NTSTATUS result = NT_STATUS_ACCESS_DENIED; @@ -386,7 +386,12 @@ static NTSTATUS gpfsacl_set_nt_acl_internal(files_struct *fsp, uint32 security_i return result; } -static NTSTATUS gpfsacl_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, uint32 security_info_sent, const SEC_DESC *psd) +static NTSTATUS gpfsacl_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd) +{ + return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd); +} + +static NTSTATUS gpfsacl_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, char *name, uint32 security_info_sent, SEC_DESC *psd) { return gpfsacl_set_nt_acl_internal(fsp, security_info_sent, psd); } @@ -834,6 +839,10 @@ static vfs_op_tuple gpfs_op_tuples[] = { SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT }, + { SMB_VFS_OP(gpfsacl_set_nt_acl), + SMB_VFS_OP_SET_NT_ACL, + SMB_VFS_LAYER_TRANSPARENT }, + { SMB_VFS_OP(gpfsacl_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_TRANSPARENT }, |