[OpenAFS-devel] Progress on Linux in-kernel RxRPC library

Jeffrey Hutzelman jhutz@cmu.edu
Mon, 21 Mar 2005 18:20:12 -0500


On Sunday, March 20, 2005 07:52:35 PM -0500 Kyle Moffett 
<mrmacman_g4@mac.com> wrote:

> They wouldn't.  The RxRPC library would notice that you used the same
> credentials for both calls and automatically use the same connection.
> If it wants to do more simultaneous RxRPC calls than the protocol
> allows, it would create the extra connections for you when you need
> them, and close them when you're done.

This is really a bit naive.  It _might_ be a good model for the cache 
manager, but it's not reasonable to assume it is OK to combine connections 
belonging to arbitrary user processes.  It also totally ignores the fact 
that in OpenAFS, some accesses are done on behalf of users by background 
processes, which must have control over the credentials used for calls they 
make.

It also completely ignores the issue of the axscache, which stores cached 
access rights.  For this to work, the cache manager must know to what PAG a 
process belongs, so in fact, you have _not_ eliminated the need for PAG's.



> One of the other advantages of the Linux RxRPC layer, although this

A nit: the name of the protocol is 'Rx', not 'RxRPC'.


> is not really noticeable for OpenAFS, is that it is shared code in
> the kernel repository, which means it's one more complex chunk of
> code that will be maintained easily by the Linux developers (Which
> are considerably more in number than OpenAFS developers) that you
> don't need to worry about on Linux

As Derrick points out, this is a chunk of fairly complex, mostly 
platform-independent code that we will sill have to maintain for other 
platforms.  So unless _every_ OS vendor does this, _and_ they all 
interoperate well, it gains us nothing but headaches.



> It would abstract you away from
> much of the nitty-gritty of the Linux networking internals (at least
> for future versions) and provide a smaller ABI that is less likely
> to break on upgrades.

Let's not kid ourselves.  Linux does not provide a kernel ABI.



I would very much like to see multiple interoperable implementations of Rx. 
However, it's a fairly complex protocol with a lot of subtle nuances (and 
more than a few warts), and getting there will take a lot of effort. 
Unless and until the Linux kernel's implementation is quite stable and very 
well-tested, I'll be happy to debug problems, but I won't suggest that 
anyone run it in production.


-- Jeff