]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix offload_targets
authorSage Weil <sage@newdream.net>
Fri, 2 Oct 2009 22:16:25 +0000 (15:16 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Fri, 2 Oct 2009 22:22:10 +0000 (15:22 -0700)
src/mds/MDSMap.cc
src/messages/MMDSLoadTargets.h
src/mon/MDSMonitor.cc

index aefbfe4a718d2ed6b6c41a658644948314fde944..d83222a82eee1091f4c8972ed0502834b8f2ddcc 100644 (file)
@@ -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";    
   }
 
index b3cb4708b09fcf4aba5fa96f21a59b04e41d5e21..1b0466cecfa695ca719f72f36bafc729cde04c3e 100644 (file)
@@ -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();
index 2271cae804c4a38c79696266351deb4f27d3ac74..38cdc5c6f3ac091685d411e7233153f04b947d7a 100644 (file)
@@ -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;
 }