On Linux, the
openat syscall can be used to create files and to test for their existence. Speaking in terms of the C/C++ memory model, creating a file and verifying its existence creates a synchronizes-with relationship. What I need to know is whether these synchronizations are all sequentially-consistent with each other. (I certainly hope so, but I haven't actually seen this documented anywhere.)
For example, given processes p1 and p2, and paths A and B:
if p1 does this: create(A), then create(B)
and p2 does this: try to open(B), then try to open(A)
and no other processes interfere with A or B, is it possible for p2 to open B successfully but fail to find A?
If it makes a difference, we can assume all operations are within one filesystem.