]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdmaptool: allow add --pg-num to osdmaptool --test-map-pgs to override the map's... 7733/head
authorxinxin shu <xinxin.shu@intel.com>
Mon, 22 Feb 2016 02:46:35 +0000 (10:46 +0800)
committerxinxin shu <xinxin.shu@intel.com>
Tue, 23 Feb 2016 00:57:58 +0000 (08:57 +0800)
Fixes: #14701
Signed-off-by: xinxin shu <xinxin.shu@intel.com>
src/osd/OSDMap.h
src/test/cli/osdmaptool/help.t
src/test/cli/osdmaptool/missing-argument.t
src/tools/osdmaptool.cc

index 6694e27b3bb99ac7484423be9dea5a19dd3a52cd..1a83912a0bd48e33b5f815b1162e1bb3f1577007 100644 (file)
@@ -731,6 +731,9 @@ public:
   const map<int64_t,pg_pool_t>& get_pools() const {
     return pools;
   }
+  map<int64_t,pg_pool_t>& get_pools() {
+    return pools;
+  }
   const string& get_pool_name(int64_t p) const {
     map<int64_t, string>::const_iterator i = pool_name.find(p);
     assert(i != pool_name.end());
index 02f56efddfffeaf003dca6032aae533f7dfefc12..d6d75470de88cc2a3c312792dacf5820596897ae 100644 (file)
@@ -3,7 +3,7 @@
    usage: [--print] [--createsimple <numosd> [--clobber] [--pg_bits <bitsperosd>]] <mapfilename>
      --export-crush <file>   write osdmap's crush map to <file>
      --import-crush <file>   replace osdmap's crush map with <file>
-     --test-map-pgs [--pool <poolid>] map all pgs
+     --test-map-pgs [--pool <poolid>] [--pg_num <pg_num>] map all pgs
      --test-map-pgs-dump [--pool <poolid>] map all pgs
      --mark-up-in            mark osds up and in (but do not persist)
      --clear-temp            clear pg_temp and primary_temp
index 87ab3eb10d64e5055437492a4e80593be34b5c43..b872696b9cd593c993e439830d94596a630f70a1 100644 (file)
@@ -3,7 +3,7 @@
    usage: [--print] [--createsimple <numosd> [--clobber] [--pg_bits <bitsperosd>]] <mapfilename>
      --export-crush <file>   write osdmap's crush map to <file>
      --import-crush <file>   replace osdmap's crush map with <file>
-     --test-map-pgs [--pool <poolid>] map all pgs
+     --test-map-pgs [--pool <poolid>] [--pg_num <pg_num>] map all pgs
      --test-map-pgs-dump [--pool <poolid>] map all pgs
      --mark-up-in            mark osds up and in (but do not persist)
      --clear-temp            clear pg_temp and primary_temp
index 810f82adcc8935126d8d1d32f6ffeb4ecaa56288..6b4a3f18c30ce2156521149dc6c8961feb53a5ac 100644 (file)
@@ -28,7 +28,7 @@ void usage()
   cout << " usage: [--print] [--createsimple <numosd> [--clobber] [--pg_bits <bitsperosd>]] <mapfilename>" << std::endl;
   cout << "   --export-crush <file>   write osdmap's crush map to <file>" << std::endl;
   cout << "   --import-crush <file>   replace osdmap's crush map with <file>" << std::endl;
-  cout << "   --test-map-pgs [--pool <poolid>] map all pgs" << std::endl;
+  cout << "   --test-map-pgs [--pool <poolid>] [--pg_num <pg_num>] map all pgs" << std::endl;
   cout << "   --test-map-pgs-dump [--pool <poolid>] map all pgs" << std::endl;
   cout << "   --mark-up-in            mark osds up and in (but do not persist)" << std::endl;
   cout << "   --clear-temp            clear pg_temp and primary_temp" << std::endl;
@@ -73,6 +73,7 @@ int main(int argc, const char **argv)
   bool test_map_pgs = false;
   bool test_map_pgs_dump = false;
   bool test_random = false;
+  int64_t pg_num = -1;
 
   std::string val;
   std::ostringstream err;
@@ -133,6 +134,11 @@ int main(int argc, const char **argv)
       test_map_object = val;
     } else if (ceph_argparse_flag(args, i, "--test_crush", (char*)NULL)) {
       test_crush = true;
+    } else if (ceph_argparse_witharg(args, i, &val, err, "--pg_num", (char*)NULL)) {
+      string interr;
+      pg_num = strict_strtoll(val.c_str(), 10, &interr);
+      if (interr.length() > 0)
+        cerr << "error parsing integer value " << interr << std::endl;
     } else if (ceph_argparse_witharg(args, i, &range_first, err, "--range_first", (char*)NULL)) {
     } else if (ceph_argparse_witharg(args, i, &range_last, err, "--range_last", (char*)NULL)) {
     } else if (ceph_argparse_witharg(args, i, &pool, err, "--pool", (char*)NULL)) {
@@ -330,11 +336,14 @@ int main(int argc, const char **argv)
     vector<int> size(30, 0);
     if (test_random)
       srand(getpid());
-    const map<int64_t,pg_pool_t>& pools = osdmap.get_pools();
-    for (map<int64_t,pg_pool_t>::const_iterator p = pools.begin();
+    map<int64_t,pg_pool_t>& pools = osdmap.get_pools();
+    for (map<int64_t,pg_pool_t>::iterator p = pools.begin();
         p != pools.end(); ++p) {
       if (pool != -1 && p->first != pool)
        continue;
+      if (pg_num > 0) 
+        p->second.set_pg_num(pg_num);
+      
       cout << "pool " << p->first
           << " pg_num " << p->second.get_pg_num() << std::endl;
       for (unsigned i = 0; i < p->second.get_pg_num(); ++i) {