Patent ID: 7260576

Claim:
A method for implementing a distributed file system on a storage area network, comprising: accepting a request at a client to access a file; performing a lookup in a local cache to determine what physical disk blocks are associated with the request; and if the lookup cannot be satisfied in the local cache, forwarding the request from the client to a server, receiving a block map for the file from the server, wherein the block map includes location information specifying physical blocks corresponding to the file, maintaining a block map list at the server, wherein the block map list is used to keep track of the block maps that have been communicated to the clients, and wherein if the request to access the file is a write request, the method further comprises using the block map list at the server to: cause the server to invalidate outstanding block maps for the file on other clients; and grant an exclusive block map to the client that initiated the write request, and using information from the block map at the client to access the file on the storage device directly without going through the server, wherein using information from the block map to access the file allows the client to directly access the storage blocks on the storage device; wherein if a direct path between the client and the storage device does not exist, the method further comprises sending all requests associated with the storage device from the client through the server to the storage device via an independent port.