From: Loic Dachary Date: Mon, 3 Mar 2014 13:52:20 +0000 (+0100) Subject: mon: crush_ruleset_create_erasure set ruleset X-Git-Tag: v0.79~136^2~27 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=370e000e6d7fdc4069f744358296c0af0594847a;p=ceph.git mon: crush_ruleset_create_erasure set ruleset Use get_rule_id() instead of rule_exists() to test the existence of a ruleset and preserve the ruleset. Signed-off-by: Loic Dachary --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 7654000e621e..7a7f731cab4b 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2812,13 +2812,15 @@ int OSDMonitor::crush_ruleset_create_erasure(const string &name, 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; @@ -2832,6 +2834,7 @@ int OSDMonitor::crush_ruleset_create_erasure(const string &name, erasure_code.reset(); if (rule < 0) return rule; + *ruleset = rule; pending_inc.crush.clear(); newcrush.encode(pending_inc.crush); return 0;