And a stackable file system interface with a flexible naming architecture to compose fs and to arrange the file name space. So stackable fs can reside in same name space or different name spaces, and can be implemented either locally and remotely. VMM and pagers can act as cache managers to other objects. A pager may have data cached at several cache managers. The DFS establishes itself as a cache object for the pager object in SFS corresponding to the file.
Coherency is obtained by using the same underlying pager object for all clients.
An object O1 can be substituted for another object O2 of type foo as long as O1 is also of type foo. The implementation of O1 decides on a per-operation basis whether to invoke the corresponding operation on O2, or whether to implement the functionality itself. Overhead from the layering approach mainly due to crossing interface boundaries. If the fs are implemented in separate namespaces, each invocation requires a cross-domain call. If implemented in same domain, then degenerates to local procedure calls.