]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
bluestore/bluestore-tool: add bluefs-stats command
authorIgor Fedotov <ifedotov@suse.com>
Wed, 15 Apr 2020 13:15:32 +0000 (16:15 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Wed, 8 Jul 2020 19:43:48 +0000 (22:43 +0300)
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
(cherry picked from commit b411594a6130dcfa8e97ef5e8b292aadb87d0a83)

src/os/bluestore/bluestore_tool.cc

index 14858ee467d0e0059ec4ff94a437a86a62951891..2dc1016c38edd4a886f97cb462cf4e1253bd8877 100644 (file)
@@ -261,7 +261,8 @@ int main(int argc, char **argv)
         "prime-osd-dir, "
         "bluefs-log-dump, "
         "free-dump, "
-        "free-score")
+        "free-score, "
+        "bluefs-stats")
     ;
   po::options_description po_all("All options");
   po_all.add(po_options).add(po_positional);
@@ -857,6 +858,28 @@ int main(int argc, char **argv)
     }
 
     bluestore.cold_close();
+  } else  if (action == "bluefs-stats") {
+    AdminSocket* admin_socket = g_ceph_context->get_admin_socket();
+    ceph_assert(admin_socket);
+    validate_path(cct.get(), path, false);
+    BlueStore bluestore(cct.get(), path);
+    int r = bluestore.cold_open();
+    if (r < 0) {
+      cerr << "error from cold_open: " << cpp_strerror(r) << std::endl;
+      exit(EXIT_FAILURE);
+    }
+
+    ceph::bufferlist in, out;
+    ostringstream err;
+    r = admin_socket->execute_command(
+      { "{\"prefix\": \"bluefs stats\"}" },
+      in, err, &out);
+    if (r != 0) {
+      cerr << "failure querying bluefs stats: " << cpp_strerror(r) << std::endl;
+      exit(EXIT_FAILURE);
+    }
+    cout << std::string(out.c_str(), out.length()) << std::endl;
+     bluestore.cold_close();
   } else {
     cerr << "unrecognized action " << action << std::endl;
     return 1;