* @param [in] name of the ruleset to create
* @param [in] crush crushmap in which the ruleset is created
* @param [out] ss contains informative messages when an error occurs
- * @return **0** on success or a negative errno on error.
+ * @return a ruleset on success or a negative errno on error.
*/
virtual int create_ruleset(const string &name,
CrushWrapper &crush,
int *ruleset,
stringstream &ss)
{
- *ruleset = osdmap.crush->get_rule_id(name);
- if (*ruleset != -ENOENT)
+ int ruleid = osdmap.crush->get_rule_id(name);
+ if (ruleid != -ENOENT) {
+ *ruleset = osdmap.crush->get_rule_mask_ruleset(ruleid);
return -EEXIST;
+ }
CrushWrapper newcrush;
_get_pending_crush(newcrush);
- *ruleset = newcrush.get_rule_id(name);
- if (*ruleset != -ENOENT) {
+ ruleid = newcrush.get_rule_id(name);
+ if (ruleid != -ENOENT) {
+ *ruleset = newcrush.get_rule_mask_ruleset(ruleid);
return -EALREADY;
} else {
ErasureCodeInterfaceRef erasure_code;