dout(10) << "check_targets have " << map_targets << " need " << need_targets << " want " << want_targets << dendl;
if (send) {
- MMDSLoadTargets* m = new MMDSLoadTargets(mds_gid_t(mds->get_global_id()), want_targets);
- mds->send_mon_message(m);
+ MMDSLoadTargets* m = new MMDSLoadTargets(mds_gid_t(mon_client->get_global_id()), want_targets);
+ mon_client->send_mon_message(m);
}
return ok;
}
class CInode;
class CDir;
class Messenger;
+class MonClient;
class MDBalancer {
protected:
MDSRank *mds;
Messenger *messenger;
+ MonClient *mon_client;
int beat_epoch;
int last_epoch_under;
}
public:
- MDBalancer(MDSRank *m, Messenger *msgr) :
+ MDBalancer(MDSRank *m, Messenger *msgr, MonClient *monc) :
mds(m),
messenger(msgr),
+ mon_client(monc),
beat_epoch(0),
last_epoch_under(0), last_epoch_over(0), my_load(0.0), target_load(0.0) { }
mdcache = new MDCache(this);
mdlog = new MDLog(this);
- balancer = new MDBalancer(this, messenger);
+ balancer = new MDBalancer(this, messenger, monc);
inotable = new InoTable(this);
- snapserver = new SnapServer(this);
+ snapserver = new SnapServer(this, monc);
snapclient = new SnapClient(this);
server = new Server(this);
return beacon.get_laggy_until();
}
-// FIXME maybe instead of exposing this to the world, we should just
-// share a MonClient reference with the guys who need it (balancer+snapserver)
-void MDSRank::send_mon_message(Message *m)
-{
- monc->send_mon_message(m);
-}
-
-uint64_t MDSRank::get_global_id() const
-{
- return monc->get_global_id();
-}
-
bool MDSRank::is_daemon_stopping() const
{
return stopping;
MDSMap *get_mds_map() { return mdsmap; }
- // Access to monc functionality needed by balancer and snapserver
- uint64_t get_global_id() const;
- void send_mon_message(Message *m);
-
int get_req_rate() { return logger->get(l_mds_request); }
// FIXME: interface for MDSDaemon to call, don't really want to expose
if (!all_purge.empty()) {
dout(10) << "requesting removal of " << all_purge << dendl;
MRemoveSnaps *m = new MRemoveSnaps(all_purge);
- mds->send_mon_message(m);
+ mon_client->send_mon_message(m);
}
last_checked_osdmap = version;
#include "snap.h"
class MDSRank;
+class MonClient;
class SnapServer : public MDSTableServer {
-public:
-
protected:
+ MonClient *mon_client;
snapid_t last_snap;
map<snapid_t, SnapInfo> snaps;
map<int, set<snapid_t> > need_to_purge;
version_t last_checked_osdmap;
public:
- SnapServer(MDSRank *m) : MDSTableServer(m, TABLE_SNAP),
- last_checked_osdmap(0) { }
+ SnapServer(MDSRank *m, MonClient *monc)
+ : MDSTableServer(m, TABLE_SNAP), mon_client(monc), last_checked_osdmap(0)
+ {}
void reset_state();
void encode_server_state(bufferlist& bl) const {