Echo specifies ordering constraints on this write-behind, enabling applications to store and maintain consistent data structures in the file system even when crashes or network faults prevent some writes from being completed. In this paper we describe the Echo cache's coherence and ordering semantics, show how they can improve the performance and consistency of applications, explain how they are implemented. This paper describes its design, implementation, and performance, and addresses security and fault-tolerance issues. Echo is no longer in use and is not being developed any further. Key features of Echo include the use of large client caches and ordered write-behind for both files and directories.
Concurrency control is handled through tokens issued to clients.
Leases specify the maximum time a client is allowed to hold a token, thus allowing tokens to be reclaimed and preventing a failed client from tying up a resource. The procedures used to maintain transaction order are discussed in exhaustive detail. Performance results for different implementations on a network of DEC Fireflies are presented. The results were much more dramatic for the tasks involving compilation of many small C programs and the creation of a new version of a software package using the Vesta configuration management system than for the task involving the make phase of the Andrew benchmark. The results indicate that full write-behind might give modest performance improvements on many realistic workloads.