Image Number 7 for United States Patent #5175851.
A system and method in which client access to data at a server is synchronized to keep the data consistent by ensuring that each portion of the data accessible for modification at a node is not accessible for reading or modification by any other node, while allowing portions of the data accessible only for reading to be accessible by any number of nodes. If a conflicting request arises from a different client the server must revoke data that has been previously distributed to a client. For a revoke.sub.-- bytes request, all outstanding get.sub.-- bytes are marked so that the bytes that are being requested to be revoked will be discarded when they do arrive at the client. To insure that read and write system calls on a file are performed in a serializable fashion throughout a distributed environment, each machine at which a read is being performed must acquire a read token and each machine at which a write is being performed must acquire a read/write token from the server for the file. When any machine has a read/write token, no machine is allowed to have a read token, although any number of machines may have a read token at the same time. The server coordinates the distribution of these tokens by revoking all read tokens whenever a write token is requested and revoking the write token whenever any read token is requested.