summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpackaging/RHEL-CTDB/configure.rpm67
-rw-r--r--source3/modules/gpfs.c10
-rw-r--r--source3/modules/vfs_gpfs.c13
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 },