Do file system or disk drivers support a concept of file system modification fence, like a memory fence in the CPU or shared memory system?
A fence is an instruction that separate memory operations such that globally visible memory accesses after the fence event are not detectable until all those that come before it.
Is such feature available for file content modification (and repertory modification), in an efficient way? Of course a simplistic solution would be wait until all writes are written to stable storage; that however is blocking the application and could be inefficient if many synchronization points are needed. Also, it could cause many small individual writes when one big write (including many writes separated by fences) satisfies the same constrains on fully journalled system, or when the biggest write is guaranteed to be atomic by the disk driver.
Can file system drivers be forced to order writes with file system access fences? Has the concept been explored?
PRECISION
The context of the question is not multiple processes accessing the same files in a racy way but one process saving data in a database such that an interruption of the process (even a computer crash) should leave only one sequence of modifications (between two fences) partially written.