bcachefs-tools/libbcache/stats.h
2017-03-10 12:40:01 -09:00

69 lines
1.9 KiB
C

#ifndef _BCACHE_STATS_H_
#define _BCACHE_STATS_H_
#include "stats_types.h"
struct bch_fs;
struct cached_dev;
struct bcache_device;
#ifndef NO_BCACHE_ACCOUNTING
void bch_cache_accounting_init(struct cache_accounting *, struct closure *);
int bch_cache_accounting_add_kobjs(struct cache_accounting *, struct kobject *);
void bch_cache_accounting_clear(struct cache_accounting *);
void bch_cache_accounting_destroy(struct cache_accounting *);
#else
static inline void bch_cache_accounting_init(struct cache_accounting *acc,
struct closure *cl) {}
static inline int bch_cache_accounting_add_kobjs(struct cache_accounting *acc,
struct kobject *cl)
{
return 0;
}
static inline void bch_cache_accounting_clear(struct cache_accounting *acc) {}
static inline void bch_cache_accounting_destroy(struct cache_accounting *acc) {}
#endif
static inline void mark_cache_stats(struct cache_stat_collector *stats,
bool hit, bool bypass)
{
atomic_inc(&stats->cache_hit_array[!bypass][!hit]);
}
static inline void bch_mark_cache_accounting(struct bch_fs *c,
struct cached_dev *dc,
bool hit, bool bypass)
{
mark_cache_stats(&dc->accounting.collector, hit, bypass);
mark_cache_stats(&c->accounting.collector, hit, bypass);
}
static inline void bch_mark_sectors_bypassed(struct bch_fs *c,
struct cached_dev *dc,
unsigned sectors)
{
atomic_add(sectors, &dc->accounting.collector.sectors_bypassed);
atomic_add(sectors, &c->accounting.collector.sectors_bypassed);
}
static inline void bch_mark_gc_write(struct bch_fs *c, int sectors)
{
atomic_add(sectors, &c->accounting.collector.gc_write_sectors);
}
static inline void bch_mark_foreground_write(struct bch_fs *c, int sectors)
{
atomic_add(sectors, &c->accounting.collector.foreground_write_sectors);
}
static inline void bch_mark_discard(struct bch_fs *c, int sectors)
{
atomic_add(sectors, &c->accounting.collector.discard_sectors);
}
#endif /* _BCACHE_STATS_H_ */