ss << "got osdmap epoch " << p->get_epoch();
r = 0;
} else if (cmd == "getcrushmap") {
- p->crush.encode(rdata);
+ p->crush->encode(rdata);
ss << "got crush map from osdmap epoch " << p->get_epoch();
r = 0;
}
if (pending_inc.crush.length())
bl = pending_inc.crush;
else
- osdmap.crush.encode(bl);
+ osdmap.crush->encode(bl);
CrushWrapper newcrush;
bufferlist::iterator p = bl.begin();
if (pending_inc.crush.length())
bl = pending_inc.crush;
else
- osdmap.crush.encode(bl);
+ osdmap.crush->encode(bl);
CrushWrapper newcrush;
bufferlist::iterator p = bl.begin();
if (pending_inc.crush.length())
bl = pending_inc.crush;
else
- osdmap.crush.encode(bl);
+ osdmap.crush->encode(bl);
CrushWrapper newcrush;
bufferlist::iterator p = bl.begin();
}
else if (m->cmd[1] == "setmaxosd" && m->cmd.size() > 2) {
int newmax = atoi(m->cmd[2].c_str());
- if (newmax < osdmap.crush.get_max_devices()) {
+ if (newmax < osdmap.crush->get_max_devices()) {
err = -ERANGE;
ss << "cannot set max_osd to " << newmax << " which is < crush max_devices "
- << osdmap.crush.get_max_devices();
+ << osdmap.crush->get_max_devices();
goto out;
}
return true;
}
} else if (m->cmd[4] == "crush_ruleset") {
- if (osdmap.crush.rule_exists(n)) {
+ if (osdmap.crush->rule_exists(n)) {
if (pending_inc.new_pools.count(pool) == 0)
pending_inc.new_pools[pool] = *p;
pending_inc.new_pools[pool].crush_ruleset = n;
int64_t poolid = p->first;
pg_pool_t &pool = p->second;
int ruleno = pool.get_crush_ruleset();
- if (!osdmap->crush.rule_exists(ruleno))
+ if (!osdmap->crush->rule_exists(ruleno))
continue;
if (pool.get_last_change() <= pg_map.last_pg_scan ||
}
}
- int max = MIN(osdmap->get_max_osd(), osdmap->crush.get_max_devices());
+ int max = MIN(osdmap->get_max_osd(), osdmap->crush->get_max_devices());
int removed = 0;
for (set<pg_t>::iterator p = pg_map.creating_pgs.begin();
p != pg_map.creating_pgs.end();
utime_t now = ceph_clock_now(g_ceph_context);
OSDMap *osdmap = &mon->osdmon()->osdmap;
- int max = MIN(osdmap->get_max_osd(), osdmap->crush.get_max_devices());
+ int max = MIN(osdmap->get_max_osd(), osdmap->crush->get_max_devices());
for (set<pg_t>::iterator p = pg_map.creating_pgs.begin();
p != pg_map.creating_pgs.end();
// do new crush map last (after up/down stuff)
if (inc.crush.length()) {
bufferlist::iterator blp = inc.crush.begin();
- crush.decode(blp);
+ crush.reset(new CrushWrapper);
+ crush->decode(blp);
}
calc_num_osds();
unsigned size = pool.get_size();
{
int preferred = pg.preferred();
- if (preferred >= max_osd || preferred >= crush.get_max_devices())
+ if (preferred >= max_osd || preferred >= crush->get_max_devices())
preferred = -1;
- assert(get_max_osd() >= crush.get_max_devices());
+ assert(get_max_osd() >= crush->get_max_devices());
// what crush rule?
- int ruleno = crush.find_rule(pool.get_crush_ruleset(), pool.get_type(), size);
+ int ruleno = crush->find_rule(pool.get_crush_ruleset(), pool.get_type(), size);
if (ruleno >= 0)
- crush.do_rule(ruleno, pps, osds, size, preferred, osd_weight);
+ crush->do_rule(ruleno, pps, osds, size, preferred, osd_weight);
}
return osds.size();
// crush
bufferlist cbl;
- crush.encode(cbl);
+ crush->encode(cbl);
::encode(cbl, bl);
}
// crush
bufferlist cbl;
- crush.encode(cbl);
+ crush->encode(cbl);
::encode(cbl, bl);
// extended
bufferlist cbl;
::decode(cbl, p);
bufferlist::iterator cblp = cbl.begin();
- crush.decode(cblp);
+ crush->decode(cblp);
// extended
__u16 ev = 0;
out << "# id\tweight\ttype name\tup/down\treweight\n";
set<int> touched;
set<int> roots;
- crush.find_roots(roots);
+ crush->find_roots(roots);
for (set<int>::iterator p = roots.begin(); p != roots.end(); p++) {
list<qi> q;
- q.push_back(qi(*p, 0, crush.get_bucket_weight(*p) / (float)0x10000));
+ q.push_back(qi(*p, 0, crush->get_bucket_weight(*p) / (float)0x10000));
while (!q.empty()) {
int cur = q.front().item;
int depth = q.front().depth;
continue;
}
- int type = crush.get_bucket_type(cur);
- out << crush.get_type_name(type) << " " << crush.get_item_name(cur) << "\n";
+ int type = crush->get_bucket_type(cur);
+ out << crush->get_type_name(type) << " " << crush->get_item_name(cur) << "\n";
// queue bucket contents...
- int s = crush.get_bucket_size(cur);
+ int s = crush->get_bucket_size(cur);
for (int k=s-1; k>=0; k--)
- q.push_front(qi(crush.get_bucket_item(cur, k), depth+1,
- (float)crush.get_bucket_item_weight(cur, k) / (float)0x10000));
+ q.push_front(qi(crush->get_bucket_item(cur, k), depth+1,
+ (float)crush->get_bucket_item_weight(cur, k) / (float)0x10000));
}
}
pool_name[pool] = p->second;
}
- build_simple_crush_map(cct, crush, rulesets, nosd);
+ build_simple_crush_map(cct, *crush, rulesets, nosd);
for (int i=0; i<nosd; i++) {
set_state(i, 0);
pool_name[pool] = p->second;
}
- build_simple_crush_map_from_conf(cct, crush, rulesets);
+ build_simple_crush_map_from_conf(cct, *crush, rulesets);
for (int i=0; i<=maxosd; i++) {
set_state(i, 0);