[OpenAFS-devel] Fully Functional Client on Linux 2.6

Jack Neely jjneely@pams.ncsu.edu
Fri, 2 Jul 2004 15:33:27 -0400


--4Epv4kl9IRBfg3rk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Folks,

I have a fully functional OpenAFS client on Linux 2.6, well, at least
the current Fedora Core 2 kernels.  I decided to document NCSU's OpenAFS
packages a bit.  That includes this information and is at:

    http://linux.ncsu.edu/projects/openafs-rpms/

You'll need to have both kernel and kernel-smp packages installed to
build the RPM from there.

The current set of patches against yesterday's CVS (pretty much 1.3.65)
are attached.

Jack Neely
-- 
Jack Neely <slack@quackmaster.net>
Realm Linux Administration and Development
PAMS Computer Operations at NC State University
GPG Fingerprint: 1917 5AC1 E828 9337 7AA4  EA6B 213B 765F 3B6A 5B89

--4Epv4kl9IRBfg3rk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="sys_call_table.patch"

Index: src/afs/LINUX/osi_module.c
===================================================================
RCS file: /cvs/openafs/src/afs/LINUX/osi_module.c,v
retrieving revision 1.52
diff -u -r1.52 osi_module.c
--- src/afs/LINUX/osi_module.c	21 Jun 2004 21:46:17 -0000	1.52
+++ src/afs/LINUX/osi_module.c	1 Jul 2004 20:52:37 -0000
@@ -348,8 +348,25 @@
 	    sys_call_table = ptr - __NR_exit;
 	    break;
 	}
-#else /* EXPORTED_SYS_OPEN */
-	break;
+#elif defined(AFS_LINUX26_ENV) /* EXPORTED_SYS_OPEN */
+    void *lower_bound = (void *)((unsigned long)&kernel_thread & ~0xfffff);
+    int ok = 1;
+    int i;
+    
+    for (i=0; i<222; i++) {
+        if (*(ptr+i) <= (void*)lower_bound || *(ptr+i) >= (void*)ptr) {
+            ok = 0;
+            ptr += i;
+            break;
+        }
+    }
+
+    if (ok) {
+        sys_call_table = ptr;
+        break;
+    }
+#else
+    break;
 #endif /* EXPORTED_KALLSYMS_ADDRESS */
     }
 #ifdef EXPORTED_KALLSYMS_ADDRESS

--4Epv4kl9IRBfg3rk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="syscalls.h.patch"

Index: src/afs/LINUX/osi_module.c
===================================================================
RCS file: /cvs/openafs/src/afs/LINUX/osi_module.c,v
retrieving revision 1.52
diff -u -r1.52 osi_module.c
--- src/afs/LINUX/osi_module.c	21 Jun 2004 21:46:17 -0000	1.52
+++ src/afs/LINUX/osi_module.c	1 Jul 2004 20:44:02 -0000
@@ -34,7 +34,7 @@
 #include <linux/sched.h>
 #endif
 #if !defined(EXPORTED_SYS_CALL_TABLE) && defined(HAVE_KERNEL_LINUX_SYSCALL_H)
-#include <linux/syscall.h>
+#include <linux/syscalls.h>
 #endif
 
 #ifdef AFS_SPARC64_LINUX24_ENV
Index: src/cf/linux-test3.m4
===================================================================
RCS file: /cvs/openafs/src/cf/linux-test3.m4,v
retrieving revision 1.8
diff -u -r1.8 linux-test3.m4
--- src/cf/linux-test3.m4	21 Jun 2004 20:06:21 -0000	1.8
+++ src/cf/linux-test3.m4	1 Jul 2004 20:44:03 -0000
@@ -1,6 +1,6 @@
 AC_DEFUN([LINUX_KERNEL_LINUX_SYSCALL_H],[
-  AC_MSG_CHECKING(for linux/syscall.h in kernel)
-  if test -f "${LINUX_KERNEL_PATH}/include/linux/syscall.h"; then
+  AC_MSG_CHECKING(for linux/syscalls.h in kernel)
+  if test -f "${LINUX_KERNEL_PATH}/include/linux/syscalls.h"; then
     ac_linux_syscall=yes
     AC_MSG_RESULT($ac_linux_syscall)
   else

--4Epv4kl9IRBfg3rk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="rx_knet-selinux.patch"

Index: src/rx/LINUX/rx_knet.c
===================================================================
RCS file: /cvs/openafs/src/rx/LINUX/rx_knet.c,v
retrieving revision 1.20
diff -u -r1.20 rx_knet.c
--- src/rx/LINUX/rx_knet.c	21 Jun 2004 20:06:26 -0000	1.20
+++ src/rx/LINUX/rx_knet.c	1 Jul 2004 20:36:22 -0000
@@ -37,11 +37,7 @@
     int code;
 
 
-#ifdef LINUX_KERNEL_IS_SELINUX
-    code = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &sockp, 0);
-#else
     code = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &sockp);
-#endif
     if (code < 0)
 	return NULL;
 

--4Epv4kl9IRBfg3rk--