]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: print each flag value
authorJos Collin <jcollin@redhat.com>
Tue, 23 Feb 2021 13:08:52 +0000 (18:38 +0530)
committerJos Collin <jcollin@redhat.com>
Thu, 8 Apr 2021 05:39:17 +0000 (11:09 +0530)
Fixes: https://tracker.ceph.com/issues/48683
Signed-off-by: Jos Collin <jcollin@redhat.com>
src/mds/MDSMap.cc
src/mds/MDSMap.h

index d372786eed97bab64b624069a233ad64e4992554..5dd578b72b8062bbe0f16071b75899bb6b92db78 100644 (file)
@@ -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<MDSMap*>& 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<pair<health_status_t,string> >& summary,
                        list<pair<health_status_t,string> > *detail) const
 {
index fde5e2c4279da69dc600ea15dac79a942bf788ce..31ae3c48cb4fbd76308c7a4153bb9060c4570259 100644 (file)
@@ -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<MDSMap*>& 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<int, std::string> 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)