From 9eccc6cc308e931d9c6040714caffdaef62a56f9 Mon Sep 17 00:00:00 2001 From: LiuYing Date: Tue, 16 Nov 2010 09:38:14 +0800 Subject: [PATCH] b=24117 params_tree code for YangtzeI part of params_tree code for YangtzeI -add safe cfs_{v}snprintf -move linux proc related stuff to params_tree.h i=andreas i=alexg --- libcfs/include/libcfs/Makefile.am | 3 +- libcfs/include/libcfs/libcfs.h | 1 + libcfs/include/libcfs/libcfs_string.h | 12 +- libcfs/include/libcfs/params_tree.h | 228 ++++++++++++++++++++++++++++++++ libcfs/libcfs/debug.c | 4 +- libcfs/libcfs/libcfs_string.c | 45 +++++-- lustre/include/lprocfs_status.h | 237 +++++++++++++++++----------------- lustre/mdd/mdd_lproc.c | 4 +- 8 files changed, 397 insertions(+), 137 deletions(-) create mode 100644 libcfs/include/libcfs/params_tree.h diff --git a/libcfs/include/libcfs/Makefile.am b/libcfs/include/libcfs/Makefile.am index d074151..7cb850b 100644 --- a/libcfs/include/libcfs/Makefile.am +++ b/libcfs/include/libcfs/Makefile.am @@ -10,4 +10,5 @@ EXTRA_DIST := curproc.h libcfs_private.h libcfs.h list.h lltrace.h \ libcfs_prim.h libcfs_time.h libcfs_hash.h \ libcfs_debug.h libcfsutil.h libcfs_ioctl.h \ libcfs_pack.h libcfs_unpack.h libcfs_string.h \ - libcfs_kernelcomm.h libcfs_workitem.h + libcfs_kernelcomm.h libcfs_workitem.h \ + params_tree.h diff --git a/libcfs/include/libcfs/libcfs.h b/libcfs/include/libcfs/libcfs.h index 74208ac..4a96608 100644 --- a/libcfs/include/libcfs/libcfs.h +++ b/libcfs/include/libcfs/libcfs.h @@ -308,6 +308,7 @@ void cfs_get_random_bytes(void *buf, int size); #include #include #include +#include /* container_of depends on "likely" which is defined in libcfs_private.h */ static inline void *__container_of(void *ptr, unsigned long shift) diff --git a/libcfs/include/libcfs/libcfs_string.h b/libcfs/include/libcfs/libcfs_string.h index e1c7d2c..ab03578 100644 --- a/libcfs/include/libcfs/libcfs_string.h +++ b/libcfs/include/libcfs/libcfs_string.h @@ -45,11 +45,17 @@ /* libcfs_string.c */ /* Convert a text string to a bitmask */ -int libcfs_str2mask(const char *str, const char *(*bit2str)(int bit), - int *oldmask, int minmask, int allmask); +int cfs_str2mask(const char *str, const char *(*bit2str)(int bit), + int *oldmask, int minmask, int allmask); /* Allocate space for and copy an existing string. * Must free with cfs_free(). */ -char *libcfs_strdup(const char *str, u_int32_t flags); +char *cfs_strdup(const char *str, u_int32_t flags); + +/* safe vsnprintf */ +int cfs_vsnprintf(char *buf, size_t size, const char *fmt, va_list args); + +/* safe snprintf */ +int cfs_snprintf(char *buf, size_t size, const char *fmt, ...); #endif diff --git a/libcfs/include/libcfs/params_tree.h b/libcfs/include/libcfs/params_tree.h new file mode 100644 index 0000000..d6bf464 --- /dev/null +++ b/libcfs/include/libcfs/params_tree.h @@ -0,0 +1,228 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + * + * GPL HEADER START + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program 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 version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * 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. + * + * GPL HEADER END + */ +/* + * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * API and structure definitions for params_tree. + * + * Author: LiuYing + */ +#ifndef __PARAMS_TREE_H__ +#define __PARAMS_TREE_H__ + +#ifndef EXPORT_SYMTAB +# define EXPORT_SYMTAB +#endif + +#include + +#undef LPROCFS +#if (defined(__KERNEL__) && defined(CONFIG_PROC_FS)) +# define LPROCFS +#endif + +#ifdef LPROCFS +typedef struct file cfs_param_file_t; +typedef struct inode cfs_inode_t; +typedef struct proc_inode cfs_proc_inode_t; +typedef struct seq_file cfs_seq_file_t; +typedef struct seq_operations cfs_seq_ops_t; +typedef struct file_operations cfs_param_file_ops_t; +typedef cfs_module_t *cfs_param_module_t; +typedef struct proc_dir_entry cfs_param_dentry_t; +typedef struct poll_table_struct cfs_poll_table_t; +#define CFS_PARAM_MODULE THIS_MODULE +#define CFS_PDE(value) PDE(value) +#define cfs_file_private(file) (file->private_data) +#define cfs_dentry_data(dentry) (dentry->data) +#define cfs_proc_inode_pde(proc_inode) (proc_inode->pde) +#define cfs_proc_inode(proc_inode) (proc_inode->vfs_inode) +#define cfs_seq_read_common seq_read +#define cfs_seq_lseek_common seq_lseek +#define cfs_seq_private(seq) (seq->private) +#define cfs_seq_printf(seq, format, ...) seq_printf(seq, format, \ + ## __VA_ARGS__) +#define cfs_seq_release(inode, file) seq_release(inode, file) +#define cfs_seq_puts(seq, s) seq_puts(seq, s) +#define cfs_seq_putc(seq, s) seq_putc(seq, s) +#define cfs_seq_read(file, buf, count, ppos, rc) (rc = seq_read(file, buf, \ + count, ppos)) +#define cfs_seq_open(file, ops, rc) (rc = seq_open(file, ops)) + +/* in lprocfs_stat.c, to protect the private data for proc entries */ +extern cfs_rw_semaphore_t _lprocfs_lock; +#define LPROCFS_ENTRY() \ +do { \ + cfs_down_read(&_lprocfs_lock); \ +} while(0) +#define LPROCFS_EXIT() \ +do { \ + cfs_up_read(&_lprocfs_lock); \ +} while(0) + +#ifdef HAVE_PROCFS_DELETED +static inline +int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp) +{ + LPROCFS_ENTRY(); + if ((dp)->deleted) { + LPROCFS_EXIT(); + return -ENODEV; + } + return 0; +} +#else /* !HAVE_PROCFS_DELETED*/ +static inline +int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp) +{ + LPROCFS_ENTRY(); + return 0; +} +#endif /* HAVE_PROCFS_DELETED */ + +#define LPROCFS_WRITE_ENTRY() \ +do { \ + cfs_down_write(&_lprocfs_lock); \ +} while(0) +#define LPROCFS_WRITE_EXIT() \ +do { \ + cfs_up_write(&_lprocfs_lock); \ +} while(0) + +#else /* !LPROCFS */ + +typedef struct cfs_params_file { + void *param_private; + loff_t param_pos; + unsigned int param_flags; +} cfs_param_file_t; + +typedef struct cfs_param_inode { + void *param_private; +} cfs_inode_t; + +typedef struct cfs_param_dentry { + void *param_data; +} cfs_param_dentry_t; + +typedef struct cfs_proc_inode { + cfs_param_dentry_t *param_pde; + cfs_inode_t param_inode; +} cfs_proc_inode_t; + +struct cfs_seq_operations; +typedef struct cfs_seq_file { + char *buf; + size_t size; + size_t from; + size_t count; + loff_t index; + loff_t version; + cfs_mutex_t lock; + struct cfs_seq_operations *op; + void *private; +} cfs_seq_file_t; + +typedef struct cfs_seq_operations { + void *(*start) (cfs_seq_file_t *m, loff_t *pos); + void (*stop) (cfs_seq_file_t *m, void *v); + void *(*next) (cfs_seq_file_t *m, void *v, loff_t *pos); + int (*show) (cfs_seq_file_t *m, void *v); +} cfs_seq_ops_t; + +typedef void *cfs_param_module_t; +typedef void *cfs_poll_table_t; + +typedef struct cfs_param_file_ops { + cfs_param_module_t owner; + int (*open) (cfs_inode_t *, cfs_file_t *); + loff_t (*llseek)(cfs_file_t *, loff_t, int); + int (*release) (cfs_inode_t *, cfs_param_file_t *); + unsigned int (*poll) (cfs_file_t *, cfs_poll_table_t *); + ssize_t (*write) (cfs_file_t *, const char *, size_t, loff_t *); + ssize_t (*read)(cfs_file_t *, char *, size_t, loff_t *); +} cfs_param_file_ops_t; +typedef cfs_param_file_ops_t *cfs_lproc_filep_t; + +static inline cfs_proc_inode_t *FAKE_PROC_I(const cfs_inode_t *inode) +{ + return container_of(inode, cfs_proc_inode_t, param_inode); +} + +static inline cfs_param_dentry_t *FAKE_PDE(cfs_inode_t *inode) +{ + return FAKE_PROC_I(inode)->param_pde; +} + +#define CFS_PARAM_MODULE NULL +#define CFS_PDE(value) FAKE_PDE(value) +#define cfs_file_private(file) (file->param_private) +#define cfs_dentry_data(dentry) (dentry->param_data) +#define cfs_proc_inode(proc_inode) (proc_inode->param_inode) +#define cfs_proc_inode_pde(proc_inode) (proc_inode->param_pde) +#define cfs_seq_read_common NULL +#define cfs_seq_lseek_common NULL +#define cfs_seq_private(seq) (seq->private) +#define cfs_seq_read(file, buf, count, ppos, rc) do {} while(0) +#define cfs_seq_open(file, ops, rc) \ +do { \ + cfs_seq_file_t *p = cfs_file_private(file); \ + if (!p) { \ + LIBCFS_ALLOC(p, sizeof(*p)); \ + if (!p) { \ + rc = -ENOMEM; \ + break; \ + } \ + cfs_file_private(file) = p; \ + } \ + memset(p, 0, sizeof(*p)); \ + p->op = ops; \ + rc = 0; \ +} while(0) + +#define LPROCFS_ENTRY() do {} while(0) +#define LPROCFS_EXIT() do {} while(0) +static inline +int LPROCFS_ENTRY_AND_CHECK(cfs_param_dentry_t *dp) +{ + LPROCFS_ENTRY(); + return 0; +} +#define LPROCFS_WRITE_ENTRY() do {} while(0) +#define LPROCFS_WRITE_EXIT() do {} while(0) + +#endif /* LPROCFS */ + +/* XXX: params_tree APIs */ + +#endif /* __PARAMS_TREE_H__ */ diff --git a/libcfs/libcfs/debug.c b/libcfs/libcfs/debug.c index be2db8e..de6e0da 100644 --- a/libcfs/libcfs/debug.c +++ b/libcfs/libcfs/debug.c @@ -322,8 +322,8 @@ libcfs_debug_str2mask(int *mask, const char *str, int is_subsys) return 0; } - return libcfs_str2mask(str, fn, mask, is_subsys ? 0 : D_CANTMASK, - 0xffffffff); + return cfs_str2mask(str, fn, mask, is_subsys ? 0 : D_CANTMASK, + 0xffffffff); } /** diff --git a/libcfs/libcfs/libcfs_string.c b/libcfs/libcfs/libcfs_string.c index c423e47..2f76682 100644 --- a/libcfs/libcfs/libcfs_string.c +++ b/libcfs/libcfs/libcfs_string.c @@ -47,7 +47,7 @@ #include /* non-0 = don't match */ -static int libcfs_strncasecmp(const char *s1, const char *s2, size_t n) +static int cfs_strncasecmp(const char *s1, const char *s2, size_t n) { if (s1 == NULL || s2 == NULL) return 1; @@ -66,8 +66,8 @@ static int libcfs_strncasecmp(const char *s1, const char *s2, size_t n) } /* Convert a text string to a bitmask */ -int libcfs_str2mask(const char *str, const char *(*bit2str)(int bit), - int *oldmask, int minmask, int allmask) +int cfs_str2mask(const char *str, const char *(*bit2str)(int bit), + int *oldmask, int minmask, int allmask) { char op = 0; int newmask = minmask, i, len, found = 0; @@ -101,7 +101,7 @@ int libcfs_str2mask(const char *str, const char *(*bit2str)(int bit), /* match token */ found = 0; for (i = 0; i < 32; i++) { - if (libcfs_strncasecmp(str, bit2str(i), len) == 0) { + if (cfs_strncasecmp(str, bit2str(i), len) == 0) { if (op == '-') newmask &= ~(1 << i); else @@ -110,7 +110,7 @@ int libcfs_str2mask(const char *str, const char *(*bit2str)(int bit), break; } } - if (!found && (libcfs_strncasecmp(str, "ALL", len) == 0)) { + if (!found && (cfs_strncasecmp(str, "ALL", len) == 0)) { if (op == '-') newmask = minmask; else @@ -128,9 +128,10 @@ int libcfs_str2mask(const char *str, const char *(*bit2str)(int bit), *oldmask = newmask; return 0; } +EXPORT_SYMBOL(cfs_str2mask); /* Duplicate a string in a platform-independent way */ -char *libcfs_strdup(const char *str, u_int32_t flags) +char *cfs_strdup(const char *str, u_int32_t flags) { size_t lenz; /* length of str + zero byte */ char *dup_str; @@ -145,6 +146,34 @@ char *libcfs_strdup(const char *str, u_int32_t flags) return dup_str; } +EXPORT_SYMBOL(cfs_strdup); -EXPORT_SYMBOL(libcfs_str2mask); -EXPORT_SYMBOL(libcfs_strdup); +/** + * cfs_{v}snprintf() return the actual size that is printed rather than + * the size that would be printed in standard functions. + */ +/* safe vsnprintf */ +int cfs_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) +{ + int i; + + LASSERT(size > 0); + i = vsnprintf(buf, size, fmt, args); + + return (i >= size ? size - 1 : i); +} +EXPORT_SYMBOL(cfs_vsnprintf); + +/* safe snprintf */ +int cfs_snprintf(char *buf, size_t size, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i = cfs_vsnprintf(buf, size, fmt, args); + va_end(args); + + return i; +} +EXPORT_SYMBOL(cfs_snprintf); diff --git a/lustre/include/lprocfs_status.h b/lustre/include/lprocfs_status.h index bebcbf5..f1af794 100644 --- a/lustre/include/lprocfs_status.h +++ b/lustre/include/lprocfs_status.h @@ -52,22 +52,18 @@ #error Unsupported operating system. #endif #include - -#undef LPROCFS -#if (defined(__KERNEL__) && defined(CONFIG_PROC_FS)) -# define LPROCFS -#endif +#include struct lprocfs_vars { - const char *name; - cfs_read_proc_t *read_fptr; - cfs_write_proc_t *write_fptr; - void *data; + const char *name; + cfs_read_proc_t *read_fptr; + cfs_write_proc_t *write_fptr; + void *data; struct file_operations *fops; /** * /proc file mode. */ - mode_t proc_mode; + mode_t proc_mode; }; struct lprocfs_static_vars { @@ -78,8 +74,8 @@ struct lprocfs_static_vars { /* if we find more consumers this could be generalized */ #define OBD_HIST_MAX 32 struct obd_histogram { - cfs_spinlock_t oh_lock; - unsigned long oh_buckets[OBD_HIST_MAX]; + cfs_spinlock_t oh_lock; + unsigned long oh_buckets[OBD_HIST_MAX]; }; enum { @@ -323,7 +319,6 @@ enum { extern cfs_proc_dir_entry_t *proc_lustre_root; struct obd_device; -struct file; struct obd_histogram; /* Days / hours / mins / seconds format */ @@ -422,8 +417,8 @@ static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats, return ret; } -extern struct lprocfs_stats *lprocfs_alloc_stats(unsigned int num, - enum lprocfs_stats_flags flags); +extern struct lprocfs_stats * +lprocfs_alloc_stats(unsigned int num, enum lprocfs_stats_flags flags); extern void lprocfs_clear_stats(struct lprocfs_stats *stats); extern void lprocfs_free_stats(struct lprocfs_stats **stats); extern void lprocfs_init_ops_stats(int num_private_stats, @@ -453,11 +448,13 @@ extern cfs_proc_dir_entry_t *lprocfs_add_simple(struct proc_dir_entry *root, cfs_write_proc_t *write_proc, void *data, struct file_operations *fops); -extern struct proc_dir_entry *lprocfs_add_symlink(const char *name, - struct proc_dir_entry *parent, const char *format, ...); +extern struct proc_dir_entry * +lprocfs_add_symlink(const char *name, struct proc_dir_entry *parent, + const char *format, ...); extern void lprocfs_free_per_client_stats(struct obd_device *obd); -extern int lprocfs_nid_stats_clear_write(struct file *file, const char *buffer, - unsigned long count, void *data); +extern int +lprocfs_nid_stats_clear_write(struct file *file, const char *buffer, + unsigned long count, void *data); extern int lprocfs_nid_stats_clear_read(char *page, char **start, off_t off, int count, int *eof, void *data); @@ -470,16 +467,16 @@ extern int lprocfs_add_vars(cfs_proc_dir_entry_t *root, void *data); extern cfs_proc_dir_entry_t *lprocfs_register(const char *name, - cfs_proc_dir_entry_t *parent, - struct lprocfs_vars *list, - void *data); + cfs_proc_dir_entry_t *parent, + struct lprocfs_vars *list, + void *data); extern void lprocfs_remove(cfs_proc_dir_entry_t **root); extern void lprocfs_remove_proc_entry(const char *name, struct proc_dir_entry *parent); extern cfs_proc_dir_entry_t *lprocfs_srch(cfs_proc_dir_entry_t *root, - const char *name); + const char *name); extern int lprocfs_obd_setup(struct obd_device *obd, struct lprocfs_vars *list); extern int lprocfs_obd_cleanup(struct obd_device *obd); @@ -561,7 +558,8 @@ extern int lprocfs_read_frac_helper(char *buffer, unsigned long count, long val, int mult); extern int lprocfs_write_u64_helper(const char *buffer, unsigned long count, __u64 *val); -extern int lprocfs_write_frac_u64_helper(const char *buffer, unsigned long count, +extern int lprocfs_write_frac_u64_helper(const char *buffer, + unsigned long count, __u64 *val, int mult); void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value); void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value); @@ -571,7 +569,6 @@ unsigned long lprocfs_oh_sum(struct obd_histogram *oh); void lprocfs_stats_collect(struct lprocfs_stats *stats, int idx, struct lprocfs_counter *cnt); - /* lprocfs_status.c: recovery status */ int lprocfs_obd_rd_recovery_status(char *page, char **start, off_t off, int count, int *eof, void *data); @@ -580,44 +577,7 @@ int lprocfs_obd_rd_recovery_status(char *page, char **start, off_t off, int lprocfs_obd_rd_hash(char *page, char **start, off_t off, int count, int *eof, void *data); -extern int lprocfs_seq_release(struct inode *, struct file *); - -/* in lprocfs_stat.c, to protect the private data for proc entries */ -extern cfs_rw_semaphore_t _lprocfs_lock; -#define LPROCFS_ENTRY() do { \ - cfs_down_read(&_lprocfs_lock); \ -} while(0) -#define LPROCFS_EXIT() do { \ - cfs_up_read(&_lprocfs_lock); \ -} while(0) - -#ifdef HAVE_PROCFS_DELETED -static inline -int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp) -{ - LPROCFS_ENTRY(); - if ((dp)->deleted) { - LPROCFS_EXIT(); - return -ENODEV; - } - return 0; -} -#else -static inline -int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp) -{ - LPROCFS_ENTRY(); - return 0; -} -#endif - -#define LPROCFS_WRITE_ENTRY() do { \ - cfs_down_write(&_lprocfs_lock); \ -} while(0) -#define LPROCFS_WRITE_EXIT() do { \ - cfs_up_write(&_lprocfs_lock); \ -} while(0) - +extern int lprocfs_seq_release(cfs_inode_t *, struct file *); /* You must use these macros when you want to refer to * the import in a client obd_device for a lprocfs entry */ @@ -638,7 +598,7 @@ int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp) a read-write proc entry, and then call LPROC_SEQ_SEQ instead. Finally, call lprocfs_obd_seq_create(obd, filename, 0444, &name#_fops, data); */ #define __LPROC_SEQ_FOPS(name, custom_seq_write) \ -static int name##_seq_open(struct inode *inode, struct file *file) { \ +static int name##_seq_open(cfs_inode_t *inode, struct file *file) { \ struct proc_dir_entry *dp = PDE(inode); \ int rc; \ LPROCFS_ENTRY_AND_CHECK(dp); \ @@ -668,28 +628,34 @@ extern void target_print_req(void *seq_file, struct ptlrpc_request *req); /* lproc_status.c */ int lprocfs_obd_rd_recovery_time_soft(char *page, char **start, off_t off, int count, int *eof, void *data); -int lprocfs_obd_wr_recovery_time_soft(struct file *file, const char *buffer, +int lprocfs_obd_wr_recovery_time_soft(struct file *file, + const char *buffer, unsigned long count, void *data); int lprocfs_obd_rd_recovery_time_hard(char *page, char **start, off_t off, int count, int *eof, void *data); -int lprocfs_obd_wr_recovery_time_hard(struct file *file, const char *buffer, +int lprocfs_obd_wr_recovery_time_hard(struct file *file, + const char *buffer, unsigned long count, void *data); int lprocfs_obd_rd_mntdev(char *page, char **start, off_t off, int count, int *eof, void *data); /* all quota proc functions */ -extern int lprocfs_quota_rd_bunit(char *page, char **start, off_t off, int count, +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, +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, +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, +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); @@ -699,7 +665,8 @@ 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, +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); @@ -707,23 +674,28 @@ 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, +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, +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, +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, +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, +extern int lprocfs_quota_wr_qs_factor(struct file *file, + const char *buffer, unsigned long count, void *data); @@ -734,13 +706,17 @@ extern int lprocfs_quota_wr_qs_factor(struct file *file, const char *buffer, static inline void lprocfs_counter_add(struct lprocfs_stats *stats, - int index, long amount) { return; } + int index, long amount) +{ return; } static inline void lprocfs_counter_incr(struct lprocfs_stats *stats, - int index) { return; } + int index) +{ return; } static inline void lprocfs_counter_decr(struct lprocfs_stats *stats, - int index) { return; } + int index) +{ return; } static inline void lprocfs_counter_sub(struct lprocfs_stats *stats, - int index, long amount) { return; } + int index, long amount) +{ return; } static inline void lprocfs_counter_init(struct lprocfs_stats *stats, int index, unsigned conf, const char *name, const char *units) @@ -750,16 +726,16 @@ static inline __u64 lc_read_helper(struct lprocfs_counter *lc, enum lprocfs_fields_flags field) { return 0; } -static inline struct lprocfs_stats* lprocfs_alloc_stats(unsigned int num, - enum lprocfs_stats_flags flags) +static inline struct lprocfs_stats * +lprocfs_alloc_stats(unsigned int num, enum lprocfs_stats_flags flags) { return NULL; } static inline void lprocfs_clear_stats(struct lprocfs_stats *stats) { return; } static inline void lprocfs_free_stats(struct lprocfs_stats **stats) { return; } static inline int lprocfs_register_stats(cfs_proc_dir_entry_t *root, - const char *name, - struct lprocfs_stats *stats) + const char *name, + struct lprocfs_stats *stats) { return 0; } static inline void lprocfs_init_ops_stats(int num_private_stats, struct lprocfs_stats *stats) @@ -788,18 +764,17 @@ static inline int lprocfs_exp_setup(struct obd_export *exp,lnet_nid_t *peer_nid, { return 0; } static inline int lprocfs_exp_cleanup(struct obd_export *exp) { return 0; } -static inline cfs_proc_dir_entry_t *lprocfs_add_simple(struct proc_dir_entry *root, - char *name, - cfs_read_proc_t *read_proc, - cfs_write_proc_t *write_proc, - void *data, - struct file_operations *fops) +static inline cfs_proc_dir_entry_t * +lprocfs_add_simple(struct proc_dir_entry *root, char *name, + cfs_read_proc_t *read_proc, cfs_write_proc_t *write_proc, + void *data, struct file_operations *fops) {return 0; } -static inline struct proc_dir_entry *lprocfs_add_symlink(const char *name, - struct proc_dir_entry *parent, const char *format, ...) +static inline struct proc_dir_entry * +lprocfs_add_symlink(const char *name, struct proc_dir_entry *parent, + const char *format, ...) {return NULL; } static inline void lprocfs_free_per_client_stats(struct obd_device *obd) -{} +{ return; } static inline int lprocfs_nid_stats_clear_write(struct file *file, const char *buffer, unsigned long count, void *data) @@ -811,24 +786,34 @@ int lprocfs_nid_stats_clear_read(char *page, char **start, off_t off, static inline cfs_proc_dir_entry_t * lprocfs_register(const char *name, cfs_proc_dir_entry_t *parent, - struct lprocfs_vars *list, void *data) { return NULL; } + struct lprocfs_vars *list, void *data) +{ return NULL; } static inline int lprocfs_add_vars(cfs_proc_dir_entry_t *root, struct lprocfs_vars *var, - void *data) { return 0; } -static inline void lprocfs_remove(cfs_proc_dir_entry_t **root) {}; + void *data) +{ return 0; } +static inline void lprocfs_remove(cfs_proc_dir_entry_t **root) +{ return; } static inline void lprocfs_remove_proc_entry(const char *name, - struct proc_dir_entry *parent) {}; + struct proc_dir_entry *parent) +{ return; } static inline cfs_proc_dir_entry_t *lprocfs_srch(cfs_proc_dir_entry_t *head, - const char *name) {return 0;} + const char *name) +{ return 0; } static inline int lprocfs_obd_setup(struct obd_device *dev, - struct lprocfs_vars *list) { return 0; } -static inline int lprocfs_obd_cleanup(struct obd_device *dev) { return 0; } + struct lprocfs_vars *list) +{ return 0; } +static inline int lprocfs_obd_cleanup(struct obd_device *dev) +{ return 0; } static inline int lprocfs_rd_u64(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_uuid(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_name(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_server_uuid(char *page, char **start, off_t off, int count, int *eof, void *data) { return 0; } @@ -857,10 +842,12 @@ static inline int lprocfs_at_hist_helper(char *page, int count, int rc, static inline int lprocfs_rd_timeouts(char *page, char **start, off_t off, int count, int *eof, void *data) { return 0; } -static inline int lprocfs_wr_timeouts(struct file *file, const char *buffer, +static inline int lprocfs_wr_timeouts(struct file *file, + const char *buffer, unsigned long count, void *data) { return 0; } -static inline int lprocfs_wr_evict_client(struct file *file, const char *buffer, +static inline int lprocfs_wr_evict_client(struct file *file, + const char *buffer, unsigned long count, void *data) { return 0; } static inline int lprocfs_wr_ping(struct file *file, const char *buffer, @@ -871,45 +858,53 @@ static inline int lprocfs_wr_ping(struct file *file, const char *buffer, /* Statfs helpers */ static inline int lprocfs_rd_blksize(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_kbytestotal(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_kbytesfree(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_kbytesavail(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_filestotal(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_filesfree(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline int lprocfs_rd_filegroups(char *page, char **start, off_t off, - int count, int *eof, void *data) { return 0; } + int count, int *eof, void *data) +{ return 0; } static inline -void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value) {} +void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value) +{ return; } static inline -void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value) {} +void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value) +{ return; } static inline -void lprocfs_oh_clear(struct obd_histogram *oh) {} +void lprocfs_oh_clear(struct obd_histogram *oh) +{ return; } static inline -unsigned long lprocfs_oh_sum(struct obd_histogram *oh) { return 0; } +unsigned long lprocfs_oh_sum(struct obd_histogram *oh) +{ return 0; } static inline void lprocfs_stats_collect(struct lprocfs_stats *stats, int idx, - struct lprocfs_counter *cnt) {} - + struct lprocfs_counter *cnt) +{ return; } static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx, enum lprocfs_fields_flags field) { return (__u64)0; } -#define LPROCFS_ENTRY() -#define LPROCFS_EXIT() -#define LPROCFS_ENTRY_AND_CHECK(dp) #define LPROC_SEQ_FOPS_RO(name) #define LPROC_SEQ_FOPS(name) diff --git a/lustre/mdd/mdd_lproc.c b/lustre/mdd/mdd_lproc.c index e8f58a9..c15696c 100644 --- a/lustre/mdd/mdd_lproc.c +++ b/lustre/mdd/mdd_lproc.c @@ -188,8 +188,8 @@ static int lprocfs_wr_changelog_mask(struct file *file, const char *buffer, GOTO(out, rc = -EFAULT); kernbuf[count] = 0; - rc = libcfs_str2mask(kernbuf, changelog_type2str, &mdd->mdd_cl.mc_mask, - CHANGELOG_MINMASK, CHANGELOG_ALLMASK); + rc = cfs_str2mask(kernbuf, changelog_type2str, &mdd->mdd_cl.mc_mask, + CHANGELOG_MINMASK, CHANGELOG_ALLMASK); if (rc == 0) rc = count; out: -- 1.8.3.1