Whamcloud - gitweb
LU-8836 lprocfs: move lprocfs_stats_[un]lock to a source file
[fs/lustre-release.git] / lustre / include / lprocfs_status.h
index 5b62f8f..25e0319 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
  *
  * lustre/include/lprocfs_status.h
  *
- * Top level header file for LProc SNMP
+ * Top level header file for LProc
  *
  * Author: Hariharan Thantry thantry@users.sourceforge.net
  */
-#ifndef _LPROCFS_SNMP_H
-#define _LPROCFS_SNMP_H
+#ifndef _LPROCFS_STATUS_H
+#define _LPROCFS_STATUS_H
+
+#include <linux/fs.h>
+#include <linux/proc_fs.h>
+#include <linux/rwsem.h>
+#include <linux/spinlock.h>
+#include <linux/seq_file.h>
 
 #include <lustre/lustre_idl.h>
-#include <libcfs/params_tree.h>
 
-#ifndef HAVE_ONLY_PROCFS_SEQ
 struct lprocfs_vars {
        const char                      *name;
-       read_proc_t                     *read_fptr;
-       write_proc_t                    *write_fptr;
-       void                            *data;
-       const struct file_operations    *fops;
-       /**
-        * /proc file mode.
-        */
-       mode_t                          proc_mode;
-};
-
-struct lprocfs_static_vars {
-       struct lprocfs_vars *module_vars;
-       struct lprocfs_vars *obd_vars;
-};
-
-#endif
-
-struct lprocfs_seq_vars {
-       const char                      *name;
        const struct file_operations    *fops;
        void                            *data;
        /**
@@ -173,11 +154,13 @@ struct lprocfs_counter {
 #define lc_sum_irq     lc_array_sum[1]
 
 struct lprocfs_percpu {
-        struct lprocfs_counter lp_cntr[0];
+       struct lprocfs_counter lp_cntr[0];
 };
 
-#define LPROCFS_GET_NUM_CPU 0x0001
-#define LPROCFS_GET_SMP_ID  0x0002
+enum lprocfs_stats_lock_ops {
+       LPROCFS_GET_NUM_CPU     = 0x0001, /* number allocated per-CPU stats */
+       LPROCFS_GET_SMP_ID      = 0x0002, /* current stat to be updated */
+};
 
 enum lprocfs_stats_flags {
        LPROCFS_STATS_FLAG_NONE     = 0x0000, /* per cpu counter */
@@ -187,13 +170,13 @@ enum lprocfs_stats_flags {
 };
 
 enum lprocfs_fields_flags {
-        LPROCFS_FIELDS_FLAGS_CONFIG     = 0x0001,
-        LPROCFS_FIELDS_FLAGS_SUM        = 0x0002,
-        LPROCFS_FIELDS_FLAGS_MIN        = 0x0003,
-        LPROCFS_FIELDS_FLAGS_MAX        = 0x0004,
-        LPROCFS_FIELDS_FLAGS_AVG        = 0x0005,
-        LPROCFS_FIELDS_FLAGS_SUMSQUARE  = 0x0006,
-        LPROCFS_FIELDS_FLAGS_COUNT      = 0x0007,
+       LPROCFS_FIELDS_FLAGS_CONFIG     = 0x0001,
+       LPROCFS_FIELDS_FLAGS_SUM        = 0x0002,
+       LPROCFS_FIELDS_FLAGS_MIN        = 0x0003,
+       LPROCFS_FIELDS_FLAGS_MAX        = 0x0004,
+       LPROCFS_FIELDS_FLAGS_AVG        = 0x0005,
+       LPROCFS_FIELDS_FLAGS_SUMSQUARE  = 0x0006,
+       LPROCFS_FIELDS_FLAGS_COUNT      = 0x0007,
 };
 
 struct lprocfs_stats {
@@ -395,101 +378,31 @@ static inline void s2dhms(struct dhms *ts, time_t secs)
 #define JOBSTATS_JOBID_VAR_MAX_LEN     20
 #define JOBSTATS_DISABLE               "disable"
 #define JOBSTATS_PROCNAME_UID          "procname_uid"
+#define JOBSTATS_NODELOCAL             "nodelocal"
 
 typedef void (*cntr_init_callback)(struct lprocfs_stats *stats);
 
 struct obd_job_stats {
-       cfs_hash_t             *ojs_hash;
-       struct list_head        ojs_list;
-       rwlock_t                ojs_lock; /* protect the obj_list */
-       cntr_init_callback      ojs_cntr_init_fn;
-       int                     ojs_cntr_num;
-       int                     ojs_cleanup_interval;
-       time_t                  ojs_last_cleanup;
+       struct cfs_hash        *ojs_hash;       /* hash of jobids */
+       struct list_head        ojs_list;       /* list of job_stat structs */
+       rwlock_t                ojs_lock;       /* protect ojs_list/js_list */
+       unsigned int            ojs_cleanup_interval;/* seconds before expiry */
+       time_t                  ojs_last_cleanup; /* previous cleanup time */
+       cntr_init_callback      ojs_cntr_init_fn;/* lprocfs_stats initializer */
+       unsigned short          ojs_cntr_num;   /* number of stats in struct */
+       bool                    ojs_cleaning;   /* currently expiring stats */
 };
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 
-extern int lprocfs_stats_alloc_one(struct lprocfs_stats *stats,
-                                   unsigned int cpuid);
-/*
- * \return value
- *      < 0     : on error (only possible for opc as LPROCFS_GET_SMP_ID)
- */
-static inline int lprocfs_stats_lock(struct lprocfs_stats *stats, int opc,
-                                    unsigned long *flags)
-{
-       int             rc = 0;
-
-       switch (opc) {
-       default:
-               LBUG();
-
-       case LPROCFS_GET_SMP_ID:
-               if (stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU) {
-                       if (stats->ls_flags & LPROCFS_STATS_FLAG_IRQ_SAFE)
-                               spin_lock_irqsave(&stats->ls_lock, *flags);
-                       else
-                               spin_lock(&stats->ls_lock);
-                       return 0;
-               } else {
-                       unsigned int cpuid = get_cpu();
-
-                       if (unlikely(stats->ls_percpu[cpuid] == NULL)) {
-                               rc = lprocfs_stats_alloc_one(stats, cpuid);
-                               if (rc < 0) {
-                                       put_cpu();
-                                       return rc;
-                               }
-                       }
-                       return cpuid;
-               }
-
-       case LPROCFS_GET_NUM_CPU:
-               if (stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU) {
-                       if (stats->ls_flags & LPROCFS_STATS_FLAG_IRQ_SAFE)
-                               spin_lock_irqsave(&stats->ls_lock, *flags);
-                       else
-                               spin_lock(&stats->ls_lock);
-                       return 1;
-               } else {
-                       return stats->ls_biggest_alloc_num;
-               }
-       }
-}
-
-static inline void lprocfs_stats_unlock(struct lprocfs_stats *stats, int opc,
-                                       unsigned long *flags)
-{
-       switch (opc) {
-       default:
-               LBUG();
-
-       case LPROCFS_GET_SMP_ID:
-               if (stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU) {
-                       if (stats->ls_flags & LPROCFS_STATS_FLAG_IRQ_SAFE) {
-                               spin_unlock_irqrestore(&stats->ls_lock,
-                                                          *flags);
-                       } else {
-                               spin_unlock(&stats->ls_lock);
-                       }
-               } else {
-                       put_cpu();
-               }
-               return;
-
-       case LPROCFS_GET_NUM_CPU:
-               if (stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU) {
-                       if (stats->ls_flags & LPROCFS_STATS_FLAG_IRQ_SAFE) {
-                               spin_unlock_irqrestore(&stats->ls_lock,
-                                                          *flags);
-                       } else {
-                               spin_unlock(&stats->ls_lock);
-                       }
-               }
-               return;
-       }
-}
+int lprocfs_stats_alloc_one(struct lprocfs_stats *stats,
+                           unsigned int cpuid);
+int lprocfs_stats_lock(struct lprocfs_stats *stats,
+                      enum lprocfs_stats_lock_ops opc,
+                      unsigned long *flags);
+void lprocfs_stats_unlock(struct lprocfs_stats *stats,
+                         enum lprocfs_stats_lock_ops opc,
+                         unsigned long *flags);
 
 static inline unsigned int
 lprocfs_stats_counter_size(struct lprocfs_stats *stats)
@@ -543,29 +456,8 @@ extern __s64 lprocfs_read_helper(struct lprocfs_counter *lc,
                                 struct lprocfs_counter_header *header,
                                 enum lprocfs_stats_flags flags,
                                 enum lprocfs_fields_flags field);
-static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats,
-                                            int idx,
-                                            enum lprocfs_fields_flags field)
-{
-       unsigned int  i;
-       unsigned int  num_cpu;
-       unsigned long flags     = 0;
-       __u64         ret       = 0;
-
-       LASSERT(stats != NULL);
-
-       num_cpu = lprocfs_stats_lock(stats, LPROCFS_GET_NUM_CPU, &flags);
-       for (i = 0; i < num_cpu; i++) {
-               if (stats->ls_percpu[i] == NULL)
-                       continue;
-               ret += lprocfs_read_helper(
-                               lprocfs_stats_counter_get(stats, i, idx),
-                               &stats->ls_cnt_header[idx], stats->ls_flags,
-                               field);
-       }
-       lprocfs_stats_unlock(stats, LPROCFS_GET_NUM_CPU, &flags);
-       return ret;
-}
+u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx,
+                           enum lprocfs_fields_flags field);
 
 extern struct lprocfs_stats *
 lprocfs_alloc_stats(unsigned int num, enum lprocfs_stats_flags flags);
@@ -590,8 +482,7 @@ struct nid_stat;
 extern int lprocfs_add_clear_entry(struct obd_device * obd,
                                   struct proc_dir_entry *entry);
 #ifdef HAVE_SERVER_SUPPORT
-extern int lprocfs_exp_setup(struct obd_export *exp,
-                             lnet_nid_t *peer_nid, int *newnid);
+extern int lprocfs_exp_setup(struct obd_export *exp, lnet_nid_t *peer_nid);
 extern int lprocfs_exp_cleanup(struct obd_export *exp);
 #else
 static inline int lprocfs_exp_cleanup(struct obd_export *exp)
@@ -606,7 +497,7 @@ lprocfs_add_symlink(const char *name, struct proc_dir_entry *parent,
 extern void lprocfs_free_per_client_stats(struct obd_device *obd);
 #ifdef HAVE_SERVER_SUPPORT
 extern ssize_t
-lprocfs_nid_stats_clear_seq_write(struct file *file, const char *buffer,
+lprocfs_nid_stats_clear_seq_write(struct file *file, const char __user *buffer,
                                        size_t count, loff_t *off);
 extern int lprocfs_nid_stats_clear_seq_show(struct seq_file *file, void *data);
 #endif
@@ -614,32 +505,35 @@ extern int lprocfs_register_stats(struct proc_dir_entry *root, const char *name,
                                   struct lprocfs_stats *stats);
 
 /* lprocfs_status.c */
-#ifndef HAVE_ONLY_PROCFS_SEQ
 extern int lprocfs_add_vars(struct proc_dir_entry *root,
-                            struct lprocfs_vars *var,
-                            void *data);
-
-extern struct proc_dir_entry *lprocfs_register(const char *name,
-                                             struct proc_dir_entry *parent,
-                                             struct lprocfs_vars *list,
-                                             void *data);
-#endif
-extern int lprocfs_seq_add_vars(struct proc_dir_entry *root,
-                               struct lprocfs_seq_vars *var,
-                               void *data);
-
+                           struct lprocfs_vars *var, void *data);
 extern struct proc_dir_entry *
-lprocfs_seq_register(const char *name, struct proc_dir_entry *parent,
-                    struct lprocfs_seq_vars *list, void *data);
+lprocfs_register(const char *name, struct proc_dir_entry *parent,
+                struct lprocfs_vars *list, void *data);
 extern void lprocfs_remove(struct proc_dir_entry **root);
 extern void lprocfs_remove_proc_entry(const char *name,
                                       struct proc_dir_entry *parent);
-#ifndef HAVE_ONLY_PROCFS_SEQ
-extern void lprocfs_try_remove_proc_entry(const char *name,
-                                         struct proc_dir_entry *parent);
+#ifndef HAVE_REMOVE_PROC_SUBTREE
+extern int remove_proc_subtree(const char *name,
+                              struct proc_dir_entry *parent);
+#define PDE_DATA(inode)                (PDE(inode)->data)
 
-extern struct proc_dir_entry *lprocfs_srch(struct proc_dir_entry *root,
-                                          const char *name);
+static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
+{
+       struct proc_dir_entry *dp = PDE(inode);
+       int deleted = 0;
+
+       spin_lock(&(dp)->pde_unload_lock);
+       if (dp->proc_fops == NULL)
+               deleted = 1;
+       spin_unlock(&(dp)->pde_unload_lock);
+       if (deleted)
+               return -ENODEV;
+       return 0;
+}
+#else
+static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
+{ return 0; }
 #endif
 extern int lprocfs_obd_setup(struct obd_device *dev);
 extern int lprocfs_obd_cleanup(struct obd_device *obd);
@@ -678,32 +572,26 @@ extern int lprocfs_connect_flags_seq_show(struct seq_file *m, void *data);
 extern int lprocfs_num_exports_seq_show(struct seq_file *m, void *data);
 #endif
 struct adaptive_timeout;
-extern int lprocfs_seq_at_hist_helper(struct seq_file *m,
-                                     struct adaptive_timeout *at);
+extern int lprocfs_at_hist_helper(struct seq_file *m,
+                                 struct adaptive_timeout *at);
 extern int lprocfs_timeouts_seq_show(struct seq_file *m, void *data);
 extern ssize_t
-lprocfs_timeouts_seq_write(struct file *file, const char *buffer,
+lprocfs_timeouts_seq_write(struct file *file, const char __user *buffer,
                           size_t count, loff_t *off);
 #ifdef HAVE_SERVER_SUPPORT
-#ifndef HAVE_ONLY_PROCFS_SEQ
-extern ssize_t lprocfs_fops_read(struct file *f, char __user *buf,
-                                size_t size, loff_t *ppos);
-extern ssize_t lprocfs_fops_write(struct file *f, const char __user *buf,
-                                 size_t size, loff_t *ppos);
-#endif
 extern ssize_t
-lprocfs_evict_client_seq_write(struct file *file, const char *buffer,
+lprocfs_evict_client_seq_write(struct file *file, const char __user *buffer,
                                size_t count, loff_t *off);
 #endif
 extern ssize_t
-lprocfs_ping_seq_write(struct file *file, const char *buffer,
+lprocfs_ping_seq_write(struct file *file, const char __user *buffer,
                       size_t count, loff_t *off);
 extern ssize_t
 lprocfs_import_seq_write(struct file *file, const char __user *buffer,
                         size_t count, loff_t *off);
 extern int lprocfs_pinger_recov_seq_show(struct seq_file *m, void *data);
 extern ssize_t
-lprocfs_pinger_recov_seq_write(struct file *file, const char *buffer,
+lprocfs_pinger_recov_seq_write(struct file *file, const char __user *buffer,
                               size_t count, loff_t *off);
 
 /* Statfs helpers */
@@ -714,19 +602,14 @@ extern int lprocfs_kbytesavail_seq_show(struct seq_file *m, void *data);
 extern int lprocfs_filestotal_seq_show(struct seq_file *m, void *data);
 extern int lprocfs_filesfree_seq_show(struct seq_file *m, void *data);
 
-extern int lprocfs_write_helper(const char __user *buffer, unsigned long count,
-                                int *val);
-extern int lprocfs_write_frac_helper(const char __user *buffer,
-                                    unsigned long count,
-                                    int *val, int mult);
 extern int lprocfs_seq_read_frac_helper(struct seq_file *m, long val, int mult);
 extern int lprocfs_read_frac_helper(char *buffer, unsigned long count,
                                     long val, int mult);
-extern int lprocfs_write_u64_helper(const char __user *buffer,
-                                   unsigned long count, __u64 *val);
-extern int lprocfs_write_frac_u64_helper(const char __user *buffer,
-                                         unsigned long count,
-                                         __u64 *val, int mult);
+extern int lprocfs_str_to_s64(const char __user *buffer, unsigned long count,
+                             __s64 *val);
+extern int lprocfs_str_with_units_to_s64(const char __user *buffer,
+                                        unsigned long count, __s64 *val,
+                                        char defunit);
 char *lprocfs_find_named_value(const char *buffer, const char *name,
                                size_t *count);
 void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value);
@@ -747,7 +630,7 @@ int lprocfs_hash_seq_show(struct seq_file *m, void *data);
 /* lprocfs_status.c: IR factor */
 int lprocfs_ir_factor_seq_show(struct seq_file *m, void *data);
 ssize_t
-lprocfs_ir_factor_seq_write(struct file *file, const char *buffer,
+lprocfs_ir_factor_seq_write(struct file *file, const char __user *buffer,
                                size_t count, loff_t *off);
 #endif
 extern int lprocfs_single_release(struct inode *, struct file *);
@@ -773,7 +656,12 @@ extern int lprocfs_seq_release(struct inode *, struct file *);
 #define __LPROC_SEQ_FOPS(name, custom_seq_write)                       \
 static int name##_single_open(struct inode *inode, struct file *file)  \
 {                                                                      \
-       LPROCFS_ENTRY_CHECK(PDE(inode));                                \
+       int rc;                                                         \
+                                                                       \
+       rc = LPROCFS_ENTRY_CHECK(inode);                                \
+       if (rc < 0)                                                     \
+               return rc;                                              \
+                                                                       \
        return single_open(file, name##_seq_show, PDE_DATA(inode));     \
 }                                                                      \
 static const struct file_operations name##_fops = {                    \
@@ -821,7 +709,7 @@ static const struct file_operations name##_fops = {                 \
        {                                                               \
                return single_open(file, NULL, PDE_DATA(inode));        \
        }                                                               \
-       struct file_operations name##_##type##_fops = {                 \
+       static const struct file_operations name##_##type##_fops = {    \
                .open    = name##_##type##_open,                        \
                .write   = name##_##type##_write,                       \
                .release = lprocfs_single_release,                      \
@@ -840,23 +728,25 @@ int lprocfs_job_stats_init(struct obd_device *obd, int cntr_num,
                           cntr_init_callback fn);
 int lprocfs_job_interval_seq_show(struct seq_file *m, void *data);
 ssize_t
-lprocfs_job_interval_seq_write(struct file *file, const char *buffer,
+lprocfs_job_interval_seq_write(struct file *file, const char __user *buffer,
                                size_t count, loff_t *off);
 /* lproc_status.c */
 int lprocfs_recovery_time_soft_seq_show(struct seq_file *m, void *data);
 ssize_t lprocfs_recovery_time_soft_seq_write(struct file *file,
-                                               const char *buffer,
+                                               const char __user *buffer,
                                                size_t count, loff_t *off);
 int lprocfs_recovery_time_hard_seq_show(struct seq_file *m, void *data);
 ssize_t
-lprocfs_recovery_time_hard_seq_write(struct file *file, const char *buffer,
-                                       size_t count, loff_t *off);
+lprocfs_recovery_time_hard_seq_write(struct file *file,
+                                    const char __user *buffer,
+                                    size_t count, loff_t *off);
 int lprocfs_target_instance_seq_show(struct seq_file *m, void *data);
 #endif
 int lprocfs_obd_max_pages_per_rpc_seq_show(struct seq_file *m, void *data);
 ssize_t
-lprocfs_obd_max_pages_per_rpc_seq_write(struct file *file, const char *buffer,
-                                      size_t count, loff_t *off);
+lprocfs_obd_max_pages_per_rpc_seq_write(struct file *file,
+                                       const char __user *buffer,
+                                       size_t count, loff_t *off);
 
 struct root_squash_info;
 int lprocfs_wr_root_squash(const char __user *buffer, unsigned long count,
@@ -864,67 +754,7 @@ int lprocfs_wr_root_squash(const char __user *buffer, unsigned long count,
 int lprocfs_wr_nosquash_nids(const char __user *buffer, unsigned long count,
                             struct root_squash_info *squash, char *name);
 
-/* all quota proc functions */
-extern int lprocfs_quota_rd_bunit(char *page, char **start,
-                                  off_t off, int count,
-                                  int *eof, void *data);
-extern int lprocfs_quota_wr_bunit(struct file *file, const char *buffer,
-                                  unsigned long count, void *data);
-extern int lprocfs_quota_rd_btune(char *page, char **start,
-                                  off_t off, int count,
-                                  int *eof, void *data);
-extern int lprocfs_quota_wr_btune(struct file *file, const char *buffer,
-                                  unsigned long count, void *data);
-extern int lprocfs_quota_rd_iunit(char *page, char **start,
-                                  off_t off, int count,
-                                  int *eof, void *data);
-extern int lprocfs_quota_wr_iunit(struct file *file, const char *buffer,
-                                  unsigned long count, void *data);
-extern int lprocfs_quota_rd_itune(char *page, char **start,
-                                  off_t off, int count,
-                                  int *eof, void *data);
-extern int lprocfs_quota_wr_itune(struct file *file, const char *buffer,
-                                  unsigned long count, void *data);
-extern int lprocfs_quota_rd_type(char *page, char **start, off_t off, int count,
-                                 int *eof, void *data);
-extern int lprocfs_quota_wr_type(struct file *file, const char *buffer,
-                                 unsigned long count, void *data);
-extern int lprocfs_quota_rd_switch_seconds(char *page, char **start, off_t off,
-                                           int count, int *eof, void *data);
-extern int lprocfs_quota_wr_switch_seconds(struct file *file,
-                                           const char *buffer,
-                                           unsigned long count, void *data);
-extern int lprocfs_quota_rd_sync_blk(char *page, char **start, off_t off,
-                                     int count, int *eof, void *data);
-extern int lprocfs_quota_wr_sync_blk(struct file *file, const char *buffer,
-                                     unsigned long count, void *data);
-extern int lprocfs_quota_rd_switch_qs(char *page, char **start, off_t off,
-                                      int count, int *eof, void *data);
-extern int lprocfs_quota_wr_switch_qs(struct file *file,
-                                      const char *buffer,
-                                      unsigned long count, void *data);
-extern int lprocfs_quota_rd_boundary_factor(char *page, char **start, off_t off,
-                                            int count, int *eof, void *data);
-extern int lprocfs_quota_wr_boundary_factor(struct file *file,
-                                            const char *buffer,
-                                            unsigned long count, void *data);
-extern int lprocfs_quota_rd_least_bunit(char *page, char **start, off_t off,
-                                        int count, int *eof, void *data);
-extern int lprocfs_quota_wr_least_bunit(struct file *file,
-                                        const char *buffer,
-                                        unsigned long count, void *data);
-extern int lprocfs_quota_rd_least_iunit(char *page, char **start, off_t off,
-                                        int count, int *eof, void *data);
-extern int lprocfs_quota_wr_least_iunit(struct file *file,
-                                        const char *buffer,
-                                        unsigned long count, void *data);
-extern int lprocfs_quota_rd_qs_factor(char *page, char **start, off_t off,
-                                      int count, int *eof, void *data);
-extern int lprocfs_quota_wr_qs_factor(struct file *file,
-                                      const char *buffer,
-                                      unsigned long count, void *data);
-#else
-/* LPROCFS is not defined */
+#else /* !CONFIG_PROC_FS */
 
 #define proc_lustre_root NULL
 
@@ -987,14 +817,14 @@ static inline void lprocfs_free_per_client_stats(struct obd_device *obd)
 { return; }
 #ifdef HAVE_SERVER_SUPPORT
 static inline
-ssize_t lprocfs_nid_stats_seq_write(struct file *file, const char *buffer,
-                                       size_t count, loff_t *off)
+ssize_t lprocfs_nid_stats_seq_write(struct file *file,
+                                   const char __user *buffer,
+                                   size_t count, loff_t *off)
 {return 0;}
 static inline
 int lprocfs_nid_stats_clear_seq_show(struct seq_file *m, void *data)
 {return 0;}
-static inline int lprocfs_exp_setup(struct obd_export *exp,lnet_nid_t *peer_nid,
-                                    int *newnid)
+static inline int lprocfs_exp_setup(struct obd_export *exp,lnet_nid_t *peer_nid)
 { return 0; }
 #endif
 static inline int lprocfs_exp_cleanup(struct obd_export *exp)
@@ -1007,37 +837,18 @@ static inline struct proc_dir_entry *
 lprocfs_add_symlink(const char *name, struct proc_dir_entry *parent,
                     const char *format, ...)
 {return NULL; }
-#ifndef HAVE_ONLY_PROCFS_SEQ
-static inline struct proc_dir_entry *
-lprocfs_register(const char *name, struct proc_dir_entry *parent,
-                struct lprocfs_vars *list, void *data)
-{ return NULL; }
 static inline int lprocfs_add_vars(struct proc_dir_entry *root,
-                                   struct lprocfs_vars *var,
-                                   void *data)
-{ return 0; }
-#endif
-static inline int lprocfs_seq_add_vars(struct proc_dir_entry *root,
-                                      struct lprocfs_seq_vars *var,
-                                      void *data)
+                                  struct lprocfs_vars *var, void *data)
 { return 0; }
 static inline struct proc_dir_entry *
-lprocfs_seq_register(const char *name, struct proc_dir_entry *parent,
-                    struct lprocfs_seq_vars *list, void *data)
+lprocfs_register(const char *name, struct proc_dir_entry *parent,
+                struct lprocfs_vars *list, void *data)
 { return NULL; }
 static inline void lprocfs_remove(struct proc_dir_entry **root)
 { return; }
 static inline void lprocfs_remove_proc_entry(const char *name,
                                              struct proc_dir_entry *parent)
 { return; }
-#ifndef HAVE_ONLY_PROCFS_SEQ
-static inline void lprocfs_try_remove_proc_entry(const char *name,
-                                                struct proc_dir_entry *parent)
-{ return; }
-static inline struct proc_dir_entry *lprocfs_srch(struct proc_dir_entry *head,
-                                                 const char *name)
-{ return 0; }
-#endif
 static inline int lprocfs_obd_setup(struct obd_device *dev)
 { return 0; }
 static inline int lprocfs_obd_cleanup(struct obd_device *dev)
@@ -1061,18 +872,18 @@ static inline int lprocfs_num_exports_seq_show(struct seq_file *m, void *data)
 { return 0; }
 #endif
 struct adaptive_timeout;
-static inline int lprocfs_seq_at_hist_helper(struct seq_file *m,
-                                            struct adaptive_timeout *at)
+static inline int lprocfs_at_hist_helper(struct seq_file *m,
+                                        struct adaptive_timeout *at)
 { return 0; }
 static inline int lprocfs_timeouts_seq_show(struct seq_file *m, void *data)
 { return 0; }
 static inline ssize_t
-lprocfs_timeouts_seq_write(struct file *file, const char *buffer,
+lprocfs_timeouts_seq_write(struct file *file, const char __user *buffer,
                           size_t count, loff_t *off)
 { return 0; }
 #ifdef HAVE_SERVER_SUPPORT
 static inline ssize_t
-lprocfs_evict_client_seq_write(struct file *file, const char *buffer,
+lprocfs_evict_client_seq_write(struct file *file, const char __user *buffer,
                               size_t count, loff_t *off)
 { return 0; }
 #endif
@@ -1128,8 +939,8 @@ void lprocfs_stats_collect(struct lprocfs_stats *stats, int idx,
                            struct lprocfs_counter *cnt)
 { return; }
 static inline
-__u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx,
-                               enum lprocfs_fields_flags field)
+u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx,
+                           enum lprocfs_fields_flags field)
 { return (__u64)0; }
 
 #define LPROC_SEQ_FOPS_RO(name)
@@ -1155,6 +966,6 @@ int lprocfs_job_stats_init(struct obd_device *obd, int cntr_num,
 /* lproc_ptlrpc.c */
 #define target_print_req NULL
 
-#endif /* LPROCFS */
+#endif /* CONFIG_PROC_FS */
 
-#endif /* LPROCFS_SNMP_H */
+#endif /* LPROCFS_STATUS_H */