This is an overview of the decisions made in the previous sections of this chapter:
files and applications are supported.
Assumptions made regarding file usage:
Low level of write-sharing, especially due to
human write locks
Small files, average size 10-22K.
No special support for different file types.
: Even though I will not make many explicit choices based on these assumptions, the implementation will most certainly function less than optimal if actual system use deviates a lot from these.
Session semantics were chosen for file sharing.
Granularity of replication is whole files, a sensible choice in light of the above assumptions.
A replica control strategy based on a primary copy scheme:
Multi-level consistency based on definitions of pessimistic, strict, and optimistic replica control strategies.
Conflict detection based on timestamping.
Conflict resolution left to the applications.
The file system should require minimal changes to existing applications.
The clients are assumed to be synchronized with the server, but a simple service to check this, based on Cristian's algorithm, will be provided.
Caching is done in a simple least-recently-used (LRU) fashion.