From bcf4953b455456c81b1f917705d4867cfab17b4a Mon Sep 17 00:00:00 2001 From: John Spray Date: Tue, 22 Mar 2016 11:11:28 +0000 Subject: [PATCH] messages: add MMDSBeacon::standby_for_fscid For the MDS daemon to tell the mon which filesystem it wants to a be a standby for, when it is expressing a standby_for_rank. Signed-off-by: John Spray --- src/messages/MMDSBeacon.h | 16 ++++++++++++---- src/mon/MDSMonitor.cc | 6 ++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/messages/MMDSBeacon.h b/src/messages/MMDSBeacon.h index d932f8a7c48f4..a15507560a655 100644 --- a/src/messages/MMDSBeacon.h +++ b/src/messages/MMDSBeacon.h @@ -121,7 +121,7 @@ WRITE_CLASS_ENCODER(MDSHealth) class MMDSBeacon : public PaxosServiceMessage { - static const int HEAD_VERSION = 5; + static const int HEAD_VERSION = 6; static const int COMPAT_VERSION = 2; uuid_d fsid; @@ -130,8 +130,10 @@ class MMDSBeacon : public PaxosServiceMessage { MDSMap::DaemonState state; version_t seq; - mds_rank_t standby_for_rank; - string standby_for_name; + + mds_rank_t standby_for_rank; + string standby_for_name; + fs_cluster_id_t standby_for_fscid; CompatSet compat; @@ -146,7 +148,7 @@ class MMDSBeacon : public PaxosServiceMessage { MMDSBeacon(const uuid_d &f, mds_gid_t g, string& n, epoch_t les, MDSMap::DaemonState st, version_t se, uint64_t feat) : PaxosServiceMessage(MSG_MDS_BEACON, les, HEAD_VERSION, COMPAT_VERSION), fsid(f), global_id(g), name(n), state(st), seq(se), - standby_for_rank(MDS_RANK_NONE), + standby_for_rank(MDS_RANK_NONE), standby_for_fscid(FS_CLUSTER_ID_NONE), mds_features(feat) { } private: @@ -162,6 +164,7 @@ public: const char *get_type_name() const { return "mdsbeacon"; } mds_rank_t get_standby_for_rank() { return standby_for_rank; } const string& get_standby_for_name() { return standby_for_name; } + const fs_cluster_id_t& get_standby_for_fscid() { return standby_for_fscid; } uint64_t get_mds_features() const { return mds_features; } CompatSet const& get_compat() const { return compat; } @@ -173,6 +176,7 @@ public: void set_standby_for_rank(mds_rank_t r) { standby_for_rank = r; } void set_standby_for_name(string& n) { standby_for_name = n; } void set_standby_for_name(const char* c) { standby_for_name.assign(c); } + void set_standby_for_fscid(fs_cluster_id_t f) { standby_for_fscid = f; } const map& get_sys_info() const { return sys_info; } void set_sys_info(const map& i) { sys_info = i; } @@ -197,6 +201,7 @@ public: ::encode(sys_info, payload); } ::encode(mds_features, payload); + ::encode(standby_for_fscid, payload); } void decode_payload() { bufferlist::iterator p = payload.begin(); @@ -220,6 +225,9 @@ public: if (header.version >= 5) { ::decode(mds_features, p); } + if (header.version >= 6) { + ::decode(standby_for_fscid, p); + } } }; diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 5ca78f1f2c0f9..88152d8838ed2 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -518,6 +518,7 @@ bool MDSMonitor::prepare_beacon(MonOpRequestRef op) new_info.state_seq = seq; new_info.standby_for_rank = m->get_standby_for_rank(); new_info.standby_for_name = m->get_standby_for_name(); + new_info.standby_for_fscid = m->get_standby_for_fscid(); pending_fsmap.insert(new_info); } @@ -614,10 +615,7 @@ bool MDSMonitor::prepare_beacon(MonOpRequestRef op) return false; } } else if (m->get_standby_for_rank() >= 0) { - // TODO get this from MDS message - // >> - fs_cluster_id_t target_ns = FS_CLUSTER_ID_NONE; - // << + fs_cluster_id_t target_ns = m->get_standby_for_fscid(); mds_role_t target_role = { target_ns == FS_CLUSTER_ID_NONE ? -- 2.39.5