Re: O_DIRECT on macOS

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-07-13T01:56:09Z
Lists: pgsql-hackers
Hi,

On 2021-07-13 13:25:50 +1200, Thomas Munro wrote:
> On Mon, May 31, 2021 at 10:29 AM Thomas Munro <thomas.munro@gmail.com> wrote:
> > For comparison, here is my sketch of idea #1.  I pick an arbitrary
> > value to use as PG_O_DIRECT (I don't want to define O_DIRECT for fear
> > of breaking other code that might see it and try to pass it into
> > open()... for all I know, it might happen to match OS-internal value
> > O_NASAL_DEMONS), and statically assert that it doesn't collide with
> > standard flags we're using, and I strip it out of the flags I pass in
> > to open().  As I said, a bit icky, but it's a tiny and localised
> > patch, which is nice.
> 
> I'm planning to go with that idea (#1), if there are no objections.

The only other viable approach I see is to completely separate our
internal flag representation from the OS representation and do the whole
mapping inside fd.c - but that seems like a too big hammer right now.

Greetings,

Andres Freund



Commits

  1. Don't use #if inside function-like macro arguments.

  2. Support direct I/O on macOS.