Hi!

Sorry, I cannot reply to the thread with the similar name because I just subscribed.

I immediately recognized the sysrq-t output and I would like to add a: "me too!"

As I'm not very familiar with the openafs internals it took me some time to gain some insight, here's what I think is happening:

src/afs/afs_call.c:afs_shutdown()
{
    [...]
    afs_warn("afs... ");
    while (afs_termState == AFSOP_STOP_AFS) {
        afs_osi_CancelWait(&AFS_WaitHandler);
        afs_osi_Sleep(&afs_termState);
    }

The backtrace shows that this loop does not terminate (you can see the afs_osi_SleepSig()), which is also matched by the dmesg output stopping after "afs...". On the other hand the afsd already exited, which must have happened like this:

src/afs/afs_daemons.c:afs_Daemon()
{
    [...]
        if (now > 0) {
            afs_osi_Wait(now, &AFS_WaitHandler, 0);
        }

        if (afs_termState == AFSOP_STOP_AFS) {
            if (afs_CheckServerDaemonStarted)
                afs_termState = AFSOP_STOP_CS;
            else
                afs_termState = AFSOP_STOP_BKG;
            afs_osi_Wakeup(&afs_termState);
            return;
        }

I haven't had the time to check the afs_termState in afs_shutdown yet as I've noticed that AFS_GLOCK() seems to do nothing if !CONFIG_SMP, so I figured I'd enable that since I use CONFIG_PREEMPT, which (to my naive mind) seems to necessitate locking...

If you have any suggestions how to hunt this down please let me know.

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

Reply via email to