X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flprocfs_status.h;h=319f3b9ddc898df1dcfd62fd5eab15b0d4db98c9;hp=6156c089601ecac01b4eb27798e3b3ab3c9f68ee;hb=8701e7e4b5ec1b34700c95b9b6588f4745730b72;hpb=8c47378b057e72d6125f4baffe8721e0734d0d3f diff --git a/lustre/include/lprocfs_status.h b/lustre/include/lprocfs_status.h index 6156c08..319f3b9 100644 --- a/lustre/include/lprocfs_status.h +++ b/lustre/include/lprocfs_status.h @@ -54,21 +54,34 @@ #include #include +#ifndef HAVE_ONLY_PROCFS_SEQ struct lprocfs_vars { const char *name; - cfs_read_proc_t *read_fptr; - cfs_write_proc_t *write_fptr; + read_proc_t *read_fptr; + write_proc_t *write_fptr; void *data; const struct file_operations *fops; /** * /proc file mode. - */ - mode_t proc_mode; + */ + mode_t proc_mode; }; struct lprocfs_static_vars { - struct lprocfs_vars *module_vars; - struct lprocfs_vars *obd_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; + /** + * /proc file mode. + */ + mode_t proc_mode; }; /* if we find more consumers this could be generalized */ @@ -289,9 +302,23 @@ static inline int opcode_offset(__u32 opc) { OPC_RANGE(LDLM) + OPC_RANGE(MDS) + OPC_RANGE(OST)); - } else if (opc < UPDATE_LAST_OPC) { + } else if (opc < OUT_UPDATE_LAST_OPC) { /* update opcode */ - return (opc - UPDATE_FIRST_OPC + + return (opc - OUT_UPDATE_FIRST_OPC + + OPC_RANGE(FLD) + + OPC_RANGE(SEC) + + OPC_RANGE(SEQ) + + OPC_RANGE(QUOTA) + + OPC_RANGE(LLOG) + + OPC_RANGE(OBD) + + OPC_RANGE(MGS) + + OPC_RANGE(LDLM) + + OPC_RANGE(MDS) + + OPC_RANGE(OST)); + } else if (opc < LFSCK_LAST_OPC) { + /* LFSCK opcode */ + return (opc - LFSCK_FIRST_OPC + + OPC_RANGE(OUT_UPDATE) + OPC_RANGE(FLD) + OPC_RANGE(SEC) + OPC_RANGE(SEQ) + @@ -303,9 +330,9 @@ static inline int opcode_offset(__u32 opc) { OPC_RANGE(MDS) + OPC_RANGE(OST)); } else { - /* Unknown Opcode */ - return -1; - } + /* Unknown Opcode */ + return -1; + } } @@ -319,7 +346,8 @@ static inline int opcode_offset(__u32 opc) { OPC_RANGE(SEQ) + \ OPC_RANGE(SEC) + \ OPC_RANGE(FLD) + \ - OPC_RANGE(UPDATE)) + OPC_RANGE(OUT_UPDATE) + \ + OPC_RANGE(LFSCK)) #define EXTRA_MAX_OPCODES ((PTLRPC_LAST_CNTR - PTLRPC_FIRST_CNTR) + \ OPC_RANGE(EXTRA)) @@ -383,13 +411,13 @@ static inline void s2dhms(struct dhms *ts, time_t secs) typedef void (*cntr_init_callback)(struct lprocfs_stats *stats); struct obd_job_stats { - cfs_hash_t *ojs_hash; - cfs_list_t 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; + 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; }; #ifdef LPROCFS @@ -573,52 +601,75 @@ struct obd_export; struct nid_stat; extern int lprocfs_add_clear_entry(struct obd_device * obd, cfs_proc_dir_entry_t *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_cleanup(struct obd_export *exp); -extern 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); +#else +static inline int lprocfs_exp_cleanup(struct obd_export *exp) +{ return 0; } +#endif +extern struct proc_dir_entry * +lprocfs_add_simple(struct proc_dir_entry *root, char *name, +#ifndef HAVE_ONLY_PROCFS_SEQ + read_proc_t *read_proc, write_proc_t *write_proc, +#endif + void *data, const struct file_operations *fops); 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); +#ifdef HAVE_SERVER_SUPPORT +#ifndef HAVE_ONLY_PROCFS_SEQ 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); - +#endif +extern ssize_t +lprocfs_nid_stats_clear_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off); +extern int lprocfs_nid_stats_clear_seq_show(struct seq_file *file, void *data); +#endif extern int lprocfs_register_stats(cfs_proc_dir_entry_t *root, const char *name, struct lprocfs_stats *stats); /* lprocfs_status.c */ +#ifndef HAVE_ONLY_PROCFS_SEQ extern int lprocfs_add_vars(cfs_proc_dir_entry_t *root, struct lprocfs_vars *var, 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); +#endif +extern int lprocfs_seq_add_vars(cfs_proc_dir_entry_t *root, + struct lprocfs_seq_vars *var, + void *data); +extern cfs_proc_dir_entry_t * +lprocfs_seq_register(const char *name, cfs_proc_dir_entry_t *parent, + struct lprocfs_seq_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); +#ifndef HAVE_ONLY_PROCFS_SEQ extern void lprocfs_try_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); - extern int lprocfs_obd_setup(struct obd_device *obd, struct lprocfs_vars *list); +#endif +extern int lprocfs_seq_obd_setup(struct obd_device *dev); extern int lprocfs_obd_cleanup(struct obd_device *obd); -extern struct file_operations lprocfs_evict_client_fops; - -extern int lprocfs_seq_create(cfs_proc_dir_entry_t *parent, const char *name, +#ifdef HAVE_SERVER_SUPPORT +extern const struct file_operations lprocfs_evict_client_fops; +#endif +extern int lprocfs_seq_create(struct proc_dir_entry *parent, const char *name, mode_t mode, const struct file_operations *seq_fops, void *data); @@ -628,7 +679,7 @@ extern int lprocfs_obd_seq_create(struct obd_device *dev, const char *name, void *data); /* Generic callbacks */ - +#ifndef HAVE_ONLY_PROCFS_SEQ extern int lprocfs_rd_u64(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_rd_atomic(char *page, char **start, off_t off, @@ -637,8 +688,6 @@ extern int lprocfs_wr_atomic(struct file *file, const char *buffer, unsigned long count, void *data); extern int lprocfs_rd_uint(char *page, char **start, off_t off, int count, int *eof, void *data); -extern int lprocfs_wr_uint(struct file *file, const char *buffer, - unsigned long count, void *data); extern int lprocfs_rd_uuid(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_rd_name(char *page, char **start, off_t off, @@ -657,15 +706,50 @@ extern int lprocfs_rd_num_exports(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_rd_numrefs(char *page, char **start, off_t off, int count, int *eof, void *data); +#endif +extern int lprocfs_u64_seq_show(struct seq_file *m, void *data); +extern int lprocfs_atomic_seq_show(struct seq_file *m, void *data); +extern ssize_t lprocfs_atomic_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off); +extern int lprocfs_uint_seq_show(struct seq_file *m, void *data); +extern ssize_t lprocfs_uint_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off); +extern int lprocfs_wr_uint(struct file *file, const char *buffer, + unsigned long count, void *data); +extern int lprocfs_uuid_seq_show(struct seq_file *m, void *data); +extern int lprocfs_name_seq_show(struct seq_file *m, void *data); +extern int lprocfs_server_uuid_seq_show(struct seq_file *m, void *data); +extern int lprocfs_conn_uuid_seq_show(struct seq_file *m, void *data); +extern int lprocfs_import_seq_show(struct seq_file *m, void *data); +extern int lprocfs_state_seq_show(struct seq_file *m, void *data); +extern int lprocfs_connect_flags_seq_show(struct seq_file *m, void *data); +#ifdef HAVE_SERVER_SUPPORT +extern int lprocfs_num_exports_seq_show(struct seq_file *m, void *data); +#endif struct adaptive_timeout; +#ifndef HAVE_ONLY_PROCFS_SEQ extern int lprocfs_at_hist_helper(char *page, int count, int rc, struct adaptive_timeout *at); extern int lprocfs_rd_timeouts(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_wr_timeouts(struct file *file, const char *buffer, unsigned long count, void *data); +#endif +extern int lprocfs_seq_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, + size_t count, loff_t *off); +#ifndef HAVE_ONLY_PROCFS_SEQ +#ifdef HAVE_SERVER_SUPPORT +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); extern int lprocfs_wr_evict_client(struct file *file, const char *buffer, unsigned long count, void *data); +#endif extern int lprocfs_wr_ping(struct file *file, const char *buffer, unsigned long count, void *data); extern int lprocfs_wr_import(struct file *file, const char *buffer, @@ -674,8 +758,25 @@ extern int lprocfs_rd_pinger_recov(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_wr_pinger_recov(struct file *file, const char *buffer, unsigned long count, void *data); +#endif +#ifdef HAVE_SERVER_SUPPORT +extern ssize_t +lprocfs_evict_client_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off); +#endif +extern ssize_t +lprocfs_ping_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off); +extern ssize_t +lprocfs_import_seq_write(struct file *file, const char *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, + size_t count, loff_t *off); /* Statfs helpers */ +#ifndef HAVE_ONLY_PROCFS_SEQ extern int lprocfs_rd_blksize(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_rd_kbytestotal(char *page, char **start, off_t off, @@ -690,11 +791,19 @@ extern int lprocfs_rd_filesfree(char *page, char **start, off_t off, int count, int *eof, void *data); extern int lprocfs_rd_filegroups(char *page, char **start, off_t off, int count, int *eof, void *data); +#endif +extern int lprocfs_blksize_seq_show(struct seq_file *m, void *data); +extern int lprocfs_kbytestotal_seq_show(struct seq_file *m, void *data); +extern int lprocfs_kbytesfree_seq_show(struct seq_file *m, void *data); +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 *buffer, unsigned long count, int *val); extern int lprocfs_write_frac_helper(const char *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 *buffer, unsigned long count, @@ -703,7 +812,7 @@ extern int lprocfs_write_frac_u64_helper(const char *buffer, unsigned long count, __u64 *val, int mult); char *lprocfs_find_named_value(const char *buffer, const char *name, - unsigned long *count); + size_t *count); void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value); void lprocfs_oh_tally_log2(struct obd_histogram *oh, unsigned int value); void lprocfs_oh_clear(struct obd_histogram *oh); @@ -712,10 +821,11 @@ unsigned long lprocfs_oh_sum(struct obd_histogram *oh); void lprocfs_stats_collect(struct lprocfs_stats *stats, int idx, struct lprocfs_counter *cnt); +#ifdef HAVE_SERVER_SUPPORT +#ifndef HAVE_ONLY_PROCFS_SEQ /* lprocfs_status.c: recovery status */ int lprocfs_obd_rd_recovery_status(char *page, char **start, off_t off, int count, int *eof, void *data); - /* lprocfs_statuc.c: hash statistics */ int lprocfs_obd_rd_hash(char *page, char **start, off_t off, int count, int *eof, void *data); @@ -725,7 +835,19 @@ int lprocfs_obd_rd_ir_factor(char *page, char **start, off_t off, int count, int *eof, void *data); int lprocfs_obd_wr_ir_factor(struct file *file, const char *buffer, unsigned long count, void *data); +#endif +/* lprocfs_status.c: recovery status */ +int lprocfs_recovery_status_seq_show(struct seq_file *m, void *data); + +/* lprocfs_status.c: hash statistics */ +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, + size_t count, loff_t *off); +#endif extern int lprocfs_single_release(cfs_inode_t *, struct file *); extern int lprocfs_seq_release(cfs_inode_t *, struct file *); @@ -742,44 +864,82 @@ extern int lprocfs_seq_release(cfs_inode_t *, struct file *); #define LPROCFS_CLIMP_EXIT(obd) \ up_read(&(obd)->u.cli.cl_sem); - /* write the name##_seq_show function, call LPROC_SEQ_FOPS_RO for read-only proc entries; otherwise, you will define name##_seq_write function also for 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##_single_open(cfs_inode_t *inode, struct file *file) { \ - struct proc_dir_entry *dp = PDE(inode); \ - LPROCFS_ENTRY_CHECK(dp); \ - return single_open(file, name##_seq_show, dp->data); \ -} \ -struct file_operations name##_fops = { \ - .owner = THIS_MODULE, \ - .open = name##_single_open, \ - .read = seq_read, \ - .write = custom_seq_write, \ - .llseek = seq_lseek, \ - .release = lprocfs_single_release, \ +#define __LPROC_SEQ_FOPS(name, custom_seq_write) \ +static int name##_single_open(cfs_inode_t *inode, struct file *file) \ +{ \ + LPROCFS_ENTRY_CHECK(PDE(inode)); \ + return single_open(file, name##_seq_show, PDE_DATA(inode)); \ +} \ +struct file_operations name##_fops = { \ + .owner = THIS_MODULE, \ + .open = name##_single_open, \ + .read = seq_read, \ + .write = custom_seq_write, \ + .llseek = seq_lseek, \ + .release = lprocfs_single_release, \ } -#define LPROC_SEQ_FOPS_RO(name) __LPROC_SEQ_FOPS(name, NULL) -#define LPROC_SEQ_FOPS(name) __LPROC_SEQ_FOPS(name, name##_seq_write) +#define LPROC_SEQ_FOPS_RO(name) __LPROC_SEQ_FOPS(name, NULL) +#define LPROC_SEQ_FOPS(name) __LPROC_SEQ_FOPS(name, name##_seq_write) + +#define LPROC_SEQ_FOPS_RO_TYPE(name, type) \ + static int name##_##type##_seq_show(struct seq_file *m, void *v)\ + { \ + return lprocfs_##type##_seq_show(m, m->private); \ + } \ + LPROC_SEQ_FOPS_RO(name##_##type) + +#define LPROC_SEQ_FOPS_RW_TYPE(name, type) \ + static int name##_##type##_seq_show(struct seq_file *m, void *v)\ + { \ + return lprocfs_##type##_seq_show(m, m->private); \ + } \ + static ssize_t name##_##type##_seq_write(struct file *file, \ + const char *buffer, size_t count, loff_t *off) \ + { \ + struct seq_file *seq = file->private_data; \ + return lprocfs_##type##_seq_write(file, buffer, \ + count, seq->private); \ + } \ + LPROC_SEQ_FOPS(name##_##type); + +#define LPROC_SEQ_FOPS_WO_TYPE(name, type) \ + static ssize_t name##_##type##_write(struct file *file, \ + const char *buffer, size_t count, loff_t *off) \ + { \ + return lprocfs_##type##_seq_write(file, buffer, count, off); \ + } \ + static int name##_##type##_open(cfs_inode_t *inode, struct file *file) \ + { \ + return single_open(file, NULL, PDE_DATA(inode)); \ + } \ + struct file_operations name##_##type##_fops = { \ + .open = name##_##type##_open, \ + .write = name##_##type##_write, \ + .release = lprocfs_single_release, \ + }; + +/* lproc_ptlrpc.c */ +struct ptlrpc_request; +extern void target_print_req(void *seq_file, struct ptlrpc_request *req); +#ifdef HAVE_SERVER_SUPPORT /* lprocfs_jobstats.c */ int lprocfs_job_stats_log(struct obd_device *obd, char *jobid, int event, long amount); void lprocfs_job_stats_fini(struct obd_device *obd); int lprocfs_job_stats_init(struct obd_device *obd, int cntr_num, cntr_init_callback fn); +#ifndef HAVE_ONLY_PROCFS_SEQ int lprocfs_rd_job_interval(char *page, char **start, off_t off, int count, int *eof, void *data); int lprocfs_wr_job_interval(struct file *file, const char *buffer, unsigned long count, void *data); -/* lproc_ptlrpc.c */ -struct ptlrpc_request; -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); @@ -791,12 +951,40 @@ int lprocfs_obd_rd_recovery_time_hard(char *page, char **start, off_t off, int lprocfs_obd_wr_recovery_time_hard(struct file *file, const char *buffer, unsigned long count, void *data); +int lprocfs_target_rd_instance(char *page, char **start, off_t off, + int count, int *eof, void *data); +#endif +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, + 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, + 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); +int lprocfs_target_instance_seq_show(struct seq_file *m, void *data); +#endif +#ifndef HAVE_ONLY_PROCFS_SEQ int lprocfs_obd_rd_max_pages_per_rpc(char *page, char **start, off_t off, int count, int *eof, void *data); int lprocfs_obd_wr_max_pages_per_rpc(struct file *file, const char *buffer, unsigned long count, void *data); -int lprocfs_target_rd_instance(char *page, char **start, off_t off, - int count, int *eof, 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); + +struct root_squash_info; +int lprocfs_wr_root_squash(const char *buffer, unsigned long count, + struct root_squash_info *squash, char *name); +int lprocfs_wr_nosquash_nids(const char *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, @@ -917,44 +1105,67 @@ static inline void lprocfs_free_md_stats(struct obd_device *obddev) struct obd_export; static inline int lprocfs_add_clear_entry(struct obd_export *exp) { return 0; } +static inline void lprocfs_free_per_client_stats(struct obd_device *obd) +{ return; } +#ifdef HAVE_SERVER_SUPPORT +#ifndef HAVE_ONLY_PROCFS_SEQ +static inline +int lprocfs_nid_stats_clear_write(struct file *file, const char *buffer, + unsigned long count, void *data) +{return count;} +static inline +int lprocfs_nid_stats_clear_read(char *page, char **start, off_t off, + int count, int *eof, void *data) +{return count;} +#endif +static inline +ssize_t lprocfs_nid_stats_seq_write(struct file *file, const char *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) { return 0; } +#endif static inline int lprocfs_exp_cleanup(struct obd_export *exp) { return 0; } -static inline cfs_proc_dir_entry_t * +static inline struct proc_dir_entry * 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) +#ifndef HAVE_ONLY_PROCFS_SEQ + read_proc_t *read_proc, write_proc_t *write_proc, +#endif + void *data, const 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, ...) {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) -{return count;} -static inline -int lprocfs_nid_stats_clear_read(char *page, char **start, off_t off, - int count, int *eof, void *data) -{return count;} - +#ifndef HAVE_ONLY_PROCFS_SEQ static inline cfs_proc_dir_entry_t * lprocfs_register(const char *name, cfs_proc_dir_entry_t *parent, - struct lprocfs_vars *list, void *data) + 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; } +#endif +static inline int lprocfs_seq_add_vars(cfs_proc_dir_entry_t *root, + struct lprocfs_seq_vars *var, + void *data) +{ return 0; } +static inline cfs_proc_dir_entry_t * +lprocfs_seq_register(const char *name, cfs_proc_dir_entry_t *parent, + struct lprocfs_seq_vars *list, void *data) +{ return NULL; } 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) { return; } +#ifndef HAVE_ONLY_PROCFS_SEQ static inline void lprocfs_try_remove_proc_entry(const char *name, struct proc_dir_entry *parent) { return; } @@ -962,13 +1173,17 @@ static inline cfs_proc_dir_entry_t *lprocfs_srch(cfs_proc_dir_entry_t *head, const char *name) { return 0; } static inline int lprocfs_obd_setup(struct obd_device *dev, - struct lprocfs_vars *list) + struct lprocfs_vars *list) +{ return 0; } +#endif +static inline int lprocfs_seq_obd_setup(struct obd_device *dev) { 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; } +#ifndef HAVE_ONLY_PROCFS_SEQ static inline int lprocfs_rd_uuid(char *page, char **start, off_t off, int count, int *eof, void *data) { return 0; } @@ -996,8 +1211,7 @@ static inline int lprocfs_rd_connect_flags(char *page, char **start, off_t off, static inline int lprocfs_rd_num_exports(char *page, char **start, off_t off, int count, int *eof, void *data) { return 0; } -static inline int lprocfs_rd_numrefs(char *page, char **start, off_t off, - int count, int *eof, void *data) +static inline int lprocfs_rd_numrefs(struct seq_file *m, void *data) { return 0; } struct adaptive_timeout; static inline int lprocfs_at_hist_helper(char *page, int count, int rc, @@ -1010,10 +1224,12 @@ static inline int lprocfs_wr_timeouts(struct file *file, const char *buffer, unsigned long count, void *data) { return 0; } +#ifdef HAVE_SERVER_SUPPORT static inline int lprocfs_wr_evict_client(struct file *file, const char *buffer, unsigned long count, void *data) { return 0; } +#endif static inline int lprocfs_wr_ping(struct file *file, const char *buffer, unsigned long count, void *data) { return 0; } @@ -1023,8 +1239,59 @@ static inline int lprocfs_wr_import(struct file *file, const char *buffer, static inline int lprocfs_wr_pinger_recov(struct file *file, const char *buffer, unsigned long count, void *data) { return 0; } +#endif +static inline int lprocfs_uuid_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_name_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_server_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_conn_uuid_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_import_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_state_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline int lprocfs_connect_flags_seq_show(struct seq_file *m, void *data) +{ return 0; } +#ifdef HAVE_SERVER_SUPPORT +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) +{ 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, + 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, + size_t count, loff_t *off) +{ return 0; } +#endif +static inline ssize_t +lprocfs_ping_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off) +{ return 0; } +static inline ssize_t +lprocfs_import_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off) +{ return 0; } +static inline int +lprocfs_pinger_recov_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline ssize_t +lprocfs_pinger_recov_seq_write(struct file *file, const char *buffer, + size_t count, loff_t *off) +{ return 0; } /* Statfs helpers */ +#ifndef HAVE_ONLY_PROCFS_SEQ static inline int lprocfs_rd_blksize(char *page, char **start, off_t off, int count, int *eof, void *data) @@ -1049,9 +1316,24 @@ static inline int lprocfs_rd_filesfree(char *page, char **start, off_t off, int count, int *eof, void *data) { return 0; } +#endif static inline -int lprocfs_rd_filegroups(char *page, char **start, off_t off, - int count, int *eof, void *data) +int lprocfs_blksize_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline +int lprocfs_kbytestotal_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline +int lprocfs_kbytesfree_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline +int lprocfs_kbytesavail_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline +int lprocfs_filestotal_seq_show(struct seq_file *m, void *data) +{ return 0; } +static inline +int lprocfs_filesfree_seq_show(struct seq_file *m, void *data) { return 0; } static inline void lprocfs_oh_tally(struct obd_histogram *oh, unsigned int value) @@ -1076,6 +1358,9 @@ __u64 lprocfs_stats_collector(struct lprocfs_stats *stats, int idx, #define LPROC_SEQ_FOPS_RO(name) #define LPROC_SEQ_FOPS(name) +#define LPROC_SEQ_FOPS_RO_TYPE(name, type) +#define LPROC_SEQ_FOPS_RW_TYPE(name, type) +#define LPROC_SEQ_FOPS_WO_TYPE(name, type) /* lprocfs_jobstats.c */ static inline