summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2000-09-29 04:45:00 +0000
committerAndrew Tridgell <tridge@samba.org>2000-09-29 04:45:00 +0000
commit3edcc8c407b16d0698117ecc3fd858201c0a80ba (patch)
tree184eb80463b05f0a20fbf36cce9fdde5960a48c2
parente600c12b6b2cd4e0ad0d145b0ad6d0b92113392f (diff)
downloadsamba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.tar.gz
samba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.tar.bz2
samba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.zip
added a hack to get 64 bit locking working with the broken fcntl()
call in glibc 2.1.95. This hack only gets enabled if you define GLIBC_HACK_FCNTL64 (This used to be commit d8b9ec741cc57b5f3dd1b3ef782a7baed402beaa)
-rw-r--r--source3/include/includes.h13
-rw-r--r--source3/lib/system.c14
2 files changed, 27 insertions, 0 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h
index a18c8b6d5c..da16ae1632 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -951,5 +951,18 @@ extern int DEBUGLEVEL;
#define MAX_SEC_CTX_DEPTH 8 /* Maximum number of security contexts */
+
+#ifdef GLIBC_HACK_FCNTL64
+/* this is a gross hack. 64 bit locking is completely screwed up on
+ i386 Linux in glibc 2.1.95 (which ships with RedHat 7.0). This hack
+ "fixes" the problem with the current 2.4.0test kernels
+*/
+#define fcntl fcntl64
+#undef F_SETLKW
+#undef F_SETLK
+#define F_SETLK 13
+#define F_SETLKW 14
+#endif
+
#endif /* _INCLUDES_H */
diff --git a/source3/lib/system.c b/source3/lib/system.c
index 479bce1965..e846e4755e 100644
--- a/source3/lib/system.c
+++ b/source3/lib/system.c
@@ -1013,3 +1013,17 @@ int sys_pclose(int fd)
return -1;
return wstatus;
}
+
+
+
+#if GLIBC_HACK_FCNTL64
+#include <asm/unistd.h>
+/* this is a gross hack. 64 bit locking is completely screwed up on
+ i386 Linux in glibc 2.1.95 (which ships with RedHat 7.0). This hack
+ "fixes" the problem with the current 2.4.0test kernels
+*/
+int fcntl64(int fd, int cmd, struct flock * lock)
+{
+ return syscall(__NR_fcntl64, fd, cmd, lock);
+}
+#endif /* HACK_FCNTL64 */