#include "tm_driver.h"
-BlockDriverRef get_backend(BlockDriver::config_t config)
+BlockDriverRef get_backend(BlockDriver::config_t config,
+ seastar::alien::instance& alien)
{
if (config.type == "transaction_manager") {
return std::make_unique<TMDriver>(config);
} else if (config.is_futurized_store()) {
- return std::make_unique<FSDriver>(config);
+ return std::make_unique<FSDriver>(config, alien);
} else {
ceph_assert(0 == "invalid option");
return BlockDriverRef();
#include "include/buffer.h"
+namespace seastar::alien {
+class instance;
+}
+
/**
* BlockDriver
*
};
using BlockDriverRef = std::unique_ptr<BlockDriver>;
-BlockDriverRef get_backend(BlockDriver::config_t config);
+BlockDriverRef get_backend(BlockDriver::config_t config,
+ seastar::alien::instance& alien);
fs = FuturizedStore::create(
config.get_fs_type(),
*config.path,
- crimson::common::local_conf().get_config_values());
+ crimson::common::local_conf().get_config_values(),
+ alien);
}
#include "crimson/os/futurized_collection.h"
#include "crimson/os/futurized_store.h"
+namespace seastar::alien {
+class instance;
+}
+
class FSDriver final : public BlockDriver {
public:
- FSDriver(config_t config) : config(config) {}
+ FSDriver(config_t config,
+ seastar::alien::instance& alien)
+ : config(config),
+ alien(alien)
+ {}
~FSDriver() final {}
bufferptr get_buffer(size_t size) final {
private:
size_t size = 0;
const config_t config;
+ seastar::alien::instance& alien;
std::unique_ptr<crimson::os::FuturizedStore> fs;
std::map<unsigned, crimson::os::CollectionRef> collections;
crimson::common::sharded_conf().stop().get();
});
- auto backend = get_backend(backend_config);
+ auto backend = get_backend(backend_config, app.alien());
NBDHandler nbd(*backend, nbd_config);
backend->mount().get();
auto close_backend = seastar::defer([&] {