From aadc52e97170fffd2d23ec0c1d4b34cd584bbe8a Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 16 Jun 2020 15:09:37 +0200 Subject: [PATCH] os/bluestore: configure Seastar's allocator for RocksDB's threads. Signed-off-by: Radoslaw Zarzynski --- src/os/bluestore/BlueRocksEnv.cc | 12 ++++++++++++ src/os/bluestore/BlueRocksEnv.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/src/os/bluestore/BlueRocksEnv.cc b/src/os/bluestore/BlueRocksEnv.cc index 54c7d27458cc..8b154335ca6a 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 82cffcd809bd..652e90ab6d5d 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; -- 2.47.3