X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libbcachefs%2Fcounters.c;h=02a996e06a64e3d10483f7fcbffc0de66428f9ed;hb=8d8a9f3e9bdd1d84fbbe0531e81977cc9044654a;hp=25a6b38b18b52f7dbffb42274027d40e87878551;hpb=6f5afc0c12bbf56ffdabe5b2c5297aef255c4baa;p=bcachefs-tools-debian diff --git a/libbcachefs/counters.c b/libbcachefs/counters.c index 25a6b38..02a996e 100644 --- a/libbcachefs/counters.c +++ b/libbcachefs/counters.c @@ -5,7 +5,7 @@ /* BCH_SB_FIELD_counters */ -const char * const bch2_counter_names[] = { +static const char * const bch2_counter_names[] = { #define x(t, n, ...) (#t), BCH_PERSISTENT_COUNTERS() #undef x @@ -27,7 +27,7 @@ static int bch2_sb_counters_validate(struct bch_sb *sb, return 0; }; -void bch2_sb_counters_to_text(struct printbuf *out, struct bch_sb *sb, +static void bch2_sb_counters_to_text(struct printbuf *out, struct bch_sb *sb, struct bch_sb_field *f) { struct bch_sb_field_counters *ctrs = field_to_type(f, counters); @@ -36,19 +36,19 @@ void bch2_sb_counters_to_text(struct printbuf *out, struct bch_sb *sb, for (i = 0; i < nr; i++) { if (i < BCH_COUNTER_NR) - pr_buf(out, "%s", bch2_counter_names[i]); + prt_printf(out, "%s ", bch2_counter_names[i]); else - pr_buf(out, "(unknown)"); + prt_printf(out, "(unknown)"); - pr_tab(out); - pr_buf(out, "%llu", le64_to_cpu(ctrs->d[i])); - pr_newline(out); - }; + prt_tab(out); + prt_printf(out, "%llu", le64_to_cpu(ctrs->d[i])); + prt_newline(out); + } }; int bch2_sb_counters_to_cpu(struct bch_fs *c) { - struct bch_sb_field_counters *ctrs = bch2_sb_get_counters(c->disk_sb.sb); + struct bch_sb_field_counters *ctrs = bch2_sb_field_get(c->disk_sb.sb, counters); unsigned int i; unsigned int nr = bch2_sb_counter_nr_entries(ctrs); u64 val = 0; @@ -66,13 +66,13 @@ int bch2_sb_counters_to_cpu(struct bch_fs *c) int bch2_sb_counters_from_cpu(struct bch_fs *c) { - struct bch_sb_field_counters *ctrs = bch2_sb_get_counters(c->disk_sb.sb); + struct bch_sb_field_counters *ctrs = bch2_sb_field_get(c->disk_sb.sb, counters); struct bch_sb_field_counters *ret; unsigned int i; unsigned int nr = bch2_sb_counter_nr_entries(ctrs); if (nr < BCH_COUNTER_NR) { - ret = bch2_sb_resize_counters(&c->disk_sb, + ret = bch2_sb_field_resize(&c->disk_sb, counters, sizeof(*ctrs) / sizeof(u64) + BCH_COUNTER_NR); if (ret) { @@ -87,18 +87,18 @@ int bch2_sb_counters_from_cpu(struct bch_fs *c) return 0; } -int bch2_fs_counters_init(struct bch_fs *c) +void bch2_fs_counters_exit(struct bch_fs *c) { - int ret = 0; + free_percpu(c->counters); +} +int bch2_fs_counters_init(struct bch_fs *c) +{ c->counters = __alloc_percpu(sizeof(u64) * BCH_COUNTER_NR, sizeof(u64)); - if (!c->counters) - return -ENOMEM; - - ret = bch2_sb_counters_to_cpu(c); + return -BCH_ERR_ENOMEM_fs_counters_init; - return ret; + return bch2_sb_counters_to_cpu(c); } const struct bch_sb_field_ops bch_sb_field_ops_counters = {