]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-linux-2626-support-20080608
authorMarc Dionne <marc.c.dionne@gmail.com>
Mon, 9 Jun 2008 04:39:42 +0000 (04:39 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 9 Jun 2008 04:39:42 +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_module.c
src/cf/linux-test4.m4

index dda5403be3e05e73f10ec54012fdfb802460c55f..767b382537f50e862cc7b68dc0fa2bb1cf046f47 100644 (file)
@@ -600,6 +600,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 7562544c2335ad52432a364714c23a7e2ea9db54..6ea42e32f97d05e9cc0737ce07d9f438bb2bea7c 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 b2575dc7ad3992fd6291b2000061d014c080f97c..edf29dbdd9a88612330715aed2975e69def07472 100644 (file)
@@ -237,8 +237,16 @@ afsproc_init(void)
 {
     struct proc_dir_entry *entry1;
     struct proc_dir_entry *entry2;
+#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
     entry1 = create_proc_entry(PROC_SYSCALL_NAME, 0666, openafs_procfs);
 
     entry1->proc_fops = &afs_syscall_fops;
@@ -263,9 +271,18 @@ afsproc_init(void)
 static void
 afsproc_exit(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);
     remove_proc_entry(PROC_SYSCALL_NAME, openafs_procfs);
-    remove_proc_entry(PROC_FSDIRNAME, proc_root_fs);
 #if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL)
     if (ioctl32_done)
            unregister_ioctl32_conversion(VIOC_SYSCALL32);
index 1ecdf55ada743ff37676e9888e9f607fa78d1491..94280d72e099b6972a69b5dcc3bf078a18ae022a 100644 (file)
@@ -1005,3 +1005,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])