From 88c81a9fc53c4e65811461ac336c81721f16d9cc Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 1 Oct 2009 14:30:36 -0700 Subject: [PATCH] mon: Handle MMDSLoadTarget messages --- src/mon/MDSMonitor.cc | 22 ++++++++++++++++++---- src/mon/MDSMonitor.h | 4 ++++ src/mon/Monitor.cc | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 5370bdedbf06c..2271cae804c4a 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -21,6 +21,7 @@ #include "messages/MMDSMap.h" #include "messages/MMDSGetMap.h" #include "messages/MMDSBeacon.h" +#include "messages/MMDSLoadTargets.h" #include "messages/MMonCommand.h" #include "messages/MGenericMessage.h" @@ -136,10 +137,7 @@ bool MDSMonitor::preprocess_query(PaxosServiceMessage *m) return preprocess_command((MMonCommand*)m); case MSG_MDS_OFFLOAD_TARGETS: - return true; - - case MSG_MDS_OFFLOAD_COMPLETE: - return true; + return preprocess_offload_targets((MMDSLoadTargets*)m); default: assert(0); @@ -248,6 +246,12 @@ bool MDSMonitor::preprocess_beacon(MMDSBeacon *m) return true; } +bool MDSMonitor::preprocess_offload_targets(MMDSLoadTargets* m) +{ + return (m->targets == + pending_mdsmap.get_mds_info(m->get_orig_source_addr()).export_targets); +} + bool MDSMonitor::prepare_update(PaxosServiceMessage *m) { @@ -260,6 +264,9 @@ bool MDSMonitor::prepare_update(PaxosServiceMessage *m) case MSG_MON_COMMAND: return prepare_command((MMonCommand*)m); + + case MSG_MDS_OFFLOAD_TARGETS: + return prepare_offload_targets((MMDSLoadTargets*)m); default: assert(0); @@ -328,6 +335,13 @@ bool MDSMonitor::prepare_beacon(MMDSBeacon *m) return true; } +bool MDSMonitor::prepare_offload_targets(MMDSLoadTargets *m) +{ + pending_mdsmap.mds_info[m->get_orig_source_addr()]. + export_targets = m->targets; + return true; +} + bool MDSMonitor::should_propose(double& delay) { delay = 0.0; diff --git a/src/mon/MDSMonitor.h b/src/mon/MDSMonitor.h index dac42f4ea2d97..c7f8c8708242d 100644 --- a/src/mon/MDSMonitor.h +++ b/src/mon/MDSMonitor.h @@ -34,6 +34,7 @@ using namespace std; class MMDSBeacon; class MMDSGetMap; class MMonCommand; +class MMDSLoadTargets; class MDSMonitor : public PaxosService { public: @@ -79,6 +80,9 @@ class MDSMonitor : public PaxosService { bool prepare_beacon(class MMDSBeacon *m); void handle_mds_getmap(MMDSGetMap *m); + bool preprocess_offload_targets(MMDSLoadTargets *m); + bool prepare_offload_targets(MMDSLoadTargets *m); + bool preprocess_command(MMonCommand *m); bool prepare_command(MMonCommand *m); diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index c342286858f60..804b6fe09264a 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -394,6 +394,7 @@ bool Monitor::ms_dispatch(Message *m) // MDSs case MSG_MDS_BEACON: + case MSG_MDS_OFFLOAD_TARGETS: case CEPH_MSG_MDS_GETMAP: paxos_service[PAXOS_MDSMAP]->dispatch((PaxosServiceMessage*)m); break; -- 2.39.5