Support direct I/O on macOS.
authorThomas Munro <tmunro@postgresql.org>
Sun, 18 Jul 2021 20:52:00 +0000 (08:52 +1200)
committerThomas Munro <tmunro@postgresql.org>
Sun, 18 Jul 2021 23:01:01 +0000 (11:01 +1200)
commit2dbe8905711ba09a2214b6e835f8f0c2c4981cb3
tree775e44cb05c4dfa8f12e68eb388f04e9aa252c96
parentf157db862225a7bfe041ca3f7b73e913e2a8d8d6
Support direct I/O on macOS.

Macs don't understand O_DIRECT, but they can disable caching with a
separate fcntl() call.  Extend the file opening functions in fd.c to
handle this for us if the caller passes in PG_O_DIRECT.

For now, this affects only WAL data and even then only if you set:

  max_wal_senders=0
  wal_level=minimal

This is not expected to be very useful on its own, but later proposed
patches will make greater use of direct I/O, and it'll be useful for
testing if developers on Macs can see the effects.

Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/CA%2BhUKG%2BADiyyHe0cun2wfT%2BSVnFVqNYPxoO6J9zcZkVO7%2BNGig%40mail.gmail.com
src/backend/storage/file/fd.c
src/bin/pg_test_fsync/pg_test_fsync.c
src/include/access/xlogdefs.h
src/include/storage/fd.h