From b9d84bf8f4cd18098fd3cea28cf456d6c7b296da Mon Sep 17 00:00:00 2001 From: Hunter Shaffer Date: Mon, 25 Sep 2023 00:46:28 -0400 Subject: bcachefs: Add iops fields to bch_member Signed-off-by: Hunter Shaffer --- fs/bcachefs/bcachefs_format.h | 28 +++++++++++++++++++++------- fs/bcachefs/opts.c | 5 +++++ fs/bcachefs/opts.h | 1 + fs/bcachefs/sb-members.c | 8 ++++++++ 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/fs/bcachefs/bcachefs_format.h b/fs/bcachefs/bcachefs_format.h index 45701b1230b7..99749f3315fe 100644 --- a/fs/bcachefs/bcachefs_format.h +++ b/fs/bcachefs/bcachefs_format.h @@ -1269,6 +1269,19 @@ struct bch_sb_field_journal_v2 { #define BCH_MIN_NR_NBUCKETS (1 << 6) +#define BCH_IOPS_MEASUREMENTS() \ + x(seqread, 0) \ + x(seqwrite, 1) \ + x(randread, 2) \ + x(randwrite, 3) + +enum bch_iops_measurement { +#define x(t, n) BCH_IOPS_##t = n, + BCH_IOPS_MEASUREMENTS() +#undef x + BCH_IOPS_NR +}; + struct bch_member { __uuid_t uuid; __le64 nbuckets; /* device size */ @@ -1277,19 +1290,20 @@ struct bch_member { __le32 pad; __le64 last_mount; /* time_t */ - __le64 flags[2]; + __le64 flags; + __le32 iops[4]; }; #define BCH_MEMBER_V1_BYTES 56 -LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags[0], 0, 4) +LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags, 0, 4) /* 4-14 unused, was TIER, HAS_(META)DATA, REPLACEMENT */ -LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags[0], 14, 15) -LE64_BITMASK(BCH_MEMBER_DATA_ALLOWED, struct bch_member, flags[0], 15, 20) -LE64_BITMASK(BCH_MEMBER_GROUP, struct bch_member, flags[0], 20, 28) -LE64_BITMASK(BCH_MEMBER_DURABILITY, struct bch_member, flags[0], 28, 30) +LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags, 14, 15) +LE64_BITMASK(BCH_MEMBER_DATA_ALLOWED, struct bch_member, flags, 15, 20) +LE64_BITMASK(BCH_MEMBER_GROUP, struct bch_member, flags, 20, 28) +LE64_BITMASK(BCH_MEMBER_DURABILITY, struct bch_member, flags, 28, 30) LE64_BITMASK(BCH_MEMBER_FREESPACE_INITIALIZED, - struct bch_member, flags[0], 30, 31) + struct bch_member, flags, 30, 31) #if 0 LE64_BITMASK(BCH_MEMBER_NR_READ_ERRORS, struct bch_member, flags[1], 0, 20); diff --git a/fs/bcachefs/opts.c b/fs/bcachefs/opts.c index 739a2ef80945..232f50c73a94 100644 --- a/fs/bcachefs/opts.c +++ b/fs/bcachefs/opts.c @@ -12,6 +12,11 @@ #define x(t, n, ...) [n] = #t, +const char * const bch2_iops_measurements[] = { + BCH_IOPS_MEASUREMENTS() + NULL +}; + const char * const bch2_error_actions[] = { BCH_ERROR_ACTIONS() NULL diff --git a/fs/bcachefs/opts.h b/fs/bcachefs/opts.h index c21c258e4018..55014336c5f7 100644 --- a/fs/bcachefs/opts.h +++ b/fs/bcachefs/opts.h @@ -10,6 +10,7 @@ struct bch_fs; +extern const char * const bch2_iops_measurements[]; extern const char * const bch2_error_actions[]; extern const char * const bch2_fsck_fix_opts[]; extern const char * const bch2_version_upgrade_opts[]; diff --git a/fs/bcachefs/sb-members.c b/fs/bcachefs/sb-members.c index 4c09ad92443b..cb89b2d51146 100644 --- a/fs/bcachefs/sb-members.c +++ b/fs/bcachefs/sb-members.c @@ -2,6 +2,7 @@ #include "bcachefs.h" #include "disk_groups.h" +#include "opts.h" #include "replicas.h" #include "sb-members.h" #include "super-io.h" @@ -172,6 +173,13 @@ static void member_to_text(struct printbuf *out, prt_units_u64(out, device_size << 9); prt_newline(out); + for (unsigned i = 0; i < BCH_IOPS_NR; i++) { + prt_printf(out, "%s iops:", bch2_iops_measurements[i]); + prt_tab(out); + prt_printf(out, "%u", le32_to_cpu(m.iops[i])); + prt_newline(out); + } + prt_printf(out, "Bucket size:"); prt_tab(out); prt_units_u64(out, bucket_size << 9); -- cgit v1.2.3