Use get_rule_id() instead of rule_exists() to test the existence of a
ruleset and preserve the ruleset.
Signed-off-by: Loic Dachary <loic@dachary.org>
int *ruleset,
stringstream &ss)
{
- if (osdmap.crush->rule_exists(name))
+ *ruleset = osdmap.crush->get_rule_id(name);
+ if (*ruleset != -ENOENT)
return -EEXIST;
CrushWrapper newcrush;
_get_pending_crush(newcrush);
- if (newcrush.rule_exists(name)) {
+ *ruleset = newcrush.get_rule_id(name);
+ if (*ruleset != -ENOENT) {
return -EALREADY;
} else {
ErasureCodeInterfaceRef erasure_code;
erasure_code.reset();
if (rule < 0)
return rule;
+ *ruleset = rule;
pending_inc.crush.clear();
newcrush.encode(pending_inc.crush);
return 0;