summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-05-30 22:34:47 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-05-30 22:34:54 -0400
commitfad6d13aa55f96e01cc6ff516cdfea53b2fc9eb1 (patch)
treebf9577b1d4d226338382dcfe60226ca89d0d2631
parent3c79da3ddd874937fe8b5a7c5772d81d7e16e628 (diff)
fixup! bcachefs: Add persistent counters
-rw-r--r--fs/bcachefs/counters.c12
-rw-r--r--fs/bcachefs/counters.h8
-rw-r--r--fs/bcachefs/super.c1
3 files changed, 11 insertions, 10 deletions
diff --git a/fs/bcachefs/counters.c b/fs/bcachefs/counters.c
index 25a6b38b18b5..6bf267dfd051 100644
--- a/fs/bcachefs/counters.c
+++ b/fs/bcachefs/counters.c
@@ -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 ret;
+ return bch2_sb_counters_to_cpu(c);
}
const struct bch_sb_field_ops bch_sb_field_ops_counters = {
diff --git a/fs/bcachefs/counters.h b/fs/bcachefs/counters.h
index 1f3207a5ee16..4778aa19bf34 100644
--- a/fs/bcachefs/counters.h
+++ b/fs/bcachefs/counters.h
@@ -6,11 +6,11 @@
#include "super-io.h"
-int bch2_sb_counters_to_cpu(struct bch_fs *c);
+int bch2_sb_counters_to_cpu(struct bch_fs *);
+int bch2_sb_counters_from_cpu(struct bch_fs *);
-int bch2_sb_counters_from_cpu(struct bch_fs *c);
-
-int bch2_fs_counters_init(struct bch_fs *c);
+void bch2_fs_counters_exit(struct bch_fs *);
+int bch2_fs_counters_init(struct bch_fs *);
extern const struct bch_sb_field_ops bch_sb_field_ops_counters;
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c
index 82a9ac147b32..c7638a3b6c1d 100644
--- a/fs/bcachefs/super.c
+++ b/fs/bcachefs/super.c
@@ -422,6 +422,7 @@ static void __bch2_fs_free(struct bch_fs *c)
for (i = 0; i < BCH_TIME_STAT_NR; i++)
bch2_time_stats_exit(&c->times[i]);
+ bch2_fs_counters_exit(c);
bch2_fs_snapshots_exit(c);
bch2_fs_quota_exit(c);
bch2_fs_fsio_exit(c);