DEVEL15-linux-2626-support-20080608
authorMarc Dionne <marc.c.dionne@gmail.com>
Mon, 9 Jun 2008 04:39:14 +0000 (04:39 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 9 Jun 2008 04:39:14 +0000 (04:39 +0000)
LICENSE IPL10
FIXES 101091

add 2.6.26 support

(cherry picked from commit bed3e31ca4da711649d6c6b9ab828515cd3418fc)

acinclude.m4
src/afs/LINUX/osi_groups.c
src/afs/LINUX/osi_proc.c
src/cf/linux-test4.m4

index 315da8a..288ac54 100644 (file)
@@ -622,6 +622,8 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
 
                  LINUX_KBUILD_USES_EXTRA_CFLAGS
                 LINUX_KERNEL_COMPILE_WORKS
+                LINUX_EXPORTS_FIND_TASK_BY_PID
+                LINUX_EXPORTS_PROC_ROOT_FS
                  LINUX_HAVE_CURRENT_KERNEL_TIME
                  LINUX_KMEM_CACHE_INIT
                 LINUX_HAVE_KMEM_CACHE_T
index 752057d..93584ef 100644 (file)
@@ -646,7 +646,11 @@ void osi_keyring_init(void)
 #  endif
            rcu_read_lock();
 # endif
+#if defined(EXPORTED_FIND_TASK_BY_PID)
        p = find_task_by_pid(1);
+#else
+       p = find_task_by_vpid(1);
+#endif
        if (p && p->user->session_keyring)
            __key_type_keyring = p->user->session_keyring->type;
 # ifdef EXPORTED_TASKLIST_LOCK
index 7b378e2..7c15b73 100644 (file)
@@ -317,9 +317,16 @@ void
 osi_proc_init(void)
 {
     struct proc_dir_entry *entry;
-
+#if !defined(EXPORTED_PROC_ROOT_FS)
+    char path[64];
+#endif
+    
+#if defined(EXPORTED_PROC_ROOT_FS)
     openafs_procfs = proc_mkdir(PROC_FSDIRNAME, proc_root_fs);
-
+#else
+    sprintf(path, "fs/%s", PROC_FSDIRNAME);
+    openafs_procfs = proc_mkdir(path, NULL);
+#endif
 #ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H
     entry = create_proc_entry("unixusers", 0, openafs_procfs);
     if (entry) {
@@ -338,9 +345,18 @@ osi_proc_init(void)
 void
 osi_proc_clean(void)
 {
+#if !defined(EXPORTED_PROC_ROOT_FS)
+    char path[64];
+#endif
+
+#if defined(EXPORTED_PROC_ROOT_FS)
+    remove_proc_entry(PROC_FSDIRNAME, proc_root_fs);
+#else
+    sprintf(path, "fs/%s", PROC_FSDIRNAME);
+    remove_proc_entry(path, NULL);
+#endif
     remove_proc_entry(PROC_CELLSERVDB_NAME, openafs_procfs);
 #ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H
     remove_proc_entry("unixusers", openafs_procfs);
 #endif
-    remove_proc_entry(PROC_FSDIRNAME, proc_root_fs);
 }
index f14d5f8..65df334 100644 (file)
@@ -1024,3 +1024,30 @@ AC_DEFUN([LINUX_EXPORTS_RCU_READ_LOCK], [
     AC_DEFINE([EXPORTED_RCU_READ_LOCK], 1, [define if rcu_read_lock() is usable])
   fi])
  
+AC_DEFUN([LINUX_EXPORTS_FIND_TASK_BY_PID], [
+  AC_MSG_CHECKING([if find_task_by_pid is usable])
+  AC_CACHE_VAL([ac_cv_linux_exports_find_task_by_pid], [
+    AC_TRY_KBUILD(
+[#include <linux/sched.h>],
+[pid_t p;
+find_task_by_pid(p);],
+      ac_cv_linux_exports_find_task_by_pid=yes,
+      ac_cv_linux_exports_find_task_by_pid=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_find_task_by_pid)
+  if test "x$ac_cv_linux_exports_find_task_by_pid" = "xyes"; then
+    AC_DEFINE([EXPORTED_FIND_TASK_BY_PID], 1, [define if find_task_by_pid() is usable])
+  fi])
+AC_DEFUN([LINUX_EXPORTS_PROC_ROOT_FS], [
+  AC_MSG_CHECKING([if proc_root_fs is defined and exported])
+  AC_CACHE_VAL([ac_cv_linux_exports_proc_root_fs], [
+    AC_TRY_KBUILD(
+[#include <linux/proc_fs.h>],
+[struct proc_dir_entry *p = proc_root_fs;],
+      ac_cv_linux_exports_proc_root_fs=yes,
+      ac_cv_linux_exports_proc_root_fs=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_proc_root_fs)
+  if test "x$ac_cv_linux_exports_proc_root_fs" = "xyes"; then
+    AC_DEFINE([EXPORTED_PROC_ROOT_FS], 1, [define if proc_root_fs is exported])
+  fi])