OPTION(osd_stat_refresh_interval, OPT_DOUBLE, .5)
OPTION(osd_pg_bits, OPT_INT, 6) // bits per osd
OPTION(osd_pgp_bits, OPT_INT, 6) // bits per osd
-OPTION(osd_lpg_bits, OPT_INT, 0) // bits per osd
OPTION(osd_pg_layout, OPT_INT, CEPH_PG_LAYOUT_CRUSH)
OPTION(osd_min_rep, OPT_INT, 1)
OPTION(osd_max_rep, OPT_INT, 10)
newmap.set_fsid(mon->monmap->fsid);
} else {
newmap.build_simple(g_ceph_context, 0, mon->monmap->fsid, 0,
- g_conf->osd_pg_bits, g_conf->osd_pgp_bits, g_conf->osd_lpg_bits);
+ g_conf->osd_pg_bits, g_conf->osd_pgp_bits);
}
newmap.set_epoch(1);
newmap.created = newmap.modified = ceph_clock_now(g_ceph_context);
g_conf->osd_pool_default_pg_num);
pending_inc.new_pools[pool].pgp_num = (pgp_num ? pgp_num :
g_conf->osd_pool_default_pgp_num);
- pending_inc.new_pools[pool].lpg_num = 0;
- pending_inc.new_pools[pool].lpgp_num = 0;
pending_inc.new_pools[pool].last_change = pending_inc.epoch;
pending_inc.new_pools[pool].auid = auid;
pending_inc.new_pool_names[pool] = name;
paxos->wait_for_commit(new Monitor::C_Command(mon, m, ret, rs, paxos->get_version()));
return true;
}
- } else if (m->cmd.size() >= 5 &&
- m->cmd[2] == "disable_lpgs" &&
- m->cmd[4] == "--yes-i-really-mean-it") {
- // semi-kludge to disable localized pgs for a pool
- int64_t pool = osdmap.lookup_pg_pool_name(m->cmd[3].c_str());
- if (pool < 0) {
- ss << "unrecognized pool '" << m->cmd[3] << "'";
- err = -ENOENT;
- } else {
- const pg_pool_t *p = osdmap.get_pg_pool(pool);
- if (pending_inc.new_pools.count(pool) == 0)
- pending_inc.new_pools[pool] = *p;
- pending_inc.new_pools[pool].lpg_num = 0;
- pending_inc.new_pools[pool].lpgp_num = 0;
- pending_inc.new_pools[pool].last_change = pending_inc.epoch;
- ss << "disabled localized pgs for pool " << pool;
- getline(ss, rs);
- paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version()));
- return true;
- }
} else if (m->cmd[2] == "set") {
if (m->cmd.size() != 6) {
err = -EINVAL;
err = 0;
goto out;
}
- if (m->cmd[4] == "lpg_num") {
- ss << "LPG_NUM: " << p->get_lpg_num();
- err = 0;
- goto out;
- }
- if (m->cmd[4] == "lpgp_num") {
- ss << "LPPG_NUM: " << p->get_lpgp_num();
- err = 0;
- goto out;
- }
ss << "don't know how to get pool field " << m->cmd[4];
goto out;
}
created++;
register_pg(pool, pgid, pool.get_last_change(), new_pool);
}
-
- for (ps_t ps = 0; ps < pool.get_lpg_num(); ps++) {
- for (int osd = 0; osd < osdmap->get_max_osd(); osd++) {
- pg_t pgid(ps, poolid, osd);
- if (pg_map.pg_stat.count(pgid)) {
- dout(20) << "register_new_pgs have " << pgid << dendl;
- continue;
- }
- created++;
- register_pg(pool, pgid, pool.get_last_change(), new_pool);
- }
- }
}
int max = MIN(osdmap->get_max_osd(), osdmap->crush.get_max_devices());
CephContext *cct = new CephContext(CODE_ENVIRONMENT_UTILITY);
o.push_back(new OSDMap);
uuid_d fsid;
- o.back()->build_simple(cct, 1, fsid, 16, 7, 8, 9);
+ o.back()->build_simple(cct, 1, fsid, 16, 7, 8);
o.back()->created = o.back()->modified = utime_t(1, 2); // fix timestamp
delete cct;
}
}
void OSDMap::build_simple(CephContext *cct, epoch_t e, uuid_d &fsid,
- int nosd, int pg_bits, int pgp_bits, int lpg_bits)
+ int nosd, int pg_bits, int pgp_bits)
{
ldout(cct, 10) << "build_simple on " << num_osd
<< " osds with " << pg_bits << " pg bits per osd, "
- << lpg_bits << " lpg bits" << dendl;
+ << dendl;
epoch = e;
set_fsid(fsid);
created = modified = ceph_clock_now(cct);
pools[pool].object_hash = CEPH_STR_HASH_RJENKINS;
pools[pool].pg_num = poolbase << pg_bits;
pools[pool].pgp_num = poolbase << pgp_bits;
- pools[pool].lpg_num = lpg_bits ? (1 << (lpg_bits-1)) : 0;
- pools[pool].lpgp_num = lpg_bits ? (1 << (lpg_bits-1)) : 0;
+ pools[pool].lpg_num = 0;
+ pools[pool].lpgp_num = 0;
pools[pool].last_change = epoch;
if (p->first == CEPH_DATA_RULE)
pools[pool].crash_replay_interval = cct->_conf->osd_default_data_pool_replay_window;
}
void OSDMap::build_simple_from_conf(CephContext *cct, epoch_t e, uuid_d &fsid,
- int pg_bits, int pgp_bits, int lpg_bits)
+ int pg_bits, int pgp_bits)
{
ldout(cct, 10) << "build_simple_from_conf with "
<< pg_bits << " pg bits per osd, "
- << lpg_bits << " lpg bits" << dendl;
+ << dendl;
epoch = e;
set_fsid(fsid);
created = modified = ceph_clock_now(cct);
pools[pool].object_hash = CEPH_STR_HASH_RJENKINS;
pools[pool].pg_num = (maxosd + 1) << pg_bits;
pools[pool].pgp_num = (maxosd + 1) << pgp_bits;
- pools[pool].lpg_num = lpg_bits ? (1 << (lpg_bits-1)) : 0;
- pools[pool].lpgp_num = lpg_bits ? (1 << (lpg_bits-1)) : 0;
+ pools[pool].lpg_num = 0;
+ pools[pool].lpgp_num = 0;
pools[pool].last_change = epoch;
if (p->first == CEPH_DATA_RULE)
pools[pool].crash_replay_interval = cct->_conf->osd_default_data_pool_replay_window;
* handy helpers to build simple maps...
*/
void build_simple(CephContext *cct, epoch_t e, uuid_d &fsid,
- int num_osd, int pg_bits, int pgp_bits, int lpg_bits);
+ int num_osd, int pg_bits, int pgp_bits);
void build_simple_from_conf(CephContext *cct, epoch_t e, uuid_d &fsid,
- int pg_bits, int pgp_bits, int lpg_bits);
+ int pg_bits, int pgp_bits);
static void build_simple_crush_map(CephContext *cct, CrushWrapper& crush,
map<int, const char*>& poolsets, int num_osd);
static void build_simple_crush_map_from_conf(CephContext *cct, CrushWrapper& crush,
int num_osd = 0;
int pg_bits = g_conf->osd_pg_bits;
int pgp_bits = g_conf->osd_pgp_bits;
- int lpg_bits = g_conf->osd_lpg_bits;
bool clobber = false;
bool modified = false;
std::string export_crush, import_crush, test_map_pg, test_map_object;
cerr << err.str() << std::endl;
exit(EXIT_FAILURE);
}
- } else if (ceph_argparse_withint(args, i, &lpg_bits, &err, "--lpg_bits", (char*)NULL)) {
- if (!err.str().empty()) {
- cerr << err.str() << std::endl;
- exit(EXIT_FAILURE);
- }
} else if (ceph_argparse_witharg(args, i, &val, "--export_crush", (char*)NULL)) {
export_crush = val;
} else if (ceph_argparse_witharg(args, i, &val, "--import_crush", (char*)NULL)) {
}
uuid_d fsid;
memset(&fsid, 0, sizeof(uuid_d));
- osdmap.build_simple(g_ceph_context, 0, fsid, num_osd, pg_bits, pgp_bits, lpg_bits);
+ osdmap.build_simple(g_ceph_context, 0, fsid, num_osd, pg_bits, pgp_bits);
modified = true;
}
if (create_from_conf) {
uuid_d fsid;
memset(&fsid, 0, sizeof(uuid_d));
- osdmap.build_simple_from_conf(g_ceph_context, 0, fsid, pg_bits, pgp_bits, lpg_bits);
+ osdmap.build_simple_from_conf(g_ceph_context, 0, fsid, pg_bits, pgp_bits);
modified = true;
}