cmd_getval(g_ceph_context, cmdmap, "name", name);
string profile;
cmd_getval(g_ceph_context, cmdmap, "profile", profile);
- if (profile == "") {
+ if (profile == "")
profile = "default";
- if (!osdmap.has_erasure_code_profile(profile)) {
- if (pending_inc.has_erasure_code_profile(profile))
- goto wait;
-
- map<string,string> profile_map;
- err = osdmap.get_erasure_code_profile_default(g_ceph_context,
- profile_map,
- &ss);
- if (err)
- goto reply;
- dout(20) << "erasure code profile " << name << " set" << dendl;
- pending_inc.set_erasure_code_profile(profile, profile_map);
- goto wait;
- }
- }
int ruleset;
err = crush_ruleset_create_erasure(name, profile, &ruleset, ss);
set_weight(i, CEPH_OSD_OUT);
}
- map<string,string> profile_map;
- r = get_erasure_code_profile_default(cct, profile_map, &ss);
- if (r < 0) {
- lderr(cct) << ss.str() << dendl;
- return r;
- }
- set_erasure_code_profile("default", profile_map);
- return 0;
-}
-
-int OSDMap::get_erasure_code_profile_default(CephContext *cct,
- map<string,string> &profile_map,
- ostream *ss)
-{
- int r = get_str_map(cct->_conf->osd_pool_default_erasure_code_profile,
- *ss,
- &profile_map);
- profile_map["directory"] =
+ map<string,string> erasure_code_profile_map;
+ r = get_str_map(cct->_conf->osd_pool_default_erasure_code_profile,
+ ss,
+ &erasure_code_profile_map);
+ erasure_code_profile_map["directory"] =
cct->_conf->osd_pool_default_erasure_code_directory;
+ set_erasure_code_profile("default", erasure_code_profile_map);
return r;
}
erasure_code_profiles.find(name);
return i != erasure_code_profiles.end();
}
- int get_erasure_code_profile_default(CephContext *cct,
- map<string,string> &profile_map,
- ostream *ss);
void set_erasure_code_profile(const string &name,
const map<string,string> &profile) {
erasure_code_profiles[name] = profile;
*/
int build_simple(CephContext *cct, epoch_t e, uuid_d &fsid,
int num_osd, int pg_bits, int pgp_bits);
- int set_erasure_code_profile_default(CephContext *cct);
-
static int _build_crush_types(CrushWrapper& crush);
static int build_simple_crush_map(CephContext *cct, CrushWrapper& crush,
int num_osd, ostream *ss);