From 886801b069fab1e6fc94003221dcfe18e05ac376 Mon Sep 17 00:00:00 2001 From: Marc Dionne Date: Wed, 9 Dec 2009 19:06:18 -0500 Subject: [PATCH] Linux: deal with ctl_name removal 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 Reviewed-by: Derrick Brashear --- acinclude.m4 | 1 + src/afs/LINUX/osi_sysctl.c | 32 ++++++++++++++++++++++++++++++++ src/cf/linux-test4.m4 | 14 ++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 5fc6e3027..01c2e1716 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -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]) diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c index 4ee95a4b1..a2747adf1 100644 --- a/src/afs/LINUX/osi_sysctl.c +++ b/src/afs/LINUX/osi_sysctl.c @@ -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; diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index bd30b75cb..4df6f5125 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -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 ], +[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]) + -- 2.39.5