mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-06 15:24:56 +08:00
Update C comment about O_DIRECT and fsync().
This commit is contained in:
parent
06711de9d9
commit
7d23e0f803
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user