simpler this way.
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
class OnCommit final: public Context
{
- seastar::alien::instance& alien;
const int cpuid;
Context *oncommit;
seastar::promise<> &alien_done;
public:
OnCommit(
- seastar::alien::instance& alien,
int id,
seastar::promise<> &done,
Context *oncommit,
ceph::os::Transaction& txn)
- : alien(alien), cpuid(id), oncommit(oncommit),
+ : cpuid(id), oncommit(oncommit),
alien_done(done) {}
void finish(int) final {
- return seastar::alien::submit_to(alien, cpuid, [this] {
+ return seastar::alien::submit_to(seastar::engine().alien(), cpuid, [this] {
if (oncommit) {
oncommit->complete(0);
}
AlienStore::AlienStore(const std::string& type,
const std::string& path,
- const ConfigValues& values,
- seastar::alien::instance& alien)
+ const ConfigValues& values)
: type(type),
- path{path},
- alien{alien}
+ path{path}
{
cct = std::make_unique<CephContext>(CEPH_ENTITY_TYPE_OSD);
g_ceph_context = cct.get();
assert(tp);
return tp->submit(ch->get_cid().hash_to_shard(tp->size()),
[this, ch, id, crimson_wrapper, &txn, &done] {
- txn.register_on_commit(new OnCommit(alien,
- id, done, crimson_wrapper,
+ txn.register_on_commit(new OnCommit(id, done, crimson_wrapper,
txn));
auto c = static_cast<AlienCollection*>(ch.get());
return store->queue_transaction(c->collection, std::move(txn));
#include "crimson/os/futurized_collection.h"
#include "crimson/os/futurized_store.h"
-namespace seastar::alien {
-class instance;
-}
-
namespace ceph::os {
class Transaction;
}
};
AlienStore(const std::string& type,
const std::string& path,
- const ConfigValues& values,
- seastar::alien::instance& alien);
+ const ConfigValues& values);
~AlienStore() final;
seastar::future<> start() final;
mutable std::unique_ptr<crimson::os::ThreadPool> tp;
const std::string type;
const std::string path;
- seastar::alien::instance& alien;
uint64_t used_bytes = 0;
std::unique_ptr<ObjectStore> store;
std::unique_ptr<CephContext> cct;
std::unique_ptr<FuturizedStore>
FuturizedStore::create(const std::string& type,
const std::string& data,
- const ConfigValues& values,
- seastar::alien::instance& alien)
+ const ConfigValues& values)
{
if (type == "cyanstore") {
return std::make_unique<crimson::os::CyanStore>(data);
} else {
// use AlienStore as a fallback. It adapts e.g. BlueStore.
return std::make_unique<crimson::os::AlienStore>(
- type, data, values, alien);
+ type, data, values);
}
}
#include "include/uuid.h"
#include "osd/osd_types.h"
-namespace seastar::alien {
-class instance;
-}
-
namespace ceph::os {
class Transaction;
}
static std::unique_ptr<FuturizedStore> create(const std::string& type,
const std::string& data,
- const ConfigValues& values,
- seastar::alien::instance& alien);
+ const ConfigValues& values);
FuturizedStore() = default;
virtual ~FuturizedStore() = default;
auto store = crimson::os::FuturizedStore::create(
local_conf().get_val<std::string>("osd_objectstore"),
local_conf().get_val<std::string>("osd_data"),
- local_conf().get_config_values(),
- app.alien());
+ local_conf().get_config_values());
osd.start_single(whoami, nonce,
std::ref(*store),