added a hack to get 64 bit locking working with the broken fcntl()
authorAndrew Tridgell <tridge@samba.org>
Fri, 29 Sep 2000 04:45:00 +0000 (04:45 +0000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 29 Sep 2000 04:45:00 +0000 (04:45 +0000)
call in glibc 2.1.95. This hack only gets enabled if you define
GLIBC_HACK_FCNTL64
(This used to be commit d8b9ec741cc57b5f3dd1b3ef782a7baed402beaa)

source3/include/includes.h
source3/lib/system.c

index a18c8b6d5cbe00bc4365ef08bb2bafe25c018a40..da16ae16320deb249e1ddc2f1ee95ada9d71448d 100644 (file)
@@ -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 */
 
index 479bce19659909ffc49c75a8dde74dda35f40d5b..e846e4755ece5eef72189ffc888e74b5bbabdc4d 100644 (file)
@@ -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 */