Whamcloud - gitweb
LU-506 FC15: ctl_name & strategy removed from ctl_table.
[fs/lustre-release.git] / libcfs / libcfs / linux / linux-proc.c
index 220c671..018643a 100644 (file)
@@ -107,6 +107,8 @@ enum {
         PSDEV_LNET_DEBUG_LOG_UPCALL, /* debug log upcall script */
         PSDEV_LNET_WATCHDOG_RATELIMIT,  /* ratelimit watchdog messages  */
         PSDEV_LNET_FORCE_LBUG,    /* hook to force an LBUG */
+        PSDEV_LNET_FAIL_LOC,      /* control test failures instrumentation */
+        PSDEV_LNET_FAIL_VAL,      /* userdata for fail loc */
 };
 #else
 #define CTL_LNET                        CTL_UNNUMBERED
@@ -129,9 +131,10 @@ enum {
 #define PSDEV_LNET_DEBUG_LOG_UPCALL     CTL_UNNUMBERED
 #define PSDEV_LNET_WATCHDOG_RATELIMIT   CTL_UNNUMBERED
 #define PSDEV_LNET_FORCE_LBUG           CTL_UNNUMBERED
+#define PSDEV_LNET_FAIL_LOC             CTL_UNNUMBERED
+#define PSDEV_LNET_FAIL_VAL             CTL_UNNUMBERED
 #endif
 
-
 int
 proc_call_handler(void *data, int write,
                   loff_t *ppos, void *buffer, size_t *lenp,
@@ -342,13 +345,24 @@ int LL_PROC_PROTO(libcfs_force_lbug)
         return 0;
 }
 
+int LL_PROC_PROTO(proc_fail_loc)
+{
+        int rc;
+        long old_fail_loc = cfs_fail_loc;
+
+        rc = ll_proc_dolongvec(table, write, filp, buffer, lenp, ppos);
+        if (old_fail_loc != cfs_fail_loc)
+                cfs_waitq_signal(&cfs_race_waitq);
+        return rc;
+}
+
 static cfs_sysctl_table_t lnet_table[] = {
         /*
          * NB No .strategy entries have been provided since sysctl(8) prefers
          * to go via /proc for portability.
          */
         {
-                .ctl_name = PSDEV_DEBUG,
+                INIT_CTL_NAME(PSDEV_DEBUG)
                 .procname = "debug",
                 .data     = &libcfs_debug,
                 .maxlen   = sizeof(int),
@@ -356,7 +370,7 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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),
@@ -364,7 +378,7 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .proc_handler = &proc_dobitmasks,
         },
         {
-                .ctl_name = PSDEV_PRINTK,
+                INIT_CTL_NAME(PSDEV_PRINTK)
                 .procname = "printk",
                 .data     = &libcfs_printk,
                 .maxlen   = sizeof(int),
@@ -372,7 +386,7 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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),
@@ -380,21 +394,21 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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,
@@ -402,7 +416,7 @@ static cfs_sysctl_table_t lnet_table[] = {
         },
 
         {
-                .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),
@@ -411,7 +425,7 @@ static cfs_sysctl_table_t lnet_table[] = {
         },
 
         {
-                .ctl_name = PSDEV_LNET_UPCALL,
+                INIT_CTL_NAME(PSDEV_LNET_UPCALL)
                 .procname = "upcall",
                 .data     = lnet_upcall,
                 .maxlen   = sizeof(lnet_upcall),
@@ -419,7 +433,7 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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),
@@ -427,54 +441,54 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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),
@@ -483,20 +497,38 @@ static cfs_sysctl_table_t lnet_table[] = {
                 .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,
                 .mode     = 0200,
                 .proc_handler = &libcfs_force_lbug
         },
-        {0}
+        {
+                INIT_CTL_NAME(PSDEV_LNET_FAIL_LOC)
+                .procname = "fail_loc",
+                .data     = &cfs_fail_loc,
+                .maxlen   = sizeof(cfs_fail_loc),
+                .mode     = 0644,
+                .proc_handler = &proc_fail_loc
+        },
+        {
+                INIT_CTL_NAME(PSDEV_LNET_FAIL_VAL)
+                .procname = "fail_val",
+                .data     = &cfs_fail_val,
+                .maxlen   = sizeof(int),
+                .mode     = 0644,
+                .proc_handler = &proc_dointvec
+        },
+        {
+                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,
@@ -504,7 +536,7 @@ static cfs_sysctl_table_t top_table[] = {
                 .child    = lnet_table,
         },
         {
-                .ctl_name = 0
+                INIT_CTL_NAME(0)
         }
 };