]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crushtool: add --force N
authorSage Weil <sage@newdream.net>
Fri, 7 Oct 2011 20:02:49 +0000 (13:02 -0700)
committerSage Weil <sage@newdream.net>
Fri, 7 Oct 2011 20:02:49 +0000 (13:02 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/crushtool.cc

index 63feab4aeff2e423d4a2fd750f5253faaedf0330..ae4ce719d18db25b48ed6f674c91db041ebfe7e6 100644 (file)
@@ -833,6 +833,7 @@ int main(int argc, const char **argv)
   int num_rep = 2;
   int min_x = 0, max_x = 10000-1;
   int min_rule = 0, max_rule = 1000;
+  int force = -1;
   map<int, int> device_weight;
 
   vector<const char *> empty_args;  // we use -c, don't confuse the generic arg parsing
@@ -918,6 +919,11 @@ int main(int argc, const char **argv)
        exit(EXIT_FAILURE);
       }
       max_x = min_x;
+    } else if (ceph_argparse_withint(args, i, &force, &err, "--force", (char*)NULL)) {
+      if (!err.str().empty()) {
+       cerr << err.str() << std::endl;
+       exit(EXIT_FAILURE);
+      }
     } else if (ceph_argparse_withint(args, i, &max_rule, &err, "--max_rule", (char*)NULL)) {
       if (!err.str().empty()) {
        cerr << err.str() << std::endl;
@@ -1222,7 +1228,7 @@ int main(int argc, const char **argv)
       map<int,int> sizes;
       for (int x = min_x; x <= max_x; x++) {
        vector<int> out;
-       crush.do_rule(r, x, out, num_rep, -1, weight);
+       crush.do_rule(r, x, out, num_rep, force, weight);
        if (verbose)
          cout << "rule " << r << " x " << x << " " << out << std::endl;
        for (unsigned i = 0; i < out.size(); i++)