From: Derrick Brashear Date: Wed, 28 Aug 2002 05:30:48 +0000 (+0000) Subject: STABLE12-linux-tasklist-lock-export-detection-20020829 X-Git-Tag: openafs-stable-1_2_7~21 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=9d623467959ced4137dae2d113103c7b9acf7e51;p=packages%2Fo%2Fopenafs.git STABLE12-linux-tasklist-lock-export-detection-20020829 if you don't have a versioned kernel, so sorry. (cherry picked from commit efd9a7e32dc793c45f056be5c796f25db429a054) --- diff --git a/acconfig.h b/acconfig.h index cba9aa44b..f97e3b1ab 100644 --- a/acconfig.h +++ b/acconfig.h @@ -34,6 +34,7 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg } #undef STRUCT_INODE_HAS_I_TRUNCATE_SEM #undef STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS #undef STRUCT_INODE_HAS_I_DEVICES +#undef EXPORTED_TASKLIST_LOCK #undef ssize_t /* glue for RedHat kernel bug */ diff --git a/acinclude.m4 b/acinclude.m4 index d1d7daf8e..f33e0377c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -140,8 +140,12 @@ case $system in LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS LINUX_FS_STRUCT_INODE_HAS_I_DEVICES LINUX_INODE_SETATTR_RETURN_TYPE + LINUX_EXPORTS_TASKLIST_LOCK LINUX_NEED_RHCONFIG LINUX_WHICH_MODULES + if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then + AC_DEFINE(EXPORTED_TASKLIST_LOCK) + fi if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then AC_DEFINE(INODE_SETATTR_NOT_VOID) fi diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index 023be0926..6064c5425 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -780,13 +780,17 @@ void afs_osi_TraverseProcTable() { struct task_struct *p; +#ifdef EXPORTED_TASKLIST_LOCK read_lock(&tasklist_lock); +#endif for_each_task(p) if (p->pid) { if (p->state & TASK_ZOMBIE) continue; afs_GCPAGs_perproc_func(p); } +#ifdef EXPORTED_TASKLIST_LOCK read_unlock(&tasklist_lock); +#endif } #endif