[OpenAFS-devel] "Lost contact with file server" problems

Jeffrey Hutzelman jhutz@cmu.edu
Mon, 29 Aug 2005 11:06:01 -0400


On Monday, August 29, 2005 12:32:23 +0200 Harald Barth <haba@pdc.kth.se> 
wrote:

>
>> Thanks! Now I can try something ;-) I'll give it a run at my cluster, so
>> we should know in a few days if it's fixed. Does this patch modify the
>> kernel module, the afsd or both?
>
> this rx code ends up client side in the kernel module and in the
> (userland) fileserver. I don't think there is much at all that afsd
> does after the client has started. Looks to me that the patch changes
> the behaviour in rx_NewCall() which decides what happens if the call
> (which probably got recycled in rx.c line 1104) has error set. This
> should convince the client to throw away the call (where later?). So
> we're talking about the kernel module, aren't we? I don't know if the
> error condition propagates to the other end of the rx-connection and
> the patch is helpful in the fileserver, too.
>
> Hm. What about doing something about call->error sooner around the
> check for RX_STATE_DALLY? Somethink like if (call->error)
> rxi_ResetCall()? Or is that too soon?

No; you're missing the point.  The issue is not that we're recycling a call 
that _does_ have an error; either rxi_NewCall or rxi_ResetCall will make 
sure call->error is set to 0.  The problem I'm trying to correct is that 
when we attach a new call to a _connection_ which is already in an error 
state, the error doesn't propagate down to the new call.


In any event, as Harald points out, this code ends up in pretty much 
anything that uses Rx.  However, the component you're going to care about 
is the kernel module, since it's your clients that are originating new 
calls on connections already in error.

-- Jeff