Update C comment about O_DIRECT and fsync().
authorBruce Momjian <[email protected]>
Fri, 11 Mar 2011 11:46:44 +0000 (06:46 -0500)
committerBruce Momjian <[email protected]>
Fri, 11 Mar 2011 11:46:44 +0000 (06:46 -0500)
src/include/access/xlogdefs.h

index 9078f3eb4e6716da20b012444f04d27020312ed8..2982a4799cd6c7987038da25f021ff80a381181f 100644 (file)
@@ -85,13 +85,12 @@ typedef uint32 TimeLineID;
 
 /*
  * Because O_DIRECT bypasses the kernel buffers, and because we never
- * read those buffers except during crash recovery, it is a win to use
- * it in all cases where we sync on each write().  We could allow O_DIRECT
- * with fsync(), but because skipping the kernel buffer forces writes out
- * quickly, it seems best just to use it for O_SYNC.  It is hard to imagine
- * how fsync() could be a win for O_DIRECT compared to O_SYNC and O_DIRECT.
- * Also, O_DIRECT is never enough to force data to the drives, it merely
- * tries to bypass the kernel cache, so we still need O_SYNC or fsync().
+ * read those buffers except during crash recovery or if wal_level != minimal,
+ * it is a win to use it in all cases where we sync on each write().  We could
+ * allow O_DIRECT with fsync(), but it is unclear if fsync() could process
+ * writes not buffered in the kernel.  Also, O_DIRECT is never enough to force
+ * data to the drives, it merely tries to bypass the kernel cache, so we still
+ * need O_SYNC/O_DSYNC.
  */
 #ifdef O_DIRECT
 #define PG_O_DIRECT                O_DIRECT