]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-solaris-vfsops-20060629
authorTom Keiser <tkeiser@gmail.com>
Fri, 30 Jun 2006 15:07:31 +0000 (15:07 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 30 Jun 2006 15:07:31 +0000 (15:07 +0000)
fix symbol binding for modern solaris 10 patches (6/06)
which kills a few we didn't need anyway

(cherry picked from commit 8a1a06b5eb0e415859fd841c3c4a6b578eaea022)

src/afs/SOLARIS/osi_vfsops.c

index 4a19d33379a28793f342c8aeb99c106930dc28e5..e287fe91ade5abc39c323749bf6a1c0dff3d242b 100644 (file)
@@ -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;