Revision 2 as of 2009-07-01 16:01:52

Clear message

About the patches

For (my) convenience, I opted to store the patches in form of a mailbox as generated by

git format-patch --stdout 

Ideally, you use a git repository and

git checkout -b rxosd-patches openafs-stable-1_4_10
git am <patch-file.mb 

You then have all the goodness of git to review the changes.

Alternatively, it shouldn't be too hard to retrieve individual u-diffs from the files.

Overview

Client changes

Protocol Abstraction Layer

Unifies CacheStoreProc / CacheFetchProc routines for UFS- and MemCache, respectively. Encapsules server interactions into discrete functions that are specific to the cache type used. Additional protocols can be added relatively easy then, by defining additional sets of Store/Fetch mini-operations.

Protocol Abstraction layer

rxosd-01

The CacheStoreProcs and CacheStoreProcs for the respective cache types are counterintuitively distributed in the source tree. We propose a new afs_fetchstore.c for these.

rxosd-02

The caches should use identical Fetch/Store routines. This patch concerns only Store. The code is quite insane, as this patch is only a bridge to rxosd-03.

rxosd-03

The actual protocol abstraction. StoreOps are yet another differentiation layer underneath cache type abstraction. Interaction with rxosd servers will manifest itself in form of a set of alternative StoreOps.

(!) Note that the ((struct rxfs_storeVariables *)rock)->call = acall; line is actually a hack. The final rxfs_storeInit() will work rather differently than how it does now, so this is my way of bridging the gap.

rxosd-04

Make code more readable, and replace some return codes.

rxosd-05 and rxosd-06

These are the counterparts of rxosd-02 and rxosd-03 wrt. the CacheFetchProcs.