On Wed, Jan 19, 2011 at 10:30 PM, Toby Burress <[email protected]> wrote:
> I was wondering if I could trouble to have someone double check my
> diagnostic.
>
> So when dismounting /afs, the master branch hangs.  It looks like
> this is happening because osi_StopListener() in src/rx/FBSD/rx_knet.c
> calls osi_NetSend() telling the Listener to go away, and then
> afs_osi_Sleep().
>
> Then in src/rx/rx_kcommon.c, rxk_ListenerProc() gets the signal and
> calls osi_rxWakeup(), allowing osi_StopListener() to return and umount
> to exit.
>
> However, it looks like afs_osi_Sleep() is being called with
> rxk_ListenerPid as its argument, and osi_rxWakeup() with afs_termState.
> This causes afs_getevent to return the wrong event to osi_rxWakeup,
> and as a result wakeup() is never called and umount hangs.
>
> Editing rx_kcommon.c to use rxk_ListenerPid instead of afs_termState
> allows umount to exit cleanly (although afsd isn't able to restart after
> that;

it's not supposed to. unload the module, then reload it.

> it looks like after the restart afs_getevent is being called with
> something that just points to zeroed memory).
>
> Is this all wrong?  I spend most of my time in pythonland, so kernel
> debugging is, uh, new to me.

i'd have to look but that sounds correct

Derrick
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to