mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-02 00:00:03 +03:00
69 lines
1.9 KiB
C
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_ */
|