summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_stats.h
diff options
context:
space:
mode:
authorBill O'Donnell2015-10-11 20:19:45 +0200
committerDave Chinner2015-10-11 20:19:45 +0200
commit80529c45ab66188a0b3814ba31409b31f5fcb53d (patch)
treef9de7af29683cb58b16856bea822c3b5c044dd68 /fs/xfs/xfs_stats.h
parentxfs: consolidate sysfs ops (diff)
downloadkernel-qcow2-linux-80529c45ab66188a0b3814ba31409b31f5fcb53d.tar.gz
kernel-qcow2-linux-80529c45ab66188a0b3814ba31409b31f5fcb53d.tar.xz
kernel-qcow2-linux-80529c45ab66188a0b3814ba31409b31f5fcb53d.zip
xfs: pass xfsstats structures to handlers and macros
This patch is the next step toward per-fs xfs stats. The patch makes the show and clear routines able to handle any stats structure associated with a kobject. Instead of a single global xfsstats structure, add kobject and a pointer to a per-cpu struct xfsstats. Modify the macros that manipulate the stats accordingly: XFS_STATS_INC, XFS_STATS_DEC, and XFS_STATS_ADD now access xfsstats->xs_stats. The sysfs functions need to get from the kobject back to the xfsstats structure which contains it, and pass the pointer to the ->xs_stats percpu structure into the show & clear routines. Signed-off-by: Bill O'Donnell <billodo@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_stats.h')
-rw-r--r--fs/xfs/xfs_stats.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/fs/xfs/xfs_stats.h b/fs/xfs/xfs_stats.h
index 18807b576394..54f2260299d1 100644
--- a/fs/xfs/xfs_stats.h
+++ b/fs/xfs/xfs_stats.h
@@ -18,9 +18,6 @@
#ifndef __XFS_STATS_H__
#define __XFS_STATS_H__
-int xfs_stats_format(char *buf);
-void xfs_stats_clearall(void);
-
#if defined(CONFIG_PROC_FS) && !defined(XFS_STATS_OFF)
#include <linux/percpu.h>
@@ -217,15 +214,18 @@ struct xfsstats {
__uint64_t xs_read_bytes;
};
-DECLARE_PER_CPU(struct xfsstats, xfsstats);
+int xfs_stats_format(struct xfsstats __percpu *stats, char *buf);
+void xfs_stats_clearall(struct xfsstats __percpu *stats);
+extern struct xstats xfsstats;
-/*
- * We don't disable preempt, not too worried about poking the
- * wrong CPU's stat for now (also aggregated before reporting).
- */
-#define XFS_STATS_INC(v) (per_cpu(xfsstats, current_cpu()).v++)
-#define XFS_STATS_DEC(v) (per_cpu(xfsstats, current_cpu()).v--)
-#define XFS_STATS_ADD(v, inc) (per_cpu(xfsstats, current_cpu()).v += (inc))
+#define XFS_STATS_INC(v) \
+ (per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v++)
+
+#define XFS_STATS_DEC(v) \
+ (per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v--)
+
+#define XFS_STATS_ADD(v, inc) \
+ (per_cpu_ptr(xfsstats.xs_stats, current_cpu())->v += (inc))
extern int xfs_init_procfs(void);
extern void xfs_cleanup_procfs(void);