#include <libcfs/libcfs.h>
#include <uapi/linux/lustre/lustre_idl.h>
+/*
+ * Liuux 5.6 introduces proc_ops with v5.5-8862-gd56c0d45f0e2
+ * Now that proc and debugfs use separate operation vector types
+ * separate containers are also needed.
+ */
struct lprocfs_vars {
const char *name;
const struct file_operations *fops;
void *data;
- /**
- * /proc file mode.
- */
+ /** /proc file mode. */
+ mode_t proc_mode;
+};
+
+/** Provide a debugfs container */
+struct ldebugfs_vars {
+ const char *name;
+ const struct file_operations *fops;
+ void *data;
+ /** debugfs file mode. */
mode_t proc_mode;
};
LPROCFS_TYPE_BYTES = 0x0200,
LPROCFS_TYPE_PAGES = 0x0400,
LPROCFS_TYPE_USEC = 0x0800,
-};
+ LPROCFS_TYPE_LATENCY = LPROCFS_TYPE_USEC |
+ LPROCFS_CNTR_AVGMINMAX |
+ LPROCFS_CNTR_STDDEV,
+ LPROCFS_TYPE_BYTES_FULL = LPROCFS_TYPE_BYTES |
+ LPROCFS_CNTR_AVGMINMAX |
+ LPROCFS_CNTR_STDDEV,
+};
#define LC_MIN_INIT ((~(__u64)0) >> 1)
struct lprocfs_counter_header {
#define JOBSTATS_NODELOCAL "nodelocal"
#define JOBSTATS_SESSION "session"
-typedef void (*cntr_init_callback)(struct lprocfs_stats *stats);
+typedef void (*cntr_init_callback)(struct lprocfs_stats *stats,
+ unsigned int offset);
struct obd_job_stats {
struct cfs_hash *ojs_hash; /* hash of jobids */
static inline int lprocfs_exp_cleanup(struct obd_export *exp)
{ return 0; }
#endif
-struct dentry *ldebugfs_add_simple(struct dentry *root, char *name, void *data,
- const struct file_operations *fops);
extern struct proc_dir_entry *
lprocfs_add_simple(struct proc_dir_entry *root, char *name,
void *data, const struct file_operations *fops);
size_t count, loff_t *off);
extern int lprocfs_nid_stats_clear_seq_show(struct seq_file *file, void *data);
#endif
-extern int ldebugfs_register_stats(struct dentry *parent, const char *name,
- struct lprocfs_stats *stats);
extern int lprocfs_register_stats(struct proc_dir_entry *root, const char *name,
- struct lprocfs_stats *stats);
+ struct lprocfs_stats *stats);
+extern const struct file_operations ldebugfs_stats_seq_fops;
/* lprocfs_status.c */
-extern void ldebugfs_add_vars(struct dentry *parent, struct lprocfs_vars *var,
+extern void ldebugfs_add_vars(struct dentry *parent, struct ldebugfs_vars *var,
void *data);
+extern struct dentry *ldebugfs_register(const char *name,
+ struct dentry *parent,
+ struct ldebugfs_vars *list,
+ void *data);
extern int lprocfs_add_vars(struct proc_dir_entry *root,
struct lprocfs_vars *var, void *data);
extern const struct file_operations lprocfs_evict_client_fops;
#endif
-int ldebugfs_seq_create(struct dentry *parent, const char *name, umode_t mode,
- const struct file_operations *seq_fops, void *data);
extern int lprocfs_seq_create(struct proc_dir_entry *parent, const char *name,
mode_t mode,
const struct file_operations *seq_fops,
char *buffer);
extern ssize_t
+ldebugfs_import_seq_write(struct file *file, const char __user *buffer,
+ size_t count, loff_t *off);
+static inline ssize_t
lprocfs_import_seq_write(struct file *file, const char __user *buffer,
- size_t count, loff_t *off);
+ size_t count, loff_t *off)
+{
+ return ldebugfs_import_seq_write(file, buffer, count, 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 __user *buffer,
/* write the name##_seq_show function, call LDEBUGFS_SEQ_FOPS_RO for read-only
* debugfs entries; otherwise, you will define name##_seq_write function also
* for a read-write debugfs entry, and then call LDEBUGFS_SEQ_FOPS instead.
- * Finally, call ldebugfs_seq_create(obd, filename, 0444, &name#_fops, data);
+ * Finally, call debugfs_create_file(filename, 0444, obd, data, &name#_fops);
*/
#define __LDEBUGFS_SEQ_FOPS(name, custom_seq_write) \
static int name##_single_open(struct inode *inode, struct file *file) \
size_t count, loff_t *off)
{ return 0; }
static inline ssize_t
+ldebugfs_import_seq_write(struct file *file, const char __user *buffer,
+ size_t count, loff_t *off)
+{ return 0; }
+static inline ssize_t
lprocfs_import_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{ return 0; }