])
#
+# 2.6.33 no longer has ctl_name & strategy field in struct ctl_table.
+#
+AC_DEFUN([LIBCFS_SYSCTL_CTLNAME],
+[AC_MSG_CHECKING([if ctl_table has a ctl_name field])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+],[
+ struct ctl_table ct;
+ ct.ctl_name = sizeof(ct);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SYSCTL_CTLNAME, 1,
+ [ctl_table has ctl_name field])
+],[
+ AC_MSG_RESULT(no)
+])
+])
+
+#
# LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
#
# 2.6.34 adds __add_wait_queue_exclusive
LC_SHRINKER_WANT_SHRINK_PTR
LIBCFS_HAVE_OOM_H
LIBCFS_OOMADJ_IN_SIG
+# 2.6.33
+LIBCFS_SYSCTL_CTLNAME
# 2.6.34
LIBCFS_ADD_WAIT_QUEUE_EXCLUSIVE
# 2.6.40 fc15
# define cfs_put_cpu() put_cpu()
#endif /* get_cpu & put_cpu */
+#ifdef HAVE_SYSCTL_CTLNAME
+#define INIT_CTL_NAME(a) .ctl_name = a,
+#define INIT_STRATEGY(a) .strategy = a,
+#else
+#define INIT_CTL_NAME(a)
+#define INIT_STRATEGY(a)
+#endif
+
#endif
* to go via /proc for portability.
*/
{
- .ctl_name = PSDEV_DEBUG,
+ INIT_CTL_NAME(PSDEV_DEBUG)
.procname = "debug",
.data = &libcfs_debug,
.maxlen = sizeof(int),
.proc_handler = &proc_dobitmasks,
},
{
- .ctl_name = PSDEV_SUBSYSTEM_DEBUG,
+ INIT_CTL_NAME(PSDEV_SUBSYSTEM_DEBUG)
.procname = "subsystem_debug",
.data = &libcfs_subsystem_debug,
.maxlen = sizeof(int),
.proc_handler = &proc_dobitmasks,
},
{
- .ctl_name = PSDEV_PRINTK,
+ INIT_CTL_NAME(PSDEV_PRINTK)
.procname = "printk",
.data = &libcfs_printk,
.maxlen = sizeof(int),
.proc_handler = &proc_dobitmasks,
},
{
- .ctl_name = PSDEV_CONSOLE_RATELIMIT,
+ INIT_CTL_NAME(PSDEV_CONSOLE_RATELIMIT)
.procname = "console_ratelimit",
.data = &libcfs_console_ratelimit,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = PSDEV_CONSOLE_MAX_DELAY_CS,
+ INIT_CTL_NAME(PSDEV_CONSOLE_MAX_DELAY_CS)
.procname = "console_max_delay_centisecs",
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_console_max_delay_cs
},
{
- .ctl_name = PSDEV_CONSOLE_MIN_DELAY_CS,
+ INIT_CTL_NAME(PSDEV_CONSOLE_MIN_DELAY_CS)
.procname = "console_min_delay_centisecs",
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_console_min_delay_cs
},
{
- .ctl_name = PSDEV_CONSOLE_BACKOFF,
+ INIT_CTL_NAME(PSDEV_CONSOLE_BACKOFF)
.procname = "console_backoff",
.maxlen = sizeof(int),
.mode = 0644,
},
{
- .ctl_name = PSDEV_DEBUG_PATH,
+ INIT_CTL_NAME(PSDEV_DEBUG_PATH)
.procname = "debug_path",
.data = libcfs_debug_file_path_arr,
.maxlen = sizeof(libcfs_debug_file_path_arr),
},
{
- .ctl_name = PSDEV_LNET_UPCALL,
+ INIT_CTL_NAME(PSDEV_LNET_UPCALL)
.procname = "upcall",
.data = lnet_upcall,
.maxlen = sizeof(lnet_upcall),
.proc_handler = &proc_dostring,
},
{
- .ctl_name = PSDEV_LNET_DEBUG_LOG_UPCALL,
+ INIT_CTL_NAME(PSDEV_LNET_DEBUG_LOG_UPCALL)
.procname = "debug_log_upcall",
.data = lnet_debug_log_upcall,
.maxlen = sizeof(lnet_debug_log_upcall),
.proc_handler = &proc_dostring,
},
{
- .ctl_name = PSDEV_LNET_MEMUSED,
+ INIT_CTL_NAME(PSDEV_LNET_MEMUSED)
.procname = "lnet_memused",
.data = (int *)&libcfs_kmemory.counter,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = &proc_dointvec,
- .strategy = &sysctl_intvec,
+ INIT_STRATEGY(&sysctl_intvec)
},
{
- .ctl_name = PSDEV_LNET_CATASTROPHE,
+ INIT_CTL_NAME(PSDEV_LNET_CATASTROPHE)
.procname = "catastrophe",
.data = &libcfs_catastrophe,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = &proc_dointvec,
- .strategy = &sysctl_intvec,
+ INIT_STRATEGY(&sysctl_intvec)
},
{
- .ctl_name = PSDEV_LNET_PANIC_ON_LBUG,
+ INIT_CTL_NAME(PSDEV_LNET_PANIC_ON_LBUG)
.procname = "panic_on_lbug",
.data = &libcfs_panic_on_lbug,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec,
- .strategy = &sysctl_intvec,
+ INIT_STRATEGY(&sysctl_intvec)
},
{
- .ctl_name = PSDEV_LNET_DUMP_KERNEL,
+ INIT_CTL_NAME(PSDEV_LNET_DUMP_KERNEL)
.procname = "dump_kernel",
.maxlen = 256,
.mode = 0200,
.proc_handler = &proc_dump_kernel,
},
{
- .ctl_name = PSDEV_LNET_DAEMON_FILE,
+ INIT_CTL_NAME(PSDEV_LNET_DAEMON_FILE)
.procname = "daemon_file",
.mode = 0644,
.maxlen = 256,
.proc_handler = &proc_daemon_file,
},
{
- .ctl_name = PSDEV_LNET_DEBUG_MB,
+ INIT_CTL_NAME(PSDEV_LNET_DEBUG_MB)
.procname = "debug_mb",
.mode = 0644,
.proc_handler = &proc_debug_mb,
},
{
- .ctl_name = PSDEV_LNET_WATCHDOG_RATELIMIT,
+ INIT_CTL_NAME(PSDEV_LNET_WATCHDOG_RATELIMIT)
.procname = "watchdog_ratelimit",
.data = &libcfs_watchdog_ratelimit,
.maxlen = sizeof(int),
.extra1 = &min_watchdog_ratelimit,
.extra2 = &max_watchdog_ratelimit,
},
- { .ctl_name = PSDEV_LNET_FORCE_LBUG,
+ { INIT_CTL_NAME(PSDEV_LNET_FORCE_LBUG)
.procname = "force_lbug",
.data = NULL,
.maxlen = 0,
.proc_handler = &libcfs_force_lbug
},
{
- .ctl_name = PSDEV_LNET_FAIL_LOC,
+ INIT_CTL_NAME(PSDEV_LNET_FAIL_LOC)
.procname = "fail_loc",
.data = &cfs_fail_loc,
.maxlen = sizeof(cfs_fail_loc),
.proc_handler = &proc_fail_loc
},
{
- .ctl_name = PSDEV_LNET_FAIL_VAL,
+ INIT_CTL_NAME(PSDEV_LNET_FAIL_VAL)
.procname = "fail_val",
.data = &cfs_fail_val,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_dointvec
},
- {0}
+ {
+ INIT_CTL_NAME(0)
+ }
};
#ifdef CONFIG_SYSCTL
static cfs_sysctl_table_t top_table[] = {
{
- .ctl_name = CTL_LNET,
+ INIT_CTL_NAME(CTL_LNET)
.procname = "lnet",
.mode = 0555,
.data = NULL,
.child = lnet_table,
},
{
- .ctl_name = 0
+ INIT_CTL_NAME(0)
}
};
* to go via /proc for portability.
*/
{
- .ctl_name = PSDEV_LNET_STATS,
+ INIT_CTL_NAME(PSDEV_LNET_STATS)
.procname = "stats",
.mode = 0644,
.proc_handler = &proc_lnet_stats,
},
{
- .ctl_name = PSDEV_LNET_ROUTES,
+ INIT_CTL_NAME(PSDEV_LNET_ROUTES)
.procname = "routes",
.mode = 0444,
.proc_handler = &proc_lnet_routes,
},
{
- .ctl_name = PSDEV_LNET_ROUTERS,
+ INIT_CTL_NAME(PSDEV_LNET_ROUTERS)
.procname = "routers",
.mode = 0444,
.proc_handler = &proc_lnet_routers,
},
{
- .ctl_name = PSDEV_LNET_PEERS,
+ INIT_CTL_NAME(PSDEV_LNET_PEERS)
.procname = "peers",
.mode = 0444,
.proc_handler = &proc_lnet_peers,
},
{
- .ctl_name = PSDEV_LNET_PEERS,
+ INIT_CTL_NAME(PSDEV_LNET_PEERS)
.procname = "buffers",
.mode = 0444,
.proc_handler = &proc_lnet_buffers,
},
{
- .ctl_name = PSDEV_LNET_NIS,
+ INIT_CTL_NAME(PSDEV_LNET_NIS)
.procname = "nis",
.mode = 0444,
.proc_handler = &proc_lnet_nis,
},
- {0}
+ {
+ INIT_CTL_NAME(0)
+ }
};
static cfs_sysctl_table_t top_table[] = {
{
- .ctl_name = CTL_LNET,
+ INIT_CTL_NAME(CTL_LNET)
.procname = "lnet",
.mode = 0555,
.data = NULL,
.child = lnet_table,
},
{
- .ctl_name = 0
+ INIT_CTL_NAME(0)
}
};
#ifdef CONFIG_SYSCTL
static cfs_sysctl_table_t obd_table[] = {
{
- .ctl_name = OBD_TIMEOUT,
+ INIT_CTL_NAME(OBD_TIMEOUT)
.procname = "timeout",
.data = &obd_timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_set_timeout
},
{
- .ctl_name = OBD_DEBUG_PEER_ON_TIMEOUT,
+ INIT_CTL_NAME(OBD_DEBUG_PEER_ON_TIMEOUT)
.procname = "debug_peer_on_timeout",
.data = &obd_debug_peer_on_timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = OBD_DUMP_ON_TIMEOUT,
+ INIT_CTL_NAME(OBD_DUMP_ON_TIMEOUT)
.procname = "dump_on_timeout",
.data = &obd_dump_on_timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = OBD_DUMP_ON_EVICTION,
+ INIT_CTL_NAME(OBD_DUMP_ON_EVICTION)
.procname = "dump_on_eviction",
.data = &obd_dump_on_eviction,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = OBD_MEMUSED,
+ INIT_CTL_NAME(OBD_MEMUSED)
.procname = "memused",
.data = NULL,
.maxlen = 0,
.proc_handler = &proc_memory_alloc
},
{
- .ctl_name = OBD_PAGESUSED,
+ INIT_CTL_NAME(OBD_PAGESUSED)
.procname = "pagesused",
.data = NULL,
.maxlen = 0,
.proc_handler = &proc_pages_alloc
},
{
- .ctl_name = OBD_MAXMEMUSED,
+ INIT_CTL_NAME(OBD_MAXMEMUSED)
.procname = "memused_max",
.data = NULL,
.maxlen = 0,
.proc_handler = &proc_mem_max
},
{
- .ctl_name = OBD_MAXPAGESUSED,
+ INIT_CTL_NAME(OBD_MAXPAGESUSED)
.procname = "pagesused_max",
.data = NULL,
.maxlen = 0,
.proc_handler = &proc_pages_max
},
{
- .ctl_name = OBD_LDLM_TIMEOUT,
+ INIT_CTL_NAME(OBD_LDLM_TIMEOUT)
.procname = "ldlm_timeout",
.data = &ldlm_timeout,
.maxlen = sizeof(int),
},
#ifdef RANDOM_FAIL_ALLOC
{
- .ctl_name = OBD_ALLOC_FAIL_RATE,
+ INIT_CTL_NAME(OBD_ALLOC_FAIL_RATE)
.procname = "alloc_fail_rate",
.data = &obd_alloc_fail_rate,
.maxlen = sizeof(int),
},
#endif
{
- .ctl_name = OBD_MAX_DIRTY_PAGES,
+ INIT_CTL_NAME(OBD_MAX_DIRTY_PAGES)
.procname = "max_dirty_mb",
.data = &obd_max_dirty_pages,
.maxlen = sizeof(int),
.proc_handler = &proc_max_dirty_pages_in_mb
},
{
- .ctl_name = OBD_AT_MIN,
+ INIT_CTL_NAME(OBD_AT_MIN)
.procname = "at_min",
.data = &at_min,
.maxlen = sizeof(int),
.proc_handler = &proc_at_min
},
{
- .ctl_name = OBD_AT_MAX,
+ INIT_CTL_NAME(OBD_AT_MAX)
.procname = "at_max",
.data = &at_max,
.maxlen = sizeof(int),
.proc_handler = &proc_at_max
},
{
- .ctl_name = OBD_AT_EXTRA,
+ INIT_CTL_NAME(OBD_AT_EXTRA)
.procname = "at_extra",
.data = &at_extra,
.maxlen = sizeof(int),
.proc_handler = &proc_at_extra
},
{
- .ctl_name = OBD_AT_EARLY_MARGIN,
+ INIT_CTL_NAME(OBD_AT_EARLY_MARGIN)
.procname = "at_early_margin",
.data = &at_early_margin,
.maxlen = sizeof(int),
.proc_handler = &proc_at_early_margin
},
{
- .ctl_name = OBD_AT_HISTORY,
+ INIT_CTL_NAME(OBD_AT_HISTORY)
.procname = "at_history",
.data = &at_history,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = &proc_at_history
},
- { 0 }
+ { INIT_CTL_NAME(0) }
};
static cfs_sysctl_table_t parent_table[] = {
{
- .ctl_name = OBD_SYSCTL,
+ INIT_CTL_NAME(OBD_SYSCTL)
.procname = "lustre",
.data = NULL,
.maxlen = 0,
.mode = 0555,
.child = obd_table
},
- {0}
+ { INIT_CTL_NAME(0) }
};
#endif