* Foundation. See file COPYING.
*
*/
-
-
-
#ifndef CEPH_MDBALANCER_H
#define CEPH_MDBALANCER_H
-#include <list>
-#include <map>
-
#include "include/types.h"
#include "common/Clock.h"
#include "common/Cond.h"
void handle_conf_change(const std::set<std::string>& changed, const MDSMap& mds_map);
- int proc_message(const Message::const_ref &m);
+ int proc_message(const cref_t<Message> &m);
/**
* Regularly called upkeep function.
void handle_mds_failure(mds_rank_t who);
- int dump_loads(Formatter *f);
+ int dump_loads(Formatter *f) const;
private:
- bool bal_fragment_dirs;
- int64_t bal_fragment_interval;
- static const unsigned int AUTH_TREES_THRESHOLD = 5;
-
typedef struct {
std::map<mds_rank_t, double> targets;
std::map<mds_rank_t, double> imported;
mds_load_t get_load();
int localize_balancer();
void send_heartbeat();
- void handle_heartbeat(const MHeartbeat::const_ref &m);
+ void handle_heartbeat(const cref_t<MHeartbeat> &m);
void find_exports(CDir *dir,
double amount,
- std::list<CDir*>& exports,
+ std::vector<CDir*>* exports,
double& have,
set<CDir*>& already_exporting);
*/
void try_rebalance(balance_state_t& state);
+ bool bal_fragment_dirs;
+ int64_t bal_fragment_interval;
+ static const unsigned int AUTH_TREES_THRESHOLD = 5;
+
MDSRank *mds;
Messenger *messenger;
MonClient *mon_client;
// just as soon as a delayed context comes back and triggers it.
// These sets just prevent us from spawning extra timer contexts for
// dirfrags that already have one in flight.
- set<dirfrag_t> split_pending, merge_pending;
+ set<dirfrag_t> split_pending, merge_pending;
// per-epoch scatter/gathered info
- std::map<mds_rank_t, mds_load_t> mds_load;
- std::map<mds_rank_t, double> mds_meta_load;
+ std::map<mds_rank_t, mds_load_t> mds_load;
+ std::map<mds_rank_t, double> mds_meta_load;
std::map<mds_rank_t, map<mds_rank_t, float> > mds_import_map;
std::map<mds_rank_t, int> mds_last_epoch_under_map;
double my_load = 0;
double target_load = 0;
};
-
#endif