From: Radoslaw Zarzynski Date: Tue, 16 Jun 2020 13:09:37 +0000 (+0200) Subject: os/bluestore: configure Seastar's allocator for RocksDB's threads. X-Git-Tag: wip-pdonnell-testing-20200918.022351~906^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aadc52e97170fffd2d23ec0c1d4b34cd584bbe8a;p=ceph-ci.git os/bluestore: configure Seastar's allocator for RocksDB's threads. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/os/bluestore/BlueRocksEnv.cc b/src/os/bluestore/BlueRocksEnv.cc index 54c7d27458c..8b154335ca6 100644 --- a/src/os/bluestore/BlueRocksEnv.cc +++ b/src/os/bluestore/BlueRocksEnv.cc @@ -1,6 +1,10 @@ // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab +#ifdef WITH_SEASTAR +#include "crimson/os/alienstore/alien_store.h" +#endif + #include "BlueRocksEnv.h" #include "BlueFS.h" #include "include/stringify.h" @@ -584,3 +588,11 @@ rocksdb::Status BlueRocksEnv::GetTestDirectory(std::string* path) *path = "temp_" + stringify(++foo); return rocksdb::Status::OK(); } + +void BlueRocksEnv::StartThread(void(*function)(void* arg), void* arg) +{ +#ifdef WITH_SEASTAR + crimson::os::AlienStore::configure_thread_memory(); +#endif + base_t::StartThread(function, arg); +} diff --git a/src/os/bluestore/BlueRocksEnv.h b/src/os/bluestore/BlueRocksEnv.h index 82cffcd809b..652e90ab6d5 100644 --- a/src/os/bluestore/BlueRocksEnv.h +++ b/src/os/bluestore/BlueRocksEnv.h @@ -16,6 +16,8 @@ class BlueFS; class BlueRocksEnv : public rocksdb::EnvWrapper { + using base_t = EnvWrapper; + void split(const std::string &fn, std::string *dir, std::string *file) { size_t slash = fn.rfind('/'); *file = fn.substr(slash + 1); @@ -156,6 +158,9 @@ public: rocksdb::Status GetAbsolutePath(const std::string& db_path, std::string* output_path) override; + // Start new thread taking care about Seastar's allocator init. + void StartThread(void(*function)(void* arg), void* arg) override; + explicit BlueRocksEnv(BlueFS *f); private: BlueFS *fs;