From: Kefu Chai Date: Wed, 16 Jun 2021 09:11:50 +0000 (+0800) Subject: crimson: adapt to the new alien API X-Git-Tag: v17.1.0~1633^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e53ea0886fba9073904f59ea85fb73d854565921;p=ceph.git crimson: adapt to the new alien API since seastar now deprecates the old alien::submit_to() API, and replaced it with a variant which requires a new parameter of "alien" instance, let's pick it up, to amortize the cost to catch up with the seastar master HEAD. Signed-off-by: Kefu Chai --- diff --git a/src/crimson/os/alienstore/alien_store.cc b/src/crimson/os/alienstore/alien_store.cc index 4f6eb4b8665c..b99d84d0e405 100644 --- a/src/crimson/os/alienstore/alien_store.cc +++ b/src/crimson/os/alienstore/alien_store.cc @@ -33,20 +33,22 @@ namespace { class OnCommit final: public Context { - int cpuid; + 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) - : cpuid(id), oncommit(oncommit), + : alien(alien), cpuid(id), oncommit(oncommit), alien_done(done) {} void finish(int) final { - return seastar::alien::submit_to(cpuid, [this] { + return seastar::alien::submit_to(alien, cpuid, [this] { if (oncommit) { oncommit->complete(0); } @@ -62,7 +64,8 @@ namespace crimson::os { using crimson::common::get_conf; AlienStore::AlienStore(const std::string& path, const ConfigValues& values) - : path{path} + : path{path}, + alien{std::make_unique()} { cct = std::make_unique(CEPH_ENTITY_TYPE_OSD); g_ceph_context = cct.get(); @@ -416,7 +419,9 @@ seastar::future<> AlienStore::do_transaction(CollectionRef ch, 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(id, done, crimson_wrapper, txn)); + txn.register_on_commit(new OnCommit(*alien, + id, done, crimson_wrapper, + txn)); auto c = static_cast(ch.get()); return store->queue_transaction(c->collection, std::move(txn)); }); diff --git a/src/crimson/os/alienstore/alien_store.h b/src/crimson/os/alienstore/alien_store.h index e6e474ebcffd..940177b63c1b 100644 --- a/src/crimson/os/alienstore/alien_store.h +++ b/src/crimson/os/alienstore/alien_store.h @@ -14,6 +14,10 @@ #include "crimson/os/futurized_collection.h" #include "crimson/os/futurized_store.h" +namespace seastar::alien { +class instance; +} + namespace ceph::os { class Transaction; } @@ -123,6 +127,7 @@ private: constexpr static unsigned MAX_KEYS_PER_OMAP_GET_CALL = 32; mutable std::unique_ptr tp; const std::string path; + std::unique_ptr alien; uint64_t used_bytes = 0; std::unique_ptr store; std::unique_ptr cct; diff --git a/src/seastar b/src/seastar index 27b15a1972f0..2e3c6da3f8c8 160000 --- a/src/seastar +++ b/src/seastar @@ -1 +1 @@ -Subproject commit 27b15a1972f08df8cdd2e939f39da5461bd8825e +Subproject commit 2e3c6da3f8c8b69cb790b056661717f1d7346a61 diff --git a/src/test/crimson/seastar_runner.h b/src/test/crimson/seastar_runner.h index 5a430554e59f..ab140fa99cab 100644 --- a/src/test/crimson/seastar_runner.h +++ b/src/test/crimson/seastar_runner.h @@ -63,7 +63,8 @@ struct SeastarRunner { template void run(Func &&func) { - auto fut = seastar::alien::submit_to(0, std::forward(func)); + auto fut = seastar::alien::submit_to(app.alien(), 0, + std::forward(func)); fut.get(); } }; diff --git a/src/test/crimson/test_alien_echo.cc b/src/test/crimson/test_alien_echo.cc index 4434b522be2d..176f92fa100e 100644 --- a/src/test/crimson/test_alien_echo.cc +++ b/src/test/crimson/test_alien_echo.cc @@ -281,7 +281,7 @@ int main(int argc, char** argv) seastar::app_template app; SeastarContext sc; auto job = sc.with_seastar([&] { - auto fut = seastar::alien::submit_to(0, [addr, role, count] { + auto fut = seastar::alien::submit_to(app.alien(), 0, [addr, role, count] { return seastar_echo(addr, role, count); }); fut.wait();