@@ -179,12 +179,10 @@ class MDSMap {
179179 static CompatSet get_compat_set_base (); // pre v0.20
180180 static CompatSet get_compat_set_v16_2_4 (); // pre-v16.2.5 CompatSet in MDS beacon
181181
182- static MDSMap create_null_mdsmap () {
183- MDSMap null_map;
184- /* Use the largest epoch so it's always bigger than whatever the MDS has. */
185- null_map.epoch = std::numeric_limits<decltype (epoch)>::max ();
186- return null_map;
187- }
182+ MDSMap () noexcept ;
183+ ~MDSMap () noexcept ;
184+
185+ static MDSMap create_null_mdsmap ();
188186
189187 bool get_inline_data_enabled () const { return inline_data_enabled; }
190188 void set_inline_data_enabled (bool enabled) { inline_data_enabled = enabled; }
@@ -355,25 +353,15 @@ class MDSMap {
355353 const std::vector<int64_t > &get_data_pools () const { return data_pools; }
356354 int64_t get_first_data_pool () const { return *data_pools.begin (); }
357355 int64_t get_metadata_pool () const { return metadata_pool; }
358- bool is_data_pool (int64_t poolid) const {
359- auto p = std::find (data_pools.begin (), data_pools.end (), poolid);
360- if (p == data_pools.end ())
361- return false ;
362- return true ;
363- }
356+ bool is_data_pool (int64_t poolid) const noexcept ;
364357
365358 bool pool_in_use (int64_t poolid) const {
366359 return get_enabled () && (is_data_pool (poolid) || metadata_pool == poolid);
367360 }
368361
369362 const auto & get_mds_info () const { return mds_info; }
370- const auto & get_mds_info_gid (mds_gid_t gid) const {
371- return mds_info.at (gid);
372- }
373- const mds_info_t & get_mds_info (mds_rank_t m) const {
374- ceph_assert (up.count (m) && mds_info.count (up.at (m)));
375- return mds_info.at (up.at (m));
376- }
363+ const mds_info_t & get_mds_info_gid (mds_gid_t gid) const noexcept ;
364+ const mds_info_t & get_mds_info (mds_rank_t m) const noexcept ;
377365 mds_gid_t find_mds_gid_by_name (std::string_view s) const ;
378366
379367 // counts
@@ -401,16 +389,8 @@ class MDSMap {
401389 }
402390 unsigned get_num_mds (int state) const ;
403391 // data pools
404- void add_data_pool (int64_t poolid) {
405- data_pools.push_back (poolid);
406- }
407- int remove_data_pool (int64_t poolid) {
408- std::vector<int64_t >::iterator p = std::find (data_pools.begin (), data_pools.end (), poolid);
409- if (p == data_pools.end ())
410- return -ENOENT;
411- data_pools.erase (p);
412- return 0 ;
413- }
392+ void add_data_pool (int64_t poolid);
393+ int remove_data_pool (int64_t poolid);
414394
415395 // sets
416396 void get_mds_set (std::set<mds_rank_t >& s) const {
@@ -503,32 +483,16 @@ class MDSMap {
503483 /* *
504484 * Get MDS daemon status by GID
505485 */
506- auto get_state_gid (mds_gid_t gid) const {
507- auto it = mds_info.find (gid);
508- if (it == mds_info.end ())
509- return STATE_NULL;
510- return it->second .state ;
511- }
486+ MDSMap::DaemonState get_state_gid (mds_gid_t gid) const noexcept ;
512487
513488 /* *
514489 * Get MDS rank state if the rank is up, else STATE_NULL
515490 */
516- auto get_state (mds_rank_t m) const {
517- auto it = up.find (m);
518- if (it == up.end ())
519- return STATE_NULL;
520- return get_state_gid (it->second );
521- }
491+ MDSMap::DaemonState get_state (mds_rank_t m) const noexcept ;
522492
523- auto get_gid (mds_rank_t r) const {
524- return up.at (r);
525- }
526- const auto & get_info (mds_rank_t m) const {
527- return mds_info.at (up.at (m));
528- }
529- const auto & get_info_gid (mds_gid_t gid) const {
530- return mds_info.at (gid);
531- }
493+ mds_gid_t get_gid (mds_rank_t r) const noexcept ;
494+ const mds_info_t & get_info (mds_rank_t m) const noexcept ;
495+ const mds_info_t & get_info_gid (mds_gid_t gid) const noexcept ;
532496
533497 bool is_boot (mds_rank_t m) const { return get_state (m) == STATE_BOOT; }
534498 bool is_bootstrapping (mds_rank_t m) const {
@@ -555,22 +519,8 @@ class MDSMap {
555519 return get_standby_replay (r) != MDS_GID_NONE;
556520 }
557521
558- bool is_followable (mds_rank_t r) const {
559- if (auto it1 = up.find (r); it1 != up.end ()) {
560- if (auto it2 = mds_info.find (it1->second ); it2 != mds_info.end ()) {
561- auto & info = it2->second ;
562- if (!info.is_degraded () && !has_standby_replay (r)) {
563- return true ;
564- }
565- }
566- }
567- return false ;
568- }
569-
570- bool is_laggy_gid (mds_gid_t gid) const {
571- auto it = mds_info.find (gid);
572- return it == mds_info.end () ? false : it->second .laggy ();
573- }
522+ bool is_followable (mds_rank_t r) const ;
523+ bool is_laggy_gid (mds_gid_t gid) const ;
574524
575525 // degraded = some recovery in process. fixes active membership and
576526 // recovery_set.
@@ -605,42 +555,21 @@ class MDSMap {
605555 * an MDS daemon's entity_inst_t associated
606556 * with it.
607557 */
608- bool have_inst (mds_rank_t m) const {
609- return up.count (m);
610- }
558+ bool have_inst (mds_rank_t m) const ;
611559
612560 /* *
613561 * Get the MDS daemon entity_inst_t for a rank
614562 * known to be up.
615563 */
616- entity_addrvec_t get_addrs (mds_rank_t m) const {
617- return mds_info.at (up.at (m)).get_addrs ();
618- }
564+ entity_addrvec_t get_addrs (mds_rank_t m) const ;
619565
620- mds_rank_t get_rank_gid (mds_gid_t gid) const {
621- if (mds_info.count (gid)) {
622- return mds_info.at (gid).rank ;
623- } else {
624- return MDS_RANK_NONE;
625- }
626- }
566+ mds_rank_t get_rank_gid (mds_gid_t gid) const ;
627567
628568 /* *
629569 * Get MDS rank incarnation if the rank is up, else -1
630570 */
631- mds_gid_t get_incarnation (mds_rank_t m) const {
632- auto it = up.find (m);
633- if (it == up.end ())
634- return MDS_GID_NONE;
635- return (mds_gid_t )get_inc_gid (it->second );
636- }
637-
638- int get_inc_gid (mds_gid_t gid) const {
639- auto mds_info_entry = mds_info.find (gid);
640- if (mds_info_entry != mds_info.end ())
641- return mds_info_entry->second .inc ;
642- return -1 ;
643- }
571+ mds_gid_t get_incarnation (mds_rank_t m) const ;
572+ int get_inc_gid (mds_gid_t gid) const ;
644573 void encode (ceph::buffer::list& bl, uint64_t features) const ;
645574 void decode (ceph::buffer::list::const_iterator& p);
646575 void decode (const ceph::buffer::list& bl) {
@@ -721,16 +650,7 @@ class MDSMap {
721650 bool inline_data_enabled = false ;
722651
723652private:
724- inline static const std::map<int , std::string> flag_display = {
725- {CEPH_MDSMAP_NOT_JOINABLE, " joinable" }, // inverse for user display
726- {CEPH_MDSMAP_ALLOW_SNAPS, " allow_snaps" },
727- {CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS, " allow_multimds_snaps" },
728- {CEPH_MDSMAP_ALLOW_STANDBY_REPLAY, " allow_standby_replay" },
729- {CEPH_MDSMAP_REFUSE_CLIENT_SESSION, " refuse_client_session" },
730- {CEPH_MDSMAP_REFUSE_STANDBY_FOR_ANOTHER_FS, " refuse_standby_for_another_fs" },
731- {CEPH_MDSMAP_BALANCE_AUTOMATE, " balance_automate" },
732- {CEPH_MDSMAP_REFERENT_INODES, " allow_referent_inodes" }
733- };
653+ static const std::map<int , std::string> flag_display;
734654};
735655WRITE_CLASS_ENCODER_FEATURES (MDSMap::mds_info_t )
736656WRITE_CLASS_ENCODER_FEATURES(MDSMap)
0 commit comments