Overlapping I/O Operations

POSIX semantics dictate sequential consistency for overlapping I/O operations. This means that I/O operations must be atomic with respect to each other – if one process performs a read spanning a collection of servers while another performs a write in the same region, the read must see either all or none of the changes. In a parallel file system this involves communication to coordinate access in this manner, and because of the number of clients we wish to support, we are unwilling to implement this functionality (at least as part of the core file system).

In PVFS2 we instead implement a semantic we call nonconflicting writes semantic. This semantic states that all I/O operations that do not access the same bytes (in other words, are nonconflicting) will be sequentially consistent. Write operations that conflict will result in some undefined combination of the bytes being written to storage, while read operations that conflict with write operations will see some undefined combination of original data and write data.