wait_for_clean
ceph osd pool get $TEST_POOL_GETSET all
- for s in pg_num pgp_num size min_size crush_rule crush_ruleset; do
+ for s in pg_num pgp_num size min_size crush_rule; do
ceph osd pool get $TEST_POOL_GETSET $s
done
ceph osd pool set $TEST_POOL_GETSET nodelete 0
ceph osd pool delete $TEST_POOL_GETSET $TEST_POOL_GETSET --yes-i-really-really-mean-it
- ceph osd pool get rbd crush_ruleset | grep 'crush_ruleset: 0'
ceph osd pool get rbd crush_rule | grep 'crush_rule: '
}
expect('osd/reweight?id=0&weight=1', 'PUT', 200, '')
for v in ['pg_num', 'pgp_num', 'size', 'min_size',
- 'crush_ruleset']:
+ 'crush_rule']:
r = expect('osd/pool/get.json?pool=rbd&var=' + v, 'GET', 200, 'json')
assert(v in r.myjson['output'])
r = expect('osd/pool/get.json?pool=rbd&var=size', 'GET', 200, 'json')
assert(r.myjson['output']['size'] == 2)
- r = expect('osd/pool/get.json?pool=rbd&var=crush_ruleset', 'GET', 200, 'json')
- assert(r.myjson['output']['crush_ruleset'] == 0)
+ r = expect('osd/pool/get.json?pool=rbd&var=crush_rule', 'GET', 200, 'json')
+ assert(r.myjson['output']['crush_rule'] == 0)
print('OK')
for (auto& p : pools) {
int64_t poolid = p.first;
const pg_pool_t& pool = p.second;
- int ruleno = osdmap.crush->find_rule(pool.get_crush_ruleset(),
+ int ruleno = osdmap.crush->find_rule(pool.get_crush_rule(),
pool.get_type(), pool.get_size());
if (ruleno < 0 || !osdmap.crush->rule_exists(ruleno))
continue;
p->get_crash_replay_interval());
break;
case CRUSH_RULE:
- if (osdmap.crush->rule_exists(p->get_crush_ruleset())) {
+ if (osdmap.crush->rule_exists(p->get_crush_rule())) {
f->dump_string("crush_rule", osdmap.crush->get_rule_name(
- p->get_crush_ruleset()));
+ p->get_crush_rule()));
} else {
- f->dump_string("crush_rule", stringify(p->get_crush_ruleset()));
+ f->dump_string("crush_rule", stringify(p->get_crush_rule()));
}
break;
case CRUSH_RULESET:
- f->dump_int("crush_ruleset", p->get_crush_ruleset());
+ f->dump_int("crush_ruleset", p->get_crush_rule());
break;
case HASHPSPOOL:
case NODELETE:
p->get_crash_replay_interval() << "\n";
break;
case CRUSH_RULE:
- if (osdmap.crush->rule_exists(p->get_crush_ruleset())) {
+ if (osdmap.crush->rule_exists(p->get_crush_rule())) {
ss << "crush_rule: " << osdmap.crush->get_rule_name(
- p->get_crush_ruleset()) << "\n";
+ p->get_crush_rule()) << "\n";
} else {
- ss << "crush_rule: " << p->get_crush_ruleset() << "\n";
+ ss << "crush_rule: " << p->get_crush_rule() << "\n";
}
break;
case CRUSH_RULESET:
- ss << "crush_ruleset: " << p->get_crush_ruleset() << "\n";
+ ss << "crush_ruleset: " << p->get_crush_rule() << "\n";
break;
case HIT_SET_PERIOD:
ss << "hit_set_period: " << p->hit_set_period << "\n";
pi->size = size;
pi->min_size = min_size;
- pi->crush_ruleset = crush_ruleset;
+ pi->crush_rule = crush_ruleset;
pi->expected_num_objects = expected_num_objects;
pi->object_hash = CEPH_STR_HASH_RJENKINS;
pi->set_pg_num(pg_num);
if (!osdmap.crush->check_crush_rule(id, p.get_type(), p.get_size(), ss)) {
return -EINVAL;
}
- p.crush_ruleset = id;
+ p.crush_rule = id;
} else if (var == "crush_ruleset") {
if (interr.length()) {
ss << "error parsing integer value '" << val << "': " << interr;
if (!osdmap.crush->check_crush_rule(n, p.get_type(), p.get_size(), ss)) {
return -EINVAL;
}
- p.crush_ruleset = n;
+ p.crush_rule = n;
} else if (var == "nodelete" || var == "nopgchange" ||
var == "nosizechange" || var == "write_fadvise_dontneed" ||
var == "noscrub" || var == "nodeep-scrub") {
for (auto pit = osdmap_pools.begin(); pit != osdmap_pools.end(); ++pit) {
const int64_t pool_id = pit->first;
const pg_pool_t &pool = pit->second;
- int ruleno = pool.get_crush_ruleset();
+ int ruleno = pool.get_crush_rule();
if (!crush.rule_exists(ruleno)) {
ss << " the crush rule no "<< ruleno << " for pool id " << pool_id << " is in use";
err = -EINVAL;
const pool_stat_t &stat = pg_pool_sum.at(pool_id);
const pg_pool_t *pool = osd_map.get_pg_pool(pool_id);
- int ruleno = osd_map.crush->find_rule(pool->get_crush_ruleset(),
+ int ruleno = osd_map.crush->find_rule(pool->get_crush_rule(),
pool->get_type(),
pool->get_size());
int64_t avail;
if ((pool_id < 0) || (pg_pool_sum.count(pool_id) == 0))
continue;
const pg_pool_t *pool = osdmap.get_pg_pool(pool_id);
- int ruleno = osdmap.crush->find_rule(pool->get_crush_ruleset(),
+ int ruleno = osdmap.crush->find_rule(pool->get_crush_rule(),
pool->get_type(),
pool->get_size());
if (avail_map->count(ruleno) == 0)
for (const auto &p : pools) {
int64_t poolid = p.first;
const pg_pool_t &pool = p.second;
- int ruleno = osd_map.crush->find_rule(pool.get_crush_ruleset(),
+ int ruleno = osd_map.crush->find_rule(pool.get_crush_rule(),
pool.get_type(), pool.get_size());
if (ruleno < 0 || !osd_map.crush->rule_exists(ruleno))
continue;
pool.second.is_tier()) {
features |= CEPH_FEATURE_OSD_CACHEPOOL;
}
- int ruleid = crush->find_rule(pool.second.get_crush_ruleset(),
+ int ruleid = crush->find_rule(pool.second.get_crush_rule(),
pool.second.get_type(),
pool.second.get_size());
if (ruleid >= 0) {
unsigned size = pool.get_size();
// what crush rule?
- int ruleno = crush->find_rule(pool.get_crush_ruleset(), pool.get_type(), size);
+ int ruleno = crush->find_rule(pool.get_crush_rule(), pool.get_type(), size);
if (ruleno >= 0)
crush->do_rule(ruleno, pps, *osds, size, osd_weight, pg.pool());
bool OSDMap::crush_ruleset_in_use(int ruleset) const
{
for (const auto &pool : pools) {
- if (pool.second.crush_ruleset == ruleset)
+ if (pool.second.crush_rule == ruleset)
return true;
}
return false;
pools[pool].set_flag(pg_pool_t::FLAG_NOSIZECHANGE);
pools[pool].size = cct->_conf->osd_pool_default_size;
pools[pool].min_size = cct->_conf->get_osd_pool_default_min_size();
- pools[pool].crush_ruleset = default_replicated_ruleset;
+ pools[pool].crush_rule = default_replicated_ruleset;
pools[pool].object_hash = CEPH_STR_HASH_RJENKINS;
pools[pool].set_pg_num(poolbase << pg_bits);
pools[pool].set_pgp_num(poolbase << pgp_bits);
const pg_pool_t *pool = get_pg_pool(pg.pool());
if (!pool)
return false;
- int rule = crush->find_rule(pool->get_crush_ruleset(), pool->get_type(),
+ int rule = crush->find_rule(pool->get_crush_rule(), pool->get_type(),
pool->get_size());
if (rule < 0)
return false;
total_pgs += i.second.get_size() * i.second.get_pg_num();
map<int,float> pmap;
- int ruleno = tmp.crush->find_rule(i.second.get_crush_ruleset(),
+ int ruleno = tmp.crush->find_rule(i.second.get_crush_rule(),
i.second.get_type(),
i.second.get_size());
tmp.crush->get_rule_weight_osd_map(ruleno, &pmap);
f->dump_int("type", get_type());
f->dump_int("size", get_size());
f->dump_int("min_size", get_min_size());
- f->dump_int("crush_ruleset", get_crush_ruleset());
+ f->dump_int("crush_rule", get_crush_rule());
f->dump_int("object_hash", get_object_hash());
f->dump_unsigned("pg_num", get_pg_num());
f->dump_unsigned("pg_placement_num", get_pgp_num());
::encode(struct_v, bl);
::encode(type, bl);
::encode(size, bl);
- ::encode(crush_ruleset, bl);
+ ::encode(crush_rule, bl);
::encode(object_hash, bl);
::encode(pg_num, bl);
::encode(pgp_num, bl);
::encode(struct_v, bl);
::encode(type, bl);
::encode(size, bl);
- ::encode(crush_ruleset, bl);
+ ::encode(crush_rule, bl);
::encode(object_hash, bl);
::encode(pg_num, bl);
::encode(pgp_num, bl);
ENCODE_START(14, 5, bl);
::encode(type, bl);
::encode(size, bl);
- ::encode(crush_ruleset, bl);
+ ::encode(crush_rule, bl);
::encode(object_hash, bl);
::encode(pg_num, bl);
::encode(pgp_num, bl);
ENCODE_START(v, 5, bl);
::encode(type, bl);
::encode(size, bl);
- ::encode(crush_ruleset, bl);
+ ::encode(crush_rule, bl);
::encode(object_hash, bl);
::encode(pg_num, bl);
::encode(pgp_num, bl);
DECODE_START_LEGACY_COMPAT_LEN(25, 5, 5, bl);
::decode(type, bl);
::decode(size, bl);
- ::decode(crush_ruleset, bl);
+ ::decode(crush_rule, bl);
::decode(object_hash, bl);
::decode(pg_num, bl);
::decode(pgp_num, bl);
// crash_replay_interval appropriately. unfortunately, we can't
// be precise here. this should be good enough to preserve replay
// on the data pool for the majority of cluster upgrades, though.
- if (crush_ruleset == 0 && auid == 0)
+ if (crush_rule == 0 && auid == 0)
crash_replay_interval = 60;
else
crash_replay_interval = 0;
a.type = TYPE_REPLICATED;
a.size = 2;
- a.crush_ruleset = 3;
+ a.crush_rule = 3;
a.object_hash = 4;
a.pg_num = 6;
a.pgp_num = 5;
out << p.get_type_name()
<< " size " << p.get_size()
<< " min_size " << p.get_min_size()
- << " crush_ruleset " << p.get_crush_ruleset()
+ << " crush_rule " << p.get_crush_rule()
<< " object_hash " << p.get_object_hash_name()
<< " pg_num " << p.get_pg_num()
<< " pgp_num " << p.get_pgp_num()
uint64_t flags; ///< FLAG_*
__u8 type; ///< TYPE_*
__u8 size, min_size; ///< number of osds in each pg
- __u8 crush_ruleset; ///< crush placement rule set
+ __u8 crush_rule; ///< crush placement rule
__u8 object_hash; ///< hash mapping object name to ps
private:
__u32 pg_num, pgp_num; ///< number of pgs
pg_pool_t()
: flags(0), type(0), size(0), min_size(0),
- crush_ruleset(0), object_hash(0),
+ crush_rule(0), object_hash(0),
pg_num(0), pgp_num(0),
last_change(0),
last_force_op_resend(0),
unsigned get_type() const { return type; }
unsigned get_size() const { return size; }
unsigned get_min_size() const { return min_size; }
- int get_crush_ruleset() const { return crush_ruleset; }
+ int get_crush_rule() const { return crush_rule; }
int get_object_hash() const { return object_hash; }
const char *get_object_hash_name() const {
return ceph_str_hash_name(get_object_hash());
nearfull_ratio 0
min_compat_client jewel
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
max_osd 3
nearfull_ratio 0
min_compat_client jewel
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 0 flags hashpspool stripe_width 0
max_osd 1
nearfull_ratio 0
min_compat_client jewel
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
max_osd 3
- $ osdmaptool --clobber --createsimple 3 --osd_pool_default_crush_replicated_ruleset 66 myosdmap
+ $ osdmaptool --clobber --createsimple 3 myosdmap
osdmaptool: osdmap file 'myosdmap'
osdmaptool: writing epoch 1 to myosdmap
$ osdmaptool --print myosdmap | grep 'pool 0'
osdmaptool: osdmap file 'myosdmap'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 66 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
- $ osdmaptool --clobber --createsimple 3 --osd_pool_default_crush_rule 55 myosdmap 2>&1 >/dev/null | sed -e 's/^.* 0 osd_pool_//'
- osdmaptool: osdmap file 'myosdmap'
- default_crush_rule is deprecated use osd_pool_default_crush_replicated_ruleset instead
- default_crush_rule = 55 overrides osd_pool_default_crush_replicated_ruleset = 0
- $ osdmaptool --print myosdmap | grep 'pool 0'
- osdmaptool: osdmap file 'myosdmap'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 55 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
- $ osdmaptool --clobber --createsimple 3 --osd_pool_default_crush_replicated_ruleset 66 --osd_pool_default_crush_rule 55 myosdmap 2>&1 >/dev/null | sed -e 's/^.* 0 osd_pool_//'
- osdmaptool: osdmap file 'myosdmap'
- default_crush_rule is deprecated use osd_pool_default_crush_replicated_ruleset instead
- default_crush_rule = 55 overrides osd_pool_default_crush_replicated_ruleset = 66
- $ osdmaptool --print myosdmap | grep 'pool 0'
- osdmaptool: osdmap file 'myosdmap'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 55 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 192 pgp_num 192 last_change 0 flags hashpspool stripe_width 0
$ rm -f myosdmap
nearfull_ratio 0
min_compat_client jewel
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
max_osd 239
- $ osdmaptool --clobber --create-from-conf --osd_pool_default_crush_replicated_ruleset 55 om -c $TESTDIR/ceph.conf.withracks
+ $ osdmaptool --clobber --create-from-conf om -c $TESTDIR/ceph.conf.withracks
osdmaptool: osdmap file 'om'
osdmaptool: writing epoch 1 to om
$ osdmaptool --print om | grep 'pool 0'
osdmaptool: osdmap file 'om'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 55 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
- $ osdmaptool --clobber --create-from-conf --osd_pool_default_crush_rule 55 om -c $TESTDIR/ceph.conf.withracks 2>&1 >/dev/null | sed -e 's/^.* 0 osd_pool_//'
- osdmaptool: osdmap file 'om'
- default_crush_rule is deprecated use osd_pool_default_crush_replicated_ruleset instead
- default_crush_rule = 55 overrides osd_pool_default_crush_replicated_ruleset = 0
- $ osdmaptool --print om | grep 'pool 0'
- osdmaptool: osdmap file 'om'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 55 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
- $ osdmaptool --clobber --create-from-conf --osd_pool_default_crush_replicated_ruleset 66 --osd_pool_default_crush_rule 55 om -c $TESTDIR/ceph.conf.withracks 2>&1 >/dev/null | sed -e 's/^.* 0 osd_pool_//'
- osdmaptool: osdmap file 'om'
- default_crush_rule is deprecated use osd_pool_default_crush_replicated_ruleset instead
- default_crush_rule = 55 overrides osd_pool_default_crush_replicated_ruleset = 66
- $ osdmaptool --print om | grep 'pool 0'
- osdmaptool: osdmap file 'om'
- pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 55 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
+ pool 0 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 15296 pgp_num 15296 last_change 0 flags hashpspool stripe_width 0
$ rm -f om
ceph osd crush rule ls | grep $crush_ruleset
local poolname
poolname=pool_erasure1
- ! ceph --format json osd dump | grep '"crush_ruleset":1' || return 1
+ ! ceph --format json osd dump | grep '"crush_rule":1' || return 1
ceph osd pool create $poolname 12 12 erasure default $crush_ruleset
- ceph --format json osd dump | grep '"crush_ruleset":1' || return 1
+ ceph --format json osd dump | grep '"crush_rule":1' || return 1
#
# a crush ruleset by the name of the pool is implicitly created
#
ceph osd pool create $poolname 12 12 replicated $ruleset 2>&1 | \
grep "pool 'mypool' created" || return 1
rule_id=`ceph osd crush rule dump $ruleset | grep "rule_id" | awk -F[' ':,] '{print $4}'`
- ceph osd pool get $poolname crush_ruleset 2>&1 | \
- grep "crush_ruleset: $rule_id" || return 1
+ ceph osd pool get $poolname crush_rule 2>&1 | \
+ grep "crush_rule: $rule_id" || return 1
#non-existent crush ruleset
ceph osd pool create newpool 12 12 replicated non-existent 2>&1 | \
grep "doesn't exist" || return 1
for (auto pit = osdmap_pools.begin(); pit != osdmap_pools.end(); ++pit) {
const int64_t pool_id = pit->first;
const pg_pool_t &pool = pit->second;
- int ruleno = pool.get_crush_ruleset();
+ int ruleno = pool.get_crush_rule();
if (!osdmap.crush->rule_exists(ruleno)) {
dout(20) << __func__
p->set_pg_num(64);
p->set_pgp_num(64);
p->type = pg_pool_t::TYPE_ERASURE;
- p->crush_ruleset = r;
+ p->crush_rule = r;
new_pool_inc.new_pool_names[pool_id] = "ec";
osdmap.apply_incremental(new_pool_inc);
}
def test_pool_get(self):
for var in ('size', 'min_size', 'crash_replay_interval',
- 'pg_num', 'pgp_num', 'crush_ruleset', 'auid', 'fast_read',
+ 'pg_num', 'pgp_num', 'crush_rule', 'auid', 'fast_read',
'scrub_min_interval', 'scrub_max_interval',
'deep_scrub_interval', 'recovery_priority',
'recovery_op_priority'):
def test_pool_set(self):
for var in ('size', 'min_size', 'crash_replay_interval',
- 'pg_num', 'pgp_num', 'crush_ruleset',
+ 'pg_num', 'pgp_num', 'crush_rule',
'hashpspool', 'auid', 'fast_read',
'scrub_min_interval', 'scrub_max_interval',
'deep_scrub_interval', 'recovery_priority',