This section describes what will be our first, non-locking approach to metadata caching that does not involve client file system code communicating with other client instances. This scheme relies on timeouts. There are potentials for inconsistencies, just as there are in NFS, if the timeouts don't match well with access patterns.
Obviously this is just one of many possible client-side library implementations. It just happens to be the first one we're going to implement.
Note the operations at this level
Timeouts will be tunable at runtime to allow administrators to tailor their system to the workloads presented. A zero timeout is always possible, meaning that that type of information is never cached.
One should think of these timeouts as providing a window of time during which the view of one client can differ from the view of another client. There are a number of aspects to the view of interest:
In this section we cover one mechanism for limiting the potential inconsistencies between client views.
Do we want some kind of optional data caching? If so, this changes our concurrent write model.