]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux: deal with ctl_name removal
authorMarc Dionne <marc.c.dionne@gmail.com>
Thu, 10 Dec 2009 00:06:18 +0000 (19:06 -0500)
committerDerrick Brashear <shadow|account-1000005@unknown>
Thu, 10 Dec 2009 00:49:18 +0000 (16:49 -0800)
The binary sysctl interface will be removed in kernel 2.6.33 and
ctl_name will be dropped from the ctl_table structure.
Make the code that uses ctl_name conditional on a configure test.

Change-Id: Iba0f107f299c6515e4e560d7596e6187bd68e399
Reviewed-on: http://gerrit.openafs.org/904
Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
acinclude.m4
src/afs/LINUX/osi_sysctl.c
src/cf/linux-test4.m4

index 5fc6e30274e58d95c374e2489e591c63923a3881..01c2e1716041fb1fd722395837e1ee8cbd2b226c 100644 (file)
@@ -975,6 +975,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_INIT_WORK_HAS_DATA
                 LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
                 LINUX_SYSCTL_TABLE_CHECKING
+                LINUX_STRUCT_CTL_TABLE_HAS_CTL_NAME
                 LINUX_HAVE_IGET
                 if test "x$ac_cv_linux_have_iget" = "xno"; then
                   AC_DEFINE([LINUX_USE_FH], 1, [define to use linux file handles for cache files])
index 4ee95a4b1492b2d397adea4d0605f79fcf3b91ea..a2747adf13efadea4bc109c3743e32c22205e363 100644 (file)
@@ -36,10 +36,12 @@ static struct ctl_table_header *afs_sysctl = NULL;
 
 static ctl_table afs_sysctl_table[] = {
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 1, 
+#endif
 #endif
        .procname       = "hm_retry_RO",
        .data           = &hm_retry_RO, 
@@ -48,10 +50,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
         .ctl_name      = 2, 
+#endif
 #endif
         .procname      = "hm_retry_RW",
         .data          = &hm_retry_RW,
@@ -60,10 +64,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 3, 
+#endif
 #endif
        .procname       = "hm_retry_int",
        .data           = &hm_retry_int, 
@@ -72,10 +78,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 4, 
+#endif
 #endif
        .procname       = "GCPAGs",
        .data           = &afs_gcpags, 
@@ -84,10 +92,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 5, 
+#endif
 #endif
        .procname       = "rx_deadtime",
        .data           = &afs_rx_deadtime, 
@@ -96,10 +106,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 6, 
+#endif
 #endif
        .procname       = "bkVolPref",
        .data           = &afs_bkvolpref, 
@@ -108,10 +120,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 7, 
+#endif
 #endif
        .procname       = "afs_blocksUsed",
        .data           = &afs_blocksUsed,
@@ -120,10 +134,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 8, 
+#endif
 #endif
        .procname       = "afs_blocksUsed_0",
        .data           = &afs_blocksUsed_0,
@@ -132,10 +148,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 9, 
+#endif
 #endif
        .procname       = "afs_blocksUsed_1",
        .data           = &afs_blocksUsed_1, 
@@ -144,10 +162,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 10, 
+#endif
 #endif
        .procname       = "afs_blocksUsed_2",
        .data           = &afs_blocksUsed_2, 
@@ -156,10 +176,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 11, 
+#endif
 #endif
        .procname       = "afs_pct1",
        .data           = &afs_pct1, 
@@ -168,10 +190,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 12, 
+#endif
 #endif
        .procname       = "afs_pct2",
        .data           = &afs_pct2, 
@@ -180,10 +204,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 13,
+#endif
 #endif
        .procname       = "afs_cacheBlocks",
        .data           = &afs_cacheBlocks,
@@ -192,10 +218,12 @@ static ctl_table afs_sysctl_table[] = {
        .proc_handler   = &proc_dointvec
     },
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 14, 
+#endif
 #endif
        .procname       = "md5inum",
        .data           = &afs_new_inum, 
@@ -208,10 +236,12 @@ static ctl_table afs_sysctl_table[] = {
 
 static ctl_table fs_sysctl_table[] = {
     {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(SYSCTL_TABLE_CHECKING)
        .ctl_name       = CTL_UNNUMBERED, 
 #else
        .ctl_name       = 1, 
+#endif
 #endif
        .procname       = "afs", 
        .mode           = 0555, 
@@ -223,10 +253,12 @@ static ctl_table fs_sysctl_table[] = {
 int
 osi_sysctl_init()
 {
+#if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
 #if defined(REGISTER_SYSCTL_TABLE_NOFLAG)
     afs_sysctl = register_sysctl_table(fs_sysctl_table);
 #else
     afs_sysctl = register_sysctl_table(fs_sysctl_table, 0);
+#endif
 #endif
     if (!afs_sysctl)
        return -1;
index bd30b75cb68a06825f62bf20c48a07fb113d0973..4df6f5125297bdd3706219d52f6e2d29c7656c2c 100644 (file)
@@ -1323,3 +1323,17 @@ _sb.s_bdi= NULL;],
     AC_DEFINE([STRUCT_SUPER_BLOCK_HAS_S_BDI], 1, [define if struct super_block has an s_bdi member])
   fi])
 
+AC_DEFUN([LINUX_STRUCT_CTL_TABLE_HAS_CTL_NAME], [
+  AC_MSG_CHECKING([if struct ctl_table has ctl_name])
+  AC_CACHE_VAL([ac_cv_linux_struct_ctl_table_has_ctl_name], [
+    AC_TRY_KBUILD(
+[#include <linux/sysctl.h>],
+[struct ctl_table _t;
+_t.ctl_name = 0;],
+      ac_cv_linux_struct_ctl_table_has_ctl_name=yes,
+      ac_cv_linux_struct_ctl_table_has_ctl_name=no)])
+  AC_MSG_RESULT($ac_cv_linux_struct_ctl_table_has_ctl_name)
+  if test "x$ac_cv_linux_struct_ctl_table_has_ctl_name" = "xyes"; then
+    AC_DEFINE([STRUCT_CTL_TABLE_HAS_CTL_NAME], 1, [define if struct ctl_table has a ctl_name member])
+  fi])
+