mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-12-10 00:00:24 +03:00
60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _BCACHEFS_SB_COUNTERS_H
|
|
#define _BCACHEFS_SB_COUNTERS_H
|
|
|
|
#include "bcachefs.h"
|
|
#include "sb/io.h"
|
|
|
|
int bch2_sb_counters_to_cpu(struct bch_fs *);
|
|
int bch2_sb_counters_from_cpu(struct bch_fs *);
|
|
|
|
void bch2_fs_counters_exit(struct bch_fs *);
|
|
int bch2_fs_counters_init(struct bch_fs *);
|
|
|
|
extern const char * const bch2_counter_names[];
|
|
extern const struct bch_sb_field_ops bch_sb_field_ops_counters;
|
|
|
|
long bch2_ioctl_query_counters(struct bch_fs *,
|
|
struct bch_ioctl_query_counters __user *);
|
|
|
|
void bch2_sb_recent_counters_to_text(struct printbuf *out, struct bch_fs_counters *c);
|
|
|
|
#define counter_typecheck(_name, _type) \
|
|
BUILD_BUG_ON(bch2_counter_flags[BCH_COUNTER_##_name] != _type)
|
|
|
|
#define event_inc(_c, _name) \
|
|
do { \
|
|
counter_typecheck(_name, TYPE_COUNTER); \
|
|
this_cpu_inc((_c)->counters.now[BCH_COUNTER_##_name]); \
|
|
} while (0)
|
|
|
|
#define event_add(_c, _name, _nr) \
|
|
do { \
|
|
counter_typecheck(_name, TYPE_SECTORS); \
|
|
this_cpu_add((_c)->counters.now[BCH_COUNTER_##_name], _nr); \
|
|
} while (0)
|
|
|
|
#define event_trace(_c, _name, _buf, ...) \
|
|
do { \
|
|
if (trace_##_name##_enabled()) { \
|
|
CLASS(printbuf, _buf)(); \
|
|
printbuf_indent_add_nextline(&_buf, 2); \
|
|
__VA_ARGS__; \
|
|
trace_##_name(_c, _buf.buf); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define event_add_trace(_c, _name, _nr, ...) \
|
|
do { \
|
|
event_trace(_c, _name, __VA_ARGS__); \
|
|
event_add(_c, _name, _nr); \
|
|
} while (0)
|
|
|
|
#define event_inc_trace(_c, _name, ...) \
|
|
do { \
|
|
event_trace(_c, _name, __VA_ARGS__); \
|
|
event_inc(_c, _name); \
|
|
} while (0)
|
|
|
|
#endif // _BCACHEFS_SB_COUNTERS_H
|