fix up O_SYNC comments
[firefly-linux-kernel-4.4.55.git] / arch / sparc / include / asm / fcntl.h
index d4d9c9d852c3d6324621689995fe637c51cdaa94..38f37b333cc7f5b277ea29646e2a0f14cfcfe325 100644 (file)
@@ -1,14 +1,12 @@
 #ifndef _SPARC_FCNTL_H
 #define _SPARC_FCNTL_H
 
-/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
-   located on an ext2 file system */
 #define O_APPEND       0x0008
 #define FASYNC         0x0040  /* fcntl, for BSD compatibility */
 #define O_CREAT                0x0200  /* not fcntl */
 #define O_TRUNC                0x0400  /* not fcntl */
 #define O_EXCL         0x0800  /* not fcntl */
-#define O_SYNC         0x2000
+#define O_DSYNC                0x2000  /* used to be O_SYNC, see below */
 #define O_NONBLOCK     0x4000
 #if defined(__sparc__) && defined(__arch64__)
 #define O_NDELAY       0x0004
 #define O_DIRECT        0x100000 /* direct disk access hint */
 #define O_NOATIME      0x200000
 #define O_CLOEXEC      0x400000
+/*
+ * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using
+ * the O_SYNC flag.  We continue to use the existing numerical value
+ * for O_DSYNC semantics now, but using the correct symbolic name for it.
+ * This new value is used to request true Posix O_SYNC semantics.  It is
+ * defined in this strange way to make sure applications compiled against
+ * new headers get at least O_DSYNC semantics on older kernels.
+ *
+ * This has the nice side-effect that we can simply test for O_DSYNC
+ * wherever we do not care if O_DSYNC or O_SYNC is used.
+ *
+ * Note: __O_SYNC must never be used directly.
+ */
+#define __O_SYNC       0x800000
+#define O_SYNC         (__O_SYNC|O_DSYNC)
 
 #define F_GETOWN       5       /*  for sockets. */
 #define F_SETOWN       6       /*  for sockets. */