From: Sage Weil Date: Fri, 2 Oct 2009 22:16:25 +0000 (-0700) Subject: mon: fix offload_targets X-Git-Tag: v0.16~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5faa8517a52208ef35b0871f6fef90e81a0951cf;p=ceph.git mon: fix offload_targets --- diff --git a/src/mds/MDSMap.cc b/src/mds/MDSMap.cc index aefbfe4a718..d83222a82ee 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 b3cb4708b09..1b0466cecfa 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 2271cae804c..38cdc5c6f3a 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; }