From 5faa8517a52208ef35b0871f6fef90e81a0951cf Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 2 Oct 2009 15:16:25 -0700 Subject: [PATCH] mon: fix offload_targets --- src/mds/MDSMap.cc | 2 ++ src/messages/MMDSLoadTargets.h | 3 +++ src/mon/MDSMonitor.cc | 17 +++++++++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index aefbfe4a718d2..d83222a82eee1 100644 --- a/src/mds/MDSMap.cc +++ b/src/mds/MDSMap.cc @@ -66,6 +66,8 @@ void MDSMap::print(ostream& out) out << " '" << info.standby_for_name << "'"; out << ")"; } + if (info.export_targets.size()) + out << " export_targets=" << info.export_targets; out << "\n"; } diff --git a/src/messages/MMDSLoadTargets.h b/src/messages/MMDSLoadTargets.h index b3cb4708b09fc..1b0466cecfa69 100644 --- a/src/messages/MMDSLoadTargets.h +++ b/src/messages/MMDSLoadTargets.h @@ -32,6 +32,9 @@ class MMDSLoadTargets : public Message { targets(mds_targets) {} const char* get_type_name() { return "mds_load_targets"; } + void print(ostream& o) { + o << "mds_load_targets(" << targets << ")"; + } void decode_payload() { bufferlist::iterator p = payload.begin(); diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 2271cae804c4a..38cdc5c6f3ac0 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -248,8 +248,12 @@ bool MDSMonitor::preprocess_beacon(MMDSBeacon *m) bool MDSMonitor::preprocess_offload_targets(MMDSLoadTargets* m) { - return (m->targets == - pending_mdsmap.get_mds_info(m->get_orig_source_addr()).export_targets); + dout(10) << "preprocess_offload_targets " << *m << " from " << m->get_orig_source() << dendl; + const entity_addr_t& a = m->get_orig_source_addr(); + if (mdsmap.mds_info.count(a) && + m->targets == mdsmap.mds_info[a].export_targets) + return true; + return false; } @@ -337,8 +341,13 @@ bool MDSMonitor::prepare_beacon(MMDSBeacon *m) bool MDSMonitor::prepare_offload_targets(MMDSLoadTargets *m) { - pending_mdsmap.mds_info[m->get_orig_source_addr()]. - export_targets = m->targets; + const entity_addr_t& a = m->get_orig_source_addr(); + if (pending_mdsmap.mds_info.count(a)) { + dout(10) << "prepare_offload_targets " << a << " " << m->targets << dendl; + pending_mdsmap.mds_info[a].export_targets = m->targets; + } else { + dout(10) << "prepare_offload_targets " << a << " not in map" << dendl; + } return true; } -- 2.39.5