]> granicus.if.org Git - spl/commitdiff
Remove proc_handler() wrapper
authorBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 2 Oct 2014 18:15:19 +0000 (14:15 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 17 Oct 2014 22:11:52 +0000 (15:11 -0700)
As of Linux 2.6.32 the proc handlers where updated to expect only
five arguments.  Therefore there is no longer a need to maintain
this compatibility code and this infrastructure can be simplified.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
config/spl-build.m4
include/linux/Makefile.am
include/linux/sysctl_compat.h [deleted file]
include/sys/types.h
module/spl/spl-proc.c

index 49cbfb624ee9793392ccbaceb979c75b97af7c1f..253a51390ac769eb3fa9ac02b49bd949749acbe6 100644 (file)
@@ -37,7 +37,6 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
        SPL_AC_FS_STRUCT_SPINLOCK
        SPL_AC_KUIDGID_T
        SPL_AC_PUT_TASK_STRUCT
-       SPL_AC_5ARGS_PROC_HANDLER
        SPL_AC_KVASPRINTF
        SPL_AC_EXPORTED_RWSEM_IS_LOCKED
        SPL_AC_KERNEL_FALLOCATE
@@ -1181,25 +1180,6 @@ AC_DEFUN([SPL_AC_PUT_TASK_STRUCT],
        ])
 ])
 
-dnl #
-dnl # 2.6.32 API change,
-dnl # Unused 'struct file *' removed from prototype.
-dnl #
-AC_DEFUN([SPL_AC_5ARGS_PROC_HANDLER], [
-       AC_MSG_CHECKING([whether proc_handler() wants 5 args])
-       SPL_LINUX_TRY_COMPILE([
-               #include <linux/sysctl.h>
-       ],[
-               proc_dostring(NULL, 0, NULL, NULL, NULL);
-       ],[
-               AC_MSG_RESULT(yes)
-               AC_DEFINE(HAVE_5ARGS_PROC_HANDLER, 1,
-                         [proc_handler() wants 5 args])
-       ],[
-               AC_MSG_RESULT(no)
-       ])
-])
-
 dnl #
 dnl # 2.6.x API change,
 dnl # kvasprintf() function added.
index bbd422770359781f5753e96c7a0c3e1a533a671f..42215949737a3f33791d27e3ba872496cd46538b 100644 (file)
@@ -11,7 +11,6 @@ KERNEL_H = \
        $(top_srcdir)/include/linux/module_compat.h \
        $(top_srcdir)/include/linux/proc_compat.h \
        $(top_srcdir)/include/linux/rwsem_compat.h \
-       $(top_srcdir)/include/linux/sysctl_compat.h \
        $(top_srcdir)/include/linux/wait_compat.h \
        $(top_srcdir)/include/linux/zlib_compat.h
 
diff --git a/include/linux/sysctl_compat.h b/include/linux/sysctl_compat.h
deleted file mode 100644 (file)
index bc22653..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*****************************************************************************\
- *  Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC.
- *  Copyright (C) 2007 The Regents of the University of California.
- *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
- *  UCRL-CODE-235197
- *
- *  This file is part of the SPL, Solaris Porting Layer.
- *  For details, see <http://zfsonlinux.org/>.
- *
- *  The SPL is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the
- *  Free Software Foundation; either version 2 of the License, or (at your
- *  option) any later version.
- *
- *  The SPL is distributed in the hope that it will be useful, but WITHOUT
- *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- *  for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with the SPL.  If not, see <http://www.gnu.org/licenses/>.
-\*****************************************************************************/
-
-#ifndef _SPL_SYSCTL_COMPAT_H
-#define _SPL_SYSCTL_COMPAT_H
-
-#include <linux/sysctl.h>
-
-/* proc_handler() / proc_do* API changes
- * 2.6.x  - 2.6.31: 6 args, prototype includes 'struct file *'
- * 2.6.32 - 2.6.y:  5 args, removed unused 'struct file *' from prototype
- *
- * Generic SPL_PROC_HANDLER() macro should be used for correct prototypes.
- * It will define the following function arguments which can and should be
- * used with the spl_proc_* helper macros.
- *
- *   struct ctl_table *table,
- *   int write,
- *   struct file *filp [2.6.31 and earlier kernels],
- *   void __user *buffer,
- *   size_t *lenp,
- *   loff_t *ppos,
- */
-#ifdef HAVE_5ARGS_PROC_HANDLER
-
-#define SPL_PROC_HANDLER(proc_handler)                                       \
-static int                                                                   \
-proc_handler(struct ctl_table *table, int write,                             \
-             void __user *buffer, size_t *lenp, loff_t *ppos)
-
-#define spl_proc_dostring(table, write, filp, buffer, lenp, ppos)            \
-       proc_dostring(table, write, buffer, lenp, ppos)
-#define spl_proc_dointvec(table, write, filp, buffer, lenp, ppos)            \
-       proc_dointvec(table, write, buffer, lenp, ppos)
-#define spl_proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos)     \
-       proc_dointvec_minmax(table, write, buffer, lenp, ppos)
-#define spl_proc_dointvec_jiffies(table, write, filp, buffer, lenp, ppos)    \
-       proc_dointvec_jiffies(table, write, buffer, lenp, ppos)
-#define spl_proc_dointvec_userhz_jiffies(table,write,filp,buffer,lenp,ppos)  \
-       proc_dointvec_userhz_jiffies(table, write, buffer, lenp, ppos)
-#define spl_proc_dointvec_ms_jiffies(table,write,filp,buffer,lenp,ppos)      \
-       proc_dointvec_ms_jiffies(table, write, buffer, lenp, ppos)
-#define spl_proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos)   \
-       proc_doulongvec_minmax(table, write, buffer, lenp, ppos)
-#define spl_proc_doulongvec_ms_jiffies_minmax(table,write,filp,buffer,lenp,ppos)\
-       proc_doulongvec_ms_jiffies_minmax(table, write, buffer, lenp, ppos)
-
-#else /* HAVE_5ARGS_PROC_HANDLER */
-
-#define SPL_PROC_HANDLER(proc_handler)                                       \
-static int                                                                   \
-proc_handler(struct ctl_table *table, int write, struct file *filp,          \
-             void __user *buffer, size_t *lenp, loff_t *ppos)
-
-#define spl_proc_dostring(table, write, filp, buffer, lenp, ppos)            \
-       proc_dostring(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_dointvec(table, write, filp, buffer, lenp, ppos)            \
-       proc_dointvec(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos)     \
-       proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_dointvec_jiffies(table, write, filp, buffer, lenp, ppos)    \
-       proc_dointvec_jiffies(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_dointvec_userhz_jiffies(table,write,filp,buffer,lenp,ppos)  \
-       proc_dointvec_userhz_jiffies(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_dointvec_ms_jiffies(table, write, filp, buffer, lenp, ppos) \
-       proc_dointvec_ms_jiffies(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos)        \
-       proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos)
-#define spl_proc_doulongvec_ms_jiffies_minmax(table,write,filp,buffer,lenp,ppos)  \
-       proc_doulongvec_ms_jiffies_minmax(table,write,filp,buffer,lenp,ppos)
-
-
-#endif /* HAVE_5ARGS_PROC_HANDLER */
-
-#endif /* _SPL_SYSCTL_COMPAT_H */
index 2745db9c762b2f4a99630eaed5052d9e0556aed7..b7b8b7bfc305b27d7137f9f5061f4d6e7ea66625 100644 (file)
@@ -32,7 +32,6 @@
 #include <linux/list_compat.h>
 #include <linux/bitops_compat.h>
 #include <linux/module_compat.h>
-#include <linux/sysctl_compat.h>
 #include <linux/proc_compat.h>
 #include <linux/math64_compat.h>
 #include <linux/zlib_compat.h>
index 42733e0d732426a6f1619616a87604c18fccdde2..6ecc0c31c3b4f239507f6eb31ffc8623ba0a61e5 100644 (file)
@@ -111,7 +111,9 @@ proc_copyout_string(char *ubuffer, int ubuffer_size,
 }
 
 #ifdef DEBUG_LOG
-SPL_PROC_HANDLER(proc_dobitmasks)
+static int
+proc_dobitmasks(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         unsigned long *mask = table->data;
         int is_subsys = (mask == &spl_debug_subsys) ? 1 : 0;
@@ -152,7 +154,9 @@ SPL_PROC_HANDLER(proc_dobitmasks)
         SRETURN(rc);
 }
 
-SPL_PROC_HANDLER(proc_debug_mb)
+static int
+proc_debug_mb(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         char str[32];
         int rc, len;
@@ -181,7 +185,9 @@ SPL_PROC_HANDLER(proc_debug_mb)
         SRETURN(rc);
 }
 
-SPL_PROC_HANDLER(proc_dump_kernel)
+static int
+proc_dump_kernel(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
        SENTRY;
 
@@ -195,7 +201,9 @@ SPL_PROC_HANDLER(proc_dump_kernel)
         SRETURN(0);
 }
 
-SPL_PROC_HANDLER(proc_force_bug)
+static int
+proc_force_bug(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
        SENTRY;
 
@@ -207,7 +215,9 @@ SPL_PROC_HANDLER(proc_force_bug)
        SRETURN(0);
 }
 
-SPL_PROC_HANDLER(proc_console_max_delay_cs)
+static int
+proc_console_max_delay_cs(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int rc, max_delay_cs;
         spl_ctl_table dummy = *table;
@@ -219,7 +229,7 @@ SPL_PROC_HANDLER(proc_console_max_delay_cs)
 
         if (write) {
                 max_delay_cs = 0;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
                 if (rc < 0)
                         SRETURN(rc);
 
@@ -233,13 +243,15 @@ SPL_PROC_HANDLER(proc_console_max_delay_cs)
                 spl_console_max_delay = d;
         } else {
                 max_delay_cs = (spl_console_max_delay * 100) / HZ;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
         }
 
         SRETURN(rc);
 }
 
-SPL_PROC_HANDLER(proc_console_min_delay_cs)
+static int
+proc_console_min_delay_cs(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int rc, min_delay_cs;
         spl_ctl_table dummy = *table;
@@ -251,7 +263,7 @@ SPL_PROC_HANDLER(proc_console_min_delay_cs)
 
         if (write) {
                 min_delay_cs = 0;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
                 if (rc < 0)
                         SRETURN(rc);
 
@@ -265,13 +277,15 @@ SPL_PROC_HANDLER(proc_console_min_delay_cs)
                 spl_console_min_delay = d;
         } else {
                 min_delay_cs = (spl_console_min_delay * 100) / HZ;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
         }
 
         SRETURN(rc);
 }
 
-SPL_PROC_HANDLER(proc_console_backoff)
+static int
+proc_console_backoff(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int rc, backoff;
         spl_ctl_table dummy = *table;
@@ -282,7 +296,7 @@ SPL_PROC_HANDLER(proc_console_backoff)
 
         if (write) {
                 backoff = 0;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
                 if (rc < 0)
                         SRETURN(rc);
 
@@ -292,7 +306,7 @@ SPL_PROC_HANDLER(proc_console_backoff)
                 spl_console_backoff = backoff;
         } else {
                 backoff = spl_console_backoff;
-                rc = spl_proc_dointvec(&dummy,write,filp,buffer,lenp,ppos);
+                rc = proc_dointvec(&dummy, write, buffer, lenp, ppos);
         }
 
         SRETURN(rc);
@@ -300,7 +314,9 @@ SPL_PROC_HANDLER(proc_console_backoff)
 #endif /* DEBUG_LOG */
 
 #ifdef DEBUG_KMEM
-SPL_PROC_HANDLER(proc_domemused)
+static int
+proc_domemused(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int rc = 0;
         unsigned long min = 0, max = ~0, val;
@@ -320,14 +336,15 @@ SPL_PROC_HANDLER(proc_domemused)
 # else
                 val = atomic_read((atomic_t *)table->data);
 # endif /* HAVE_ATOMIC64_T */
-                rc = spl_proc_doulongvec_minmax(&dummy, write, filp,
-                                                buffer, lenp, ppos);
+                rc = proc_doulongvec_minmax(&dummy, write, buffer, lenp, ppos);
         }
 
         SRETURN(rc);
 }
 
-SPL_PROC_HANDLER(proc_doslab)
+static int
+proc_doslab(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int rc = 0;
         unsigned long min = 0, max = ~0, val = 0, mask;
@@ -367,22 +384,23 @@ SPL_PROC_HANDLER(proc_doslab)
                 }
 
                 up_read(&spl_kmem_cache_sem);
-                rc = spl_proc_doulongvec_minmax(&dummy, write, filp,
-                                                buffer, lenp, ppos);
+                rc = proc_doulongvec_minmax(&dummy, write, buffer, lenp, ppos);
         }
 
         SRETURN(rc);
 }
 #endif /* DEBUG_KMEM */
 
-SPL_PROC_HANDLER(proc_dohostid)
+static int
+proc_dohostid(struct ctl_table *table, int write,
+    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
         int len, rc = 0;
         char *end, str[32];
         SENTRY;
 
         if (write) {
-                /* We can't use spl_proc_doulongvec_minmax() in the write
+                /* We can't use proc_doulongvec_minmax() in the write
                  * case here because hostid while a hex value has no
                  * leading 0x which confuses the helper function. */
                 rc = proc_copyin_string(str, sizeof(str), buffer, *lenp);