]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crush: remove_rule() method
authorSage Weil <sage@inktank.com>
Wed, 30 Jan 2013 08:50:33 +0000 (00:50 -0800)
committerSage Weil <sage@inktank.com>
Tue, 5 Feb 2013 22:31:13 +0000 (14:31 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/crush/CrushWrapper.cc
src/crush/CrushWrapper.h

index bae264245f7b59c35d3403aee3c0ef0035cd3850..bb60d5b3ca819921d431aaeac1dcd7af4ac1630a 100644 (file)
@@ -530,6 +530,19 @@ int CrushWrapper::add_simple_rule(string name, string root_name, string failure_
   return rno;
 }
 
+int CrushWrapper::remove_rule(int ruleno)
+{
+  if (ruleno >= (int)crush->max_rules)
+    return -ENOENT;
+  if (crush->rules[ruleno] == NULL)
+    return -ENOENT;
+  crush_destroy_rule(crush->rules[ruleno]);
+  crush->rules[ruleno] = NULL;
+  rule_name_map.erase(ruleno);
+  have_rmaps = false;
+  return 0;
+}
+
 void CrushWrapper::encode(bufferlist& bl, bool lean) const
 {
   assert(crush);
index df2c620a82e65dcd18571e6ee5bb11b4e53ad13b..8bd43f0d92518fb3a0ee47f30b8313e236193f5b 100644 (file)
@@ -532,6 +532,8 @@ public:
 
   int add_simple_rule(string name, string root_name, string failure_domain_type);
 
+  int remove_rule(int ruleno);
+
 
   /** buckets **/
 private: