Whamcloud - gitweb
LU-9555 quota: df should return projid-specific values
[fs/lustre-release.git] / lustre / include / lprocfs_status.h
index 63ee9a8..8611349 100644 (file)
 #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;
 };
 
@@ -154,8 +166,14 @@ enum {
        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 {
@@ -395,7 +413,8 @@ struct obd_histogram;
 #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 */
@@ -501,8 +520,6 @@ struct dentry *ldebugfs_add_symlink(const char *name, const char *target,
 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);
@@ -516,14 +533,17 @@ 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
-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);
 
@@ -540,8 +560,6 @@ extern int lprocfs_obd_cleanup(struct obd_device *obd);
 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,
@@ -580,8 +598,15 @@ ssize_t ping_show(struct kobject *kobj, struct attribute *attr,
                  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,
@@ -637,7 +662,7 @@ extern int lprocfs_seq_release(struct inode *, struct file *);
 /* 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)  \
@@ -970,6 +995,10 @@ lprocfs_ping_seq_write(struct file *file, const char __user *buffer,
                       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; }