Whamcloud - gitweb
b=21919 Do not resend quota_ctl requests
[fs/lustre-release.git] / lustre / include / lprocfs_status.h
index 9a35643..c525517 100644 (file)
@@ -78,7 +78,7 @@ struct lprocfs_static_vars {
 /* if we find more consumers this could be generalized */
 #define OBD_HIST_MAX 32
 struct obd_histogram {
-        spinlock_t      oh_lock;
+        cfs_spinlock_t      oh_lock;
         unsigned long   oh_buckets[OBD_HIST_MAX];
 };
 
@@ -139,8 +139,8 @@ enum {
 };
 
 struct lprocfs_atomic {
-        atomic_t               la_entry;
-        atomic_t               la_exit;
+        cfs_atomic_t               la_entry;
+        cfs_atomic_t               la_exit;
 };
 
 #define LC_MIN_INIT ((~(__u64)0) >> 1)
@@ -150,6 +150,7 @@ struct lprocfs_counter {
         unsigned int           lc_config;
         __s64                  lc_count;
         __s64                  lc_sum;
+        __s64                  lc_sum_irq;
         __s64                  lc_min;
         __s64                  lc_max;
         __s64                  lc_sumsquare;
@@ -185,11 +186,14 @@ enum lprocfs_fields_flags {
 struct lprocfs_stats {
         unsigned int           ls_num;     /* # of counters */
         int                    ls_flags; /* See LPROCFS_STATS_FLAG_* */
-        spinlock_t             ls_lock;  /* Lock used only when there are
+        cfs_spinlock_t         ls_lock;  /* Lock used only when there are
                                           * no percpu stats areas */
         struct lprocfs_percpu *ls_percpu[0];
 };
 
+#define OPC_RANGE(seg) (seg ## _LAST_OPC - seg ## _FIRST_OPC)
+
+/* Pack all opcodes down into a single monotonically increasing index */
 static inline int opcode_offset(__u32 opc) {
         if (opc < OST_LAST_OPC) {
                  /* OST opcode */
@@ -197,75 +201,75 @@ static inline int opcode_offset(__u32 opc) {
         } else if (opc < MDS_LAST_OPC) {
                 /* MDS opcode */
                 return (opc - MDS_FIRST_OPC +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(OST));
         } else if (opc < LDLM_LAST_OPC) {
                 /* LDLM Opcode */
                 return (opc - LDLM_FIRST_OPC +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < MGS_LAST_OPC) {
                 /* MGS Opcode */
                 return (opc - MGS_FIRST_OPC +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(LDLM) +
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < OBD_LAST_OPC) {
                 /* OBD Ping */
                 return (opc - OBD_FIRST_OPC +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(MGS) +
+                        OPC_RANGE(LDLM) +
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < LLOG_LAST_OPC) {
                 /* LLOG Opcode */
                 return (opc - LLOG_FIRST_OPC +
-                        (OBD_LAST_OPC - OBD_FIRST_OPC) +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(OBD) +
+                        OPC_RANGE(MGS) +
+                        OPC_RANGE(LDLM) +
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < QUOTA_LAST_OPC) {
                 /* LQUOTA Opcode */
                 return (opc - QUOTA_FIRST_OPC +
-                        (LLOG_LAST_OPC - LLOG_FIRST_OPC) +
-                        (OBD_LAST_OPC - OBD_FIRST_OPC) +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(LLOG) +
+                        OPC_RANGE(OBD) +
+                        OPC_RANGE(MGS) +
+                        OPC_RANGE(LDLM) +
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < SEQ_LAST_OPC) {
                 /* SEQ opcode */
                 return (opc - SEQ_FIRST_OPC +
-                        (QUOTA_LAST_OPC- QUOTA_FIRST_OPC) +
-                        (LLOG_LAST_OPC - LLOG_FIRST_OPC) +
-                        (OBD_LAST_OPC - OBD_FIRST_OPC) +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        OPC_RANGE(QUOTA) +
+                        OPC_RANGE(LLOG) +
+                        OPC_RANGE(OBD) +
+                        OPC_RANGE(MGS) +
+                        OPC_RANGE(LDLM) +
+                        OPC_RANGE(MDS) +
+                        OPC_RANGE(OST));
         } else if (opc < SEC_LAST_OPC) {
                 /* SEC opcode */
                 return (opc - SEC_FIRST_OPC +
-                        (SEQ_LAST_OPC - SEQ_FIRST_OPC) +
-                        (QUOTA_LAST_OPC- QUOTA_FIRST_OPC) +
-                        (LLOG_LAST_OPC - LLOG_FIRST_OPC) +
-                        (OBD_LAST_OPC - OBD_FIRST_OPC) +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        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 < FLD_LAST_OPC) {
                 /* FLD opcode */
                  return (opc - FLD_FIRST_OPC +
-                        (SEC_LAST_OPC - SEC_FIRST_OPC) +
-                        (SEQ_LAST_OPC - SEQ_FIRST_OPC) +
-                        (QUOTA_LAST_OPC- QUOTA_FIRST_OPC) +
-                        (LLOG_LAST_OPC - LLOG_FIRST_OPC) +
-                        (OBD_LAST_OPC - OBD_FIRST_OPC) +
-                        (MGS_LAST_OPC - MGS_FIRST_OPC) +
-                        (LDLM_LAST_OPC - LDLM_FIRST_OPC) +
-                        (MDS_LAST_OPC - MDS_FIRST_OPC) +
-                        (OST_LAST_OPC - OST_FIRST_OPC));
+                        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 {
                 /* Unknown Opcode */
                 return -1;
@@ -273,19 +277,19 @@ static inline int opcode_offset(__u32 opc) {
 }
 
 
-#define LUSTRE_MAX_OPCODES ((OST_LAST_OPC - OST_FIRST_OPC)     + \
-                            (MDS_LAST_OPC - MDS_FIRST_OPC)     + \
-                            (LDLM_LAST_OPC - LDLM_FIRST_OPC)   + \
-                            (MGS_LAST_OPC - MGS_FIRST_OPC)     + \
-                            (OBD_LAST_OPC - OBD_FIRST_OPC)     + \
-                            (LLOG_LAST_OPC - LLOG_FIRST_OPC)   + \
-                            (QUOTA_LAST_OPC - QUOTA_FIRST_OPC) + \
-                            (SEQ_LAST_OPC - SEQ_FIRST_OPC)     + \
-                            (SEC_LAST_OPC - SEC_FIRST_OPC)     + \
-                            (FLD_LAST_OPC - FLD_FIRST_OPC))
+#define LUSTRE_MAX_OPCODES (OPC_RANGE(OST)  + \
+                            OPC_RANGE(MDS)  + \
+                            OPC_RANGE(LDLM) + \
+                            OPC_RANGE(MGS)  + \
+                            OPC_RANGE(OBD)  + \
+                            OPC_RANGE(LLOG) + \
+                            OPC_RANGE(SEC)  + \
+                            OPC_RANGE(SEQ)  + \
+                            OPC_RANGE(SEC)  + \
+                            OPC_RANGE(FLD)  )
 
 #define EXTRA_MAX_OPCODES ((PTLRPC_LAST_CNTR - PTLRPC_FIRST_CNTR)  + \
-                           (EXTRA_LAST_OPC - EXTRA_FIRST_OPC))
+                            OPC_RANGE(EXTRA))
 
 enum {
         PTLRPC_REQWAIT_CNTR = 0,
@@ -352,14 +356,14 @@ static inline int lprocfs_stats_lock(struct lprocfs_stats *stats, int type)
                         rc = 1;
                 if (type & LPROCFS_GET_SMP_ID)
                         rc = 0;
-                spin_lock(&stats->ls_lock);
+                cfs_spin_lock(&stats->ls_lock);
         } else {
                 if (type & LPROCFS_GET_NUM_CPU)
-                        rc = num_possible_cpus();
+                        rc = cfs_num_possible_cpus();
                 if (type & LPROCFS_GET_SMP_ID) {
-                       stats->ls_flags |= LPROCFS_STATS_GET_SMP_ID;
+                        stats->ls_flags |= LPROCFS_STATS_GET_SMP_ID;
                         rc = cfs_get_cpu();
-               }
+                }
         }
         return rc;
 }
@@ -367,9 +371,9 @@ static inline int lprocfs_stats_lock(struct lprocfs_stats *stats, int type)
 static inline void lprocfs_stats_unlock(struct lprocfs_stats *stats)
 {
         if (stats->ls_flags & LPROCFS_STATS_FLAG_NOPERCPU)
-                spin_unlock(&stats->ls_lock);
-       else if (stats->ls_flags & LPROCFS_STATS_GET_SMP_ID)
-               cfs_put_cpu();
+                cfs_spin_unlock(&stats->ls_lock);
+        else if (stats->ls_flags & LPROCFS_STATS_GET_SMP_ID)
+                cfs_put_cpu();
 }
 
 /* Two optimized LPROCFS counter increment functions are provided:
@@ -399,7 +403,7 @@ static inline __u64 lprocfs_stats_collector(struct lprocfs_stats *stats,
         int i;
 
         LASSERT(stats != NULL);
-        for (i = 0; i < num_possible_cpus(); i++)
+        for (i = 0; i < cfs_num_possible_cpus(); i++)
                 ret += lprocfs_read_helper(&(stats->ls_percpu[i]->lp_cntr[idx]),
                                            field);
         return ret;
@@ -420,6 +424,7 @@ extern void lprocfs_counter_init(struct lprocfs_stats *stats, int index,
                                  unsigned conf, const char *name,
                                  const char *units);
 extern void lprocfs_free_obd_stats(struct obd_device *obddev);
+extern void lprocfs_free_md_stats(struct obd_device *obddev);
 struct obd_export;
 struct nid_stat;
 extern int lprocfs_add_clear_entry(struct obd_device * obd,
@@ -434,7 +439,7 @@ extern cfs_proc_dir_entry_t *lprocfs_add_simple(struct proc_dir_entry *root,
                                                 void *data,
                                                 struct file_operations *fops);
 extern struct proc_dir_entry *lprocfs_add_symlink(const char *name,
-                        struct proc_dir_entry *parent, const char *dest);
+                        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);
@@ -563,40 +568,54 @@ int lprocfs_obd_rd_hash(char *page, char **start, off_t off,
 extern int lprocfs_seq_release(struct inode *, struct file *);
 
 /* in lprocfs_stat.c, to protect the private data for proc entries */
-extern struct rw_semaphore _lprocfs_lock;
+extern cfs_rw_semaphore_t _lprocfs_lock;
 #define LPROCFS_ENTRY()           do {  \
-        down_read(&_lprocfs_lock);      \
+        cfs_down_read(&_lprocfs_lock);  \
 } while(0)
 #define LPROCFS_EXIT()            do {  \
-        up_read(&_lprocfs_lock);        \
-} while(0)
-#define LPROCFS_ENTRY_AND_CHECK(dp) do {        \
-        typecheck(struct proc_dir_entry *, dp); \
-        LPROCFS_ENTRY();                        \
-        if ((dp)->deleted) {                    \
-                LPROCFS_EXIT();                 \
-                return -ENODEV;                 \
-        }                                       \
+        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 {  \
-        down_write(&_lprocfs_lock);     \
+        cfs_down_write(&_lprocfs_lock); \
 } while(0)
 #define LPROCFS_WRITE_EXIT()      do {  \
-        up_write(&_lprocfs_lock);       \
+        cfs_up_write(&_lprocfs_lock);   \
 } while(0)
 
+
 /* You must use these macros when you want to refer to
  * the import in a client obd_device for a lprocfs entry */
 #define LPROCFS_CLIMP_CHECK(obd) do {           \
         typecheck(struct obd_device *, obd);    \
-        down_read(&(obd)->u.cli.cl_sem);        \
+        cfs_down_read(&(obd)->u.cli.cl_sem);    \
         if ((obd)->u.cli.cl_import == NULL) {   \
-             up_read(&(obd)->u.cli.cl_sem);     \
+             cfs_up_read(&(obd)->u.cli.cl_sem); \
              return -ENODEV;                    \
         }                                       \
 } while(0)
 #define LPROCFS_CLIMP_EXIT(obd)                 \
-        up_read(&(obd)->u.cli.cl_sem);
+        cfs_up_read(&(obd)->u.cli.cl_sem);
 
 
 /* write the name##_seq_show function, call LPROC_SEQ_FOPS_RO for read-only
@@ -689,25 +708,6 @@ extern int lprocfs_quota_rd_qs_factor(char *page, char **start, off_t off,
 extern int lprocfs_quota_wr_qs_factor(struct file *file, const char *buffer,
                                       unsigned long count, void *data);
 
-/** struct for holding changelog data for seq_file processing */
-struct changelog_seq_iter {
-        void *csi_dev;
-        struct llog_ctxt *csi_ctxt;
-        struct llog_handle *csi_llh;
-        __u64 csi_startrec;
-        __u64 csi_endrec;
-        loff_t csi_pos;
-        int csi_wrote;
-        int csi_startcat;
-        int csi_startidx;
-        int csi_fill:1;
-        int csi_done:1;
-};
-int changelog_seq_open(struct inode *inode, struct file *file,
-                       struct changelog_seq_iter **csih);
-int changelog_seq_release(struct inode *inode, struct file *file);
-loff_t changelog_seq_lseek(struct file *file, loff_t offset, int origin);
-
 
 
 #else
@@ -754,6 +754,8 @@ static inline int lprocfs_alloc_md_stats(struct obd_device *obddev,
 { return 0; }
 static inline void lprocfs_free_obd_stats(struct obd_device *obddev)
 { return; }
+static inline void lprocfs_free_md_stats(struct obd_device *obddev)
+{ return; }
 
 struct obd_export;
 static inline int lprocfs_add_clear_entry(struct obd_export *exp)
@@ -771,7 +773,7 @@ static inline cfs_proc_dir_entry_t *lprocfs_add_simple(struct proc_dir_entry *ro
                                      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 *dest)
+                        struct proc_dir_entry *parent, const char *format, ...)
 {return NULL; }
 static inline void lprocfs_free_per_client_stats(struct obd_device *obd)
 {}