From: Jos Collin Date: Tue, 23 Feb 2021 13:08:52 +0000 (+0530) Subject: mds: print each flag value X-Git-Tag: v17.1.0~2242^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0838e9fc03c6ac01c911e899566ce321cfc31e97;p=ceph.git mds: print each flag value Fixes: https://tracker.ceph.com/issues/48683 Signed-off-by: Jos Collin --- diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index d372786eed97..5dd578b72b80 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -141,6 +141,7 @@ void MDSMap::dump(Formatter *f) const { f->dump_int("epoch", epoch); f->dump_unsigned("flags", flags); + dump_flags_state(f); f->dump_unsigned("ever_allowed_features", ever_allowed_features); f->dump_unsigned("explicitly_allowed_features", explicitly_allowed_features); f->dump_stream("created") << created; @@ -202,6 +203,16 @@ void MDSMap::dump(Formatter *f) const f->dump_int("standby_count_wanted", std::max(0, standby_count_wanted)); } +void MDSMap::dump_flags_state(Formatter *f) const +{ + f->open_object_section("flags_state"); + f->dump_bool(flag_display.at(CEPH_MDSMAP_NOT_JOINABLE), joinable()); + f->dump_bool(flag_display.at(CEPH_MDSMAP_ALLOW_SNAPS), allows_snaps()); + f->dump_bool(flag_display.at(CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS), allows_multimds_snaps()); + f->dump_bool(flag_display.at(CEPH_MDSMAP_ALLOW_STANDBY_REPLAY), allows_standby_replay()); + f->close_section(); +} + void MDSMap::generate_test_instances(std::list& ls) { MDSMap *m = new MDSMap(); @@ -222,7 +233,9 @@ void MDSMap::print(ostream& out) const { out << "fs_name\t" << fs_name << "\n"; out << "epoch\t" << epoch << "\n"; - out << "flags\t" << hex << flags << dec << "\n"; + out << "flags\t" << hex << flags << dec; + print_flags(out); + out << "\n"; out << "created\t" << created << "\n"; out << "modified\t" << modified << "\n"; out << "tableserver\t" << tableserver << "\n"; @@ -326,6 +339,17 @@ void MDSMap::print_summary(Formatter *f, ostream *out) const //out << ", " << stopped.size() << " stopped"; } +void MDSMap::print_flags(std::ostream& out) const { + if (joinable()) + out << " " << flag_display.at(CEPH_MDSMAP_NOT_JOINABLE); + if (allows_snaps()) + out << " " << flag_display.at(CEPH_MDSMAP_ALLOW_SNAPS); + if (allows_multimds_snaps()) + out << " " << flag_display.at(CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS); + if (allows_standby_replay()) + out << " " << flag_display.at(CEPH_MDSMAP_ALLOW_STANDBY_REPLAY); +} + void MDSMap::get_health(list >& summary, list > *detail) const { diff --git a/src/mds/MDSMap.h b/src/mds/MDSMap.h index fde5e2c4279d..31ae3c48cb4f 100644 --- a/src/mds/MDSMap.h +++ b/src/mds/MDSMap.h @@ -231,6 +231,7 @@ public: } void clear_multimds_snaps_allowed() { clear_flag(CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS); } bool allows_multimds_snaps() const { return test_flag(CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS); } + bool joinable() const { return !test_flag(CEPH_MDSMAP_NOT_JOINABLE); } epoch_t get_epoch() const { return epoch; } void inc_epoch() { epoch++; } @@ -560,8 +561,10 @@ public: void print(std::ostream& out) const; void print_summary(ceph::Formatter *f, std::ostream *out) const; + void print_flags(std::ostream& out) const; void dump(ceph::Formatter *f) const; + void dump_flags_state(Formatter *f) const; static void generate_test_instances(std::list& ls); static bool state_transition_valid(DaemonState prev, DaemonState next); @@ -620,7 +623,13 @@ protected: bool inline_data_enabled = false; uint64_t cached_up_features = 0; - +private: + inline static const std::map flag_display = { + {CEPH_MDSMAP_NOT_JOINABLE, "joinable"}, //inverse for user display + {CEPH_MDSMAP_ALLOW_SNAPS, "allow_snaps"}, + {CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS, "allow_multimds_snaps"}, + {CEPH_MDSMAP_ALLOW_STANDBY_REPLAY, "allow_standby_replay"} + }; }; WRITE_CLASS_ENCODER_FEATURES(MDSMap::mds_info_t) WRITE_CLASS_ENCODER_FEATURES(MDSMap)