This was never up for debate and is more diversion.
Was someone "saying you have to use mmap or you get data races??"
No, no one was saying that. You need it to do lock free synchronization because you need to map the same memory into two different processes to use atomics.
They said something that I thought was clear: you need file locks with read() and write().
I think you misunderstood that to mean only mmap can avoid data races.
What they actually said was that using mmap allows atomics so you can avoid file locks.