I asked my question in the wrong place!
"So is the original requirement for O_DIRECT addressed completely by O_SYNC and O_DSYNC"
I'm guessing you'd say "no"
"So is the original requirement for O_DIRECT addressed completely by O_SYNC and O_DSYNC"
I'm guessing you'd say "no"
The practical purpose of O_DIRECT is to have precise visibility and control over what is in memory, what is on disk, and any inflight I/O operations. This opens up an entire category of workload-aware execution scheduling optimizations that become crucial for performance as storage sizes increase.