[OpenAFS-devel] osi_Panic on AIX and IRIX

Simon Wilkinson sxw@inf.ed.ac.uk
Tue, 9 Feb 2010 22:09:17 +0000


On 9 Feb 2010, at 20:00, Chaz Chandler wrote:
> I'm not sure exactly what led to it, but at some point before late
> January references to vprintf crept into the IRIX kernel module =
because
> of the way osi_Panic was defined -- at which point the module would no
> longer load (and the kernel would no longer build with libafs.a in =
it).=20
> It looked like AIX had the same problem (lack of vprintf) and there =
was
> already some #ifdef code in there to work around it, so we just tacked
> on some more for IRIX.  Well, I don't know how well it's working out =
for
> AIX, but now I'm playing wack-a-mole #ifdefing all of the osi_Panic =
refs
> elsewhere.  I'm hoping there's a better way.  Has anyone tested AIX
> recently?

Okay, so if the problem is references to vprintf, you just need to =
redefine the source of those references, rather than hunting through the =
code. osi_Panic is defined in two places - rx_kcommon.c for kernel code, =
and rx_user.c for user code.

rx_kcommon.c has, in effect, the following:

#if defined(AFS_AIX_ENV) || defined(AFS_SGI_ENV)
void
osi_Panic(char *msg, void *a1, void *a2, void *a3)
{
    if (!msg)
        msg =3D "Unknown AFS panic";
    printf(msg, a1, a2, a3);
    panic(msg);
}
#endif

So, kernel mode code _should_ be okay - there are no references to =
vprintf there. However, rx_user.c has only a vprintf based definition. =
It's worth working out what's going on here, so here are some questions:
   *) Is your problem really with kernel code?
   *) Is IRIX using rx_user.c in user space and rx_kcommon.c in the =
kernel, or is something weird happening?

Can you get more information about where the vprintf references are =
coming from?

S.