From: Marc Dionne Date: Mon, 9 Jun 2008 04:39:42 +0000 (+0000) Subject: STABLE14-linux-2626-support-20080608 X-Git-Tag: openafs-stable-1_4_8pre1~76 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=7b066c21a37423cff0456e35758dcd9980236c9b;p=packages%2Fo%2Fopenafs.git STABLE14-linux-2626-support-20080608 LICENSE IPL10 FIXES 101091 add 2.6.26 support (cherry picked from commit bed3e31ca4da711649d6c6b9ab828515cd3418fc) --- diff --git a/acinclude.m4 b/acinclude.m4 index dda5403be..767b38253 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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 diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c index 7562544c2..6ea42e32f 100644 --- a/src/afs/LINUX/osi_groups.c +++ b/src/afs/LINUX/osi_groups.c @@ -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 diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c index b2575dc7a..edf29dbdd 100644 --- a/src/afs/LINUX/osi_module.c +++ b/src/afs/LINUX/osi_module.c @@ -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); diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index 1ecdf55ad..94280d72e 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -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 ], +[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 ], +[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]) +