[OpenAFS-devel] callback handling problem
Neulinger, Nathan
nneul@umr.edu
Thu, 31 Jan 2002 11:26:27 -0600
It would be good to at least be able to get a static copy of it. Such as =
for including in the binary downloads. Perhaps might also be reasonable =
to generate that nightly and check it into cvs if changed any.
-- Nathan
------------------------------------------------------------
Nathan Neulinger EMail: nneul@umr.edu
University of Missouri - Rolla Phone: (573) 341-4841
Computing Services Fax: (573) 341-4216
> -----Original Message-----
> From: Hartmut Reuter [mailto:reuter@rzg.mpg.de]=20
> Sent: Thursday, January 31, 2002 11:23 AM
> To: Thomas Mueller
> Cc: openafs-devel@openafs.org
> Subject: Re: [OpenAFS-devel] callback handling problem
>=20
>=20
>=20
> In older versions of callback.c was no "if ( !" around the call to
> ClearHostCallbacks_r. Therefore the loop was left. I suppose we need a
> line
>=20
> hp1 =3D hp;
>=20
> after the "return,". That would lih_r() start searching with the next
> host.
>=20
> Here the original part:
>=20
> do {
> lih_host =3D 0;
> h_Enumerate_r(lih_r, (char *)hp1);
> hp =3D lih_host;
> if (hp) {
> cbstuff.GSS4++;
> if ( ! ClearHostCallbacks_r(hp, 0 /* not locked=20
> or held */)
> )
> return;
> } else {
> hp1 =3D hostp;
> cbstuff.GSS1++;
> ViceLog(5,("GSS: Try harder for longest inactive host =
cnt=3D
> %d\n", i));
> /*
> * Next time try getting callbacks from any host even if
> * it's deleted (that's actually great since we can freely
> * remove its callbacks) or it's held since the only other
> * option is starvation for the file server (i.e.=20
> until the
> * callback timeout arrives).
> */
> i++;
> }
> } while (i < 2);
>=20
>=20
> Hartmut
>=20
> Thomas Mueller wrote:
> >=20
> > Hi folks,
> >=20
> > we still have the problem which I reported last October.
> > I now can say what happens but I have no idea why it happens.
> >=20
> > Occasionally the fileserver ends up with all threads=20
> running an infinite
> > loop in GetSomeSpace_r() in viced/callback.c (do { ... }=20
> while (i < 2);)
> >=20
> > If
> >=20
> > h_Enumerate_r(lih_r, (char*)hp1);
> >=20
> > finds at least one host which passes all test in lih_r(...)
> > then
> >=20
> > ClearHostCallbacks_r(hp, 0)
> >=20
> > is called, but this function returns immediately (return value 1)
> > if this host entry is locked and the next round in this loop starts.
> >=20
> > So if hostList contains only a few (sometimes only one) entries
> > with host->cblist !=3D 0 AND those entries are locked this=20
> thread keeps in
> > that do-while-loop.
> >=20
> > Do you think, it would be a solution to modify lih_r() a=20
> little bit so
> > that it doesnt pick up locked host entries?
> >=20
> > Thomas.
> > --
> >=20
> --------------------------------------------------------------
> -----------
> > Thomas Mueller, TU Chemnitz, Universitaetsrechenzentrum,=20
> D-09107 Chemnitz
> > e-mail: Thomas.Mueller@hrz.tu-chemnitz.de
> >=20
> --------------------------------------------------------------
> -----------
> >=20
> > _______________________________________________
> > OpenAFS-devel mailing list
> > OpenAFS-devel@openafs.org
> > https://lists.openafs.org/mailman/listinfo/openafs-devel
>=20
> --=20
> -----------------------------------------------------------------
> Hartmut Reuter e-mail reuter@rzg.mpg.de
> phone +49-89-3299-1328
> RZG (Rechenzentrum Garching) fax +49-89-3299-1301=20
> Computing Center of the Max-Planck-Gesellschaft (MPG) and the
> Institut fuer Plasmaphysik (IPP)
> -----------------------------------------------------------------
> _______________________________________________
> OpenAFS-devel mailing list
> OpenAFS-devel@openafs.org
> https://lists.openafs.org/mailman/listinfo/openafs-devel
>=20