virtual void get_db_statistics(Formatter *f) { }
virtual void generate_db_histogram(Formatter *f) { }
+ virtual void flush_cache() { }
virtual void dump_perf_counters(Formatter *f) {}
virtual string get_type() = 0;
dout(20) << __func__ << " finished in " << duration << " seconds" << dendl;
}
+
+void BlueStore::flush_cache()
+{
+ for (auto i : cache_shards) {
+ i->trim_all();
+ }
+}
// ===========================================
void trim(uint64_t target_bytes, float target_meta_ratio,
float bytes_per_onode);
+ void trim_all() {
+ _trim(0, 0);
+ }
+
virtual void _trim(uint64_t onode_max, uint64_t buffer_max) = 0;
virtual void add_stats(uint64_t *onodes, uint64_t *extents,
void get_db_statistics(Formatter *f) override;
void generate_db_histogram(Formatter *f) override;
+ void flush_cache() override;
void dump_perf_counters(Formatter *f) override {
f->open_object_section("perf_counters");
logger->dump_formatted(f, false);
service.dumps_scrub(f);
} else if (command == "calc_objectstore_db_histogram") {
store->generate_db_histogram(f);
+ } else if (command == "flush_store_cache") {
+ store->flush_cache();
} else {
assert(0 == "broken asok registration");
}
"print scheduled scrubs");
assert(r == 0);
- r = admin_socket->register_command("calc_objectstore_db_histogram", "calc_objectstore_db_histogram", asok_hook,
- "Generate key value histogram of kvdb(rocksdb) which used by bluestore");
+ r = admin_socket->register_command("calc_objectstore_db_histogram",
+ "calc_objectstore_db_histogram",
+ asok_hook,
+ "Generate key value histogram of kvdb(rocksdb) which used by bluestore");
+ assert(r == 0);
+
+ r = admin_socket->register_command("flush_store_cache",
+ "flush_store_cache",
+ asok_hook,
+ "Flush bluestore internal cache");
assert(r == 0);
test_ops_hook = new TestOpsSocketHook(&(this->service), this->store);
cct->get_admin_socket()->unregister_command("get_heap_property");
cct->get_admin_socket()->unregister_command("dump_objectstore_kv_stats");
cct->get_admin_socket()->unregister_command("calc_objectstore_db_histogram");
+ cct->get_admin_socket()->unregister_command("flush_store_cache");
delete asok_hook;
asok_hook = NULL;