"name=pgp_num,type=CephInt,range=0,req=false " \
"name=pool_type,type=CephChoices,strings=replicated|erasure,req=false " \
"name=erasure_code_profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.] " \
- "name=ruleset,type=CephString,req=false", \
+ "name=ruleset,type=CephString,req=false " \
+ "name=expected_num_objects,type=CephInt,req=false", \
"create pool", "osd", "rw", "cli,rest")
COMMAND("osd pool delete " \
"name=pool,type=CephPoolname " \
return prepare_new_pool(m->name, m->auid, m->crush_rule, ruleset_name,
0, 0,
erasure_code_profile,
- pg_pool_t::TYPE_REPLICATED, ss);
+ pg_pool_t::TYPE_REPLICATED, 0, ss);
else
return prepare_new_pool(m->name, session->auid, m->crush_rule, ruleset_name,
0, 0,
erasure_code_profile,
- pg_pool_t::TYPE_REPLICATED, ss);
+ pg_pool_t::TYPE_REPLICATED, 0, ss);
}
int OSDMonitor::crush_ruleset_create_erasure(const string &name,
* @param pgp_num The pgp_num to use. If set to 0, will use the system default
* @param erasure_code_profile The profile name in OSDMap to be used for erasure code
* @param pool_type TYPE_ERASURE, TYPE_REP or TYPE_RAID4
+ * @param expected_num_objects expected number of objects on the pool
* @param ss human readable error message, if any.
*
* @return 0 on success, negative errno on failure.
unsigned pg_num, unsigned pgp_num,
const string &erasure_code_profile,
const unsigned pool_type,
+ const uint64_t expected_num_objects,
stringstream &ss)
{
int r;
pi->size = size;
pi->min_size = min_size;
pi->crush_ruleset = crush_ruleset;
+ pi->expected_num_objects = expected_num_objects;
pi->object_hash = CEPH_STR_HASH_RJENKINS;
pi->set_pg_num(pg_num ? pg_num : g_conf->osd_pool_default_pg_num);
pi->set_pgp_num(pgp_num ? pgp_num : g_conf->osd_pool_default_pgp_num);
}
}
+ int64_t expected_num_objects;
+ cmd_getval(g_ceph_context, cmdmap, "expected_num_objects", expected_num_objects, int64_t(0));
+ if (expected_num_objects < 0) {
+ ss << "'expected_num_objects' must be non-negative";
+ err = -EINVAL;
+ goto reply;
+ }
err = prepare_new_pool(poolstr, 0, // auid=0 for admin created pool
-1, // default crush rule
ruleset_name,
pg_num, pgp_num,
erasure_code_profile, pool_type,
+ (uint64_t)expected_num_objects,
ss);
if (err < 0) {
switch(err) {