]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: ceph-kvstore-tool: get size of value for prefix/key 900/head
authorJoao Eduardo Luis <joao.luis@inktank.com>
Thu, 5 Dec 2013 17:05:33 +0000 (17:05 +0000)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Fri, 6 Dec 2013 01:06:17 +0000 (01:06 +0000)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/tools/ceph-kvstore-tool.cc

index 76f68294cbed5e75d22614f031344b69505736f8..5a68d98990dfc98d5b9979e8fc2bf75bf1dd8b2e 100644 (file)
@@ -216,7 +216,7 @@ void usage(const char *pname)
     << "  exists <prefix> [key]\n"
     << "  get <prefix> <key> [out <file>]\n"
     << "  crc <prefix> <key>\n"
-    << "  get-size\n"
+    << "  get-size [<prefix> <key>]\n"
     << "  set <prefix> <key> [ver <N>|in <file>]\n"
     << "  store-copy <path> [num-keys-per-tx]\n"
     << "  store-crc <path>\n"
@@ -334,6 +334,26 @@ int main(int argc, const char *argv[])
   } else if (cmd == "get-size") {
     std::cout << "estimated store size: " << st.get_size() << std::endl;
 
+    if (argc < 4)
+      return 0;
+
+    if (argc < 5) {
+      usage(argv[0]);
+      return 1;
+    }
+    string prefix(argv[3]);
+    string key(argv[4]);
+
+    bool exists = false;
+    bufferlist bl = st.get(prefix, key, exists);
+    if (!exists) {
+      std::cerr << "(" << prefix << "," << key
+                << ") does not exist" << std::endl;
+      return 1;
+    }
+    std::cout << "(" << prefix << "," << key
+              << ") size " << si_t(bl.length()) << std::endl;
+
   } else if (cmd == "set") {
     if (argc < 7) {
       usage(argv[0]);