return *crush_ruleset;
}
} else {
- int ret;
- ret = osdmap.crush->get_rule_id(ruleset_name);
- if (ret != -ENOENT) {
- // found it, use it
- *crush_ruleset = ret;
- } else {
- CrushWrapper newcrush;
- _get_pending_crush(newcrush);
-
- ret = newcrush.get_rule_id(ruleset_name);
- if (ret != -ENOENT) {
- // found it, wait for it to be proposed
- dout(20) << "prepare_pool_crush_ruleset: ruleset "
- << ruleset_name << " is pending, try again" << dendl;
- return -EAGAIN;
- } else {
- //Cannot find it , return error
- ss << "Specified ruleset " << ruleset_name << " doesn't exist";
- return ret;
- }
- }
+ return get_crush_ruleset(ruleset_name, crush_ruleset, ss);
}
}
break;
return 0;
}
+
+int OSDMonitor::get_crush_ruleset(const string &ruleset_name,
+ int *crush_ruleset,
+ stringstream &ss)
+{
+ int ret;
+ ret = osdmap.crush->get_rule_id(ruleset_name);
+ if (ret != -ENOENT) {
+ // found it, use it
+ *crush_ruleset = ret;
+ } else {
+ CrushWrapper newcrush;
+ _get_pending_crush(newcrush);
+
+ ret = newcrush.get_rule_id(ruleset_name);
+ if (ret != -ENOENT) {
+ // found it, wait for it to be proposed
+ dout(20) << __func__ << ": ruleset " << ruleset_name
+ << " try again" << dendl;
+ return -EAGAIN;
+ } else {
+ //Cannot find it , return error
+ ss << "specified ruleset " << ruleset_name << " doesn't exist";
+ return ret;
+ }
+ }
+ return 0;
+}
+
/**
* @param name The name of the new pool
* @param auid The auid of the pool owner. Can be -1
const string &profile,
int *ruleset,
stringstream &ss);
+ int get_crush_ruleset(const string &ruleset_name,
+ int *crush_ruleset,
+ stringstream &ss);
int get_erasure_code(const string &erasure_code_profile,
ErasureCodeInterfaceRef *erasure_code,
stringstream &ss) const;