Coda File System

Re: Venus problems

From: Claudio Di-Martino <claudio_at_claudio.csita.unige.it>
Date: Fri, 25 Jun 1999 17:39:11 +0000 (GMT)
On Wed, 23 Jun 1999, Claudio Di-Martino wrote:

> 
> 
> On Tue, 22 Jun 1999, Jan Harkes wrote:
> 
> > Does slackware have glibc yet? How much fiddling was necessary?
> 
> erm... no glibc... but non really much fiddling. Simply adding a
> single #include in a couple of files.

I have now upgraded to glibc 2.0.7 with seemingly no effect.B

> [ H(07) : 0001 : 11:12:31 ] HDBDaemon just woke up


> exactly after the HDBDaemon started for the second time venus started
> looping using all free CPU time and the /coda filesystem become
> unresponsive. Strace showed venus was endlessly opening and closing
> /etc/passwd ...

Ok, I digged some more and found that venus was looping in the ConsoleUser
function from coda-src/venus/user.cc .

Basically at startup hdb::ResetTransient sets SolicitAdvice to -1.
When the HDBDaemon wakes up for the second time it does a
RequestHoardWalkAdvice which calls AuthorizedUser passing SolicitAdvice
as the user parameter.
AuthorizedUser calls ConsoleUser and there it starts to loop:

    strcpy(w.ut_line, CONSOLE);
    while (!found && (u = getutline(&w))) {
        pw = getpwnam(u->ut_name);
        if (pw) found = (user == pw->pw_uid);
    }

basically the utline found by getutline returns LOGIN as the ut_name.
LOGIN isn't found in /etc/passwd so it gets stuck in the loop...

I don't know if the code makes sense at all, the meaning of setting
SolicitAdvice at -1 or passing it as a user or getutine returning an
ut_name of "LOGIN".
Anyone knows this piece of code more in depth to give some enlightment?

Ciao!!!

Claudio Di Martino
Received on 1999-06-25 11:41:08