From: Tom Keiser Date: Fri, 30 Jun 2006 15:07:31 +0000 (+0000) Subject: DEVEL15-solaris-vfsops-20060629 X-Git-Tag: openafs-devel-1_5_3~20 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=9f01e5e6a2e080db325d2959205cf14fc811e96a;p=packages%2Fo%2Fopenafs.git DEVEL15-solaris-vfsops-20060629 fix symbol binding for modern solaris 10 patches (6/06) which kills a few we didn't need anyway (cherry picked from commit 8a1a06b5eb0e415859fd841c3c4a6b578eaea022) --- diff --git a/src/afs/SOLARIS/osi_vfsops.c b/src/afs/SOLARIS/osi_vfsops.c index 4a19d3337..e287fe91a 100644 --- a/src/afs/SOLARIS/osi_vfsops.c +++ b/src/afs/SOLARIS/osi_vfsops.c @@ -277,7 +277,6 @@ void (*ufs_itimes_nolockp) (); int (*afs_orig_ioctl) (), (*afs_orig_ioctl32) (); int (*afs_orig_setgroups) (), (*afs_orig_setgroups32) (); -struct streamtab *udp_infop = 0; #ifndef AFS_SUN510_ENV struct ill_s *ill_g_headp = 0; #endif @@ -297,6 +296,20 @@ int (*nfs_checkauth) (); extern Afs_syscall(); +static void * +do_mod_lookup(const char * mod, const char * sym) +{ + void * ptr; + + ptr = modlookup(mod, sym); + if (ptr == NULL) { + afs_warn("modlookup failed for symbol '%s' in module '%s'\n", + sym, mod); + } + + return ptr; +} + #ifdef AFS_SUN510_ENV afsinit(int fstype, char *dummy) #else @@ -318,64 +331,49 @@ afsinit(struct vfssw *vfsswp, int fstype) afs_orig_ioctl32 = sysent32[SYS_ioctl].sy_call; sysent32[SYS_setgroups].sy_callc = afs_xsetgroups; sysent32[SYS_ioctl].sy_call = afs_xioctl; -#endif +#endif /* AFS_SUN57_64BIT_ENV */ #ifdef AFS_SUN510_ENV vfs_setfsops(fstype, afs_vfsops_template, &afs_vfsopsp); afsfstype = fstype; vn_make_ops("afs", afs_vnodeops_template, &afs_ops); -#else +#else /* !AFS_SUN510_ENV */ vfsswp->vsw_vfsops = &Afs_vfsops; afsfstype = fstype; -#endif +#endif /* !AFS_SUN510_ENV */ -#if !defined(AFS_NONFSTRANS) - nfs_rfsdisptab_v2 = (int (*)())modlookup("nfssrv", "rfsdisptab_v2"); - if (!nfs_rfsdisptab_v2) { - afs_warn("warning : rfsdisptab_v2 NOT FOUND\n"); - } - if (nfs_rfsdisptab_v2) { - nfs_acldisptab_v2 = (int (*)())modlookup("nfssrv", "acldisptab_v2"); - if (!nfs_acldisptab_v2) { - afs_warn("warning : acldisptab_v2 NOT FOUND\n"); - } else { +#if !defined(AFS_NONFSTRANS) + nfs_rfsdisptab_v2 = (int (*)()) do_mod_lookup("nfssrv", "rfsdisptab_v2"); + if (nfs_rfsdisptab_v2 != NULL) { + nfs_acldisptab_v2 = (int (*)()) do_mod_lookup("nfssrv", "acldisptab_v2"); + if (nfs_acldisptab_v2 != NULL) { afs_xlatorinit_v2(nfs_rfsdisptab_v2, nfs_acldisptab_v2); } } - nfs_rfsdisptab_v3 = (int (*)())modlookup("nfssrv", "rfsdisptab_v3"); - if (!nfs_rfsdisptab_v3) { - afs_warn("warning : rfsdisptab_v3 NOT FOUND\n"); - } - if (nfs_rfsdisptab_v3) { - nfs_acldisptab_v3 = (int (*)())modlookup("nfssrv", "acldisptab_v3"); - if (!nfs_acldisptab_v3) { - afs_warn("warning : acldisptab_v3 NOT FOUND\n"); - } else { + nfs_rfsdisptab_v3 = (int (*)()) do_mod_lookup("nfssrv", "rfsdisptab_v3"); + if (nfs_rfsdisptab_v3 != NULL) { + nfs_acldisptab_v3 = (int (*)()) do_mod_lookup("nfssrv", "acldisptab_v3"); + if (nfs_acldisptab_v3 != NULL) { afs_xlatorinit_v3(nfs_rfsdisptab_v3, nfs_acldisptab_v3); } } - nfs_checkauth = (int (*)())modlookup("nfssrv", "checkauth"); - if (!nfs_checkauth) - afs_warn("nfs_checkauth not initialised"); -#endif - ufs_iallocp = (int (*)())modlookup("ufs", "ufs_ialloc"); - ufs_iupdatp = (void (*)())modlookup("ufs", "ufs_iupdat"); - ufs_igetp = (int (*)())modlookup("ufs", "ufs_iget"); - ufs_itimes_nolockp = (void (*)())modlookup("ufs", "ufs_itimes_nolock"); - udp_infop = (struct streamtab *)modlookup("udp", "udpinfo"); -#ifdef AFS_SUN510_ENV - if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp - || !udp_infop) - afs_warn("AFS to UFS mapping cannot be fully initialised\n"); -#else - ill_g_headp = (struct ill_s *)modlookup("ip", "ill_g_head"); + nfs_checkauth = (int (*)()) do_mod_lookup("nfssrv", "checkauth"); +#endif /* !AFS_NONFSTRANS */ + + ufs_iallocp = (int (*)()) do_mod_lookup("ufs", "ufs_ialloc"); + ufs_iupdatp = (void (*)()) do_mod_lookup("ufs", "ufs_iupdat"); + ufs_igetp = (int (*)()) do_mod_lookup("ufs", "ufs_iget"); + ufs_itimes_nolockp = (void (*)()) do_mod_lookup("ufs", "ufs_itimes_nolock"); - if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp - || !udp_infop || !ill_g_headp) + if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp) { afs_warn("AFS to UFS mapping cannot be fully initialised\n"); -#endif + } + +#if !defined(AFS_SUN510_ENV) + ill_g_headp = (struct ill_s *) do_mod_lookup("ip", "ill_g_head"); +#endif /* !AFS_SUN510_ENV */ afs_sinited = 1; return 0;