00db10
commit 0961f7e1e300ef633b0c1ad95d0999fb5c169f4e
00db10
Author: Jeff Layton <jlayton@poochiereds.net>
00db10
Date:   Wed Jul 23 14:21:05 2014 -0400
00db10
00db10
    fcntl-linux.h: add new definitions and manual updates for open file description locks
00db10
    
00db10
    Open file description locks have been merged into the Linux kernel for
00db10
    v3.15.  Add the appropriate command-value definitions and an update to
00db10
    the manual that describes their usage.
00db10
00db10
Note by DJ: the implementation doesn't work correctly for 32-bit file
00db10
offsets.  Upstream changed the ABI to compensate but RHEL can't, so we
00db10
enable these only for when file offsets are 64 bits.
00db10
00db10
diff -rup a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
00db10
--- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h	2018-04-13 18:38:24.000000000 -0400
00db10
+++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h	2018-04-13 20:05:21.743234360 -0400
00db10
@@ -117,6 +117,25 @@
00db10
 # define F_SETLKW64	14	/* Set record locking info (blocking).	*/
00db10
 #endif
00db10
 
00db10
+#ifdef __USE_FILE_OFFSET64
00db10
+/* open file description locks.
00db10
+
00db10
+   Usually record locks held by a process are released on *any* close and are
00db10
+   not inherited across a fork.
00db10
+
00db10
+   These cmd values will set locks that conflict with process-associated record
00db10
+   locks, but are "owned" by the opened file description, not the process.
00db10
+   This means that they are inherited across fork or clone with CLONE_FILES
00db10
+   like BSD (flock) locks, and they are only released automatically when the
00db10
+   last reference to the the file description against which they were acquired
00db10
+   is put. */
00db10
+#ifdef __USE_GNU
00db10
+# define F_OFD_GETLK	36
00db10
+# define F_OFD_SETLK	37
00db10
+# define F_OFD_SETLKW	38
00db10
+#endif
00db10
+#endif
00db10
+
00db10
 #ifdef __USE_LARGEFILE64
00db10
 # define O_LARGEFILE __O_LARGEFILE
00db10
 #endif