From: Samuel Just Date: Thu, 21 Jan 2021 23:14:13 +0000 (-0800) Subject: crimson/os/seatore: update seastore skeleton to link properly X-Git-Tag: v17.1.0~2805^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bb5474e5a73e1804225232901021d42b0a7b94be;p=ceph.git crimson/os/seatore: update seastore skeleton to link properly Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/CMakeLists.txt b/src/crimson/os/seastore/CMakeLists.txt index a8b046b6ba32..c0b4865d576a 100644 --- a/src/crimson/os/seastore/CMakeLists.txt +++ b/src/crimson/os/seastore/CMakeLists.txt @@ -37,6 +37,7 @@ add_library(crimson-seastore STATIC collection_manager/collection_flat_node.cc seastore.cc ../../../test/crimson/seastore/test_block.cc + ${PROJECT_SOURCE_DIR}/src/os/Transaction.cc ) target_link_libraries(crimson-seastore crimson) diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index b11750abbee7..601ce429e445 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -11,14 +11,11 @@ #include "os/Transaction.h" #include "crimson/common/buffer_io.h" -#include "crimson/common/config_proxy.h" #include "crimson/os/futurized_collection.h" #include "crimson/os/seastore/segment_manager/ephemeral.h" -#include "crimson/os/seastore/transaction_manager.h" #include "crimson/os/seastore/onode_manager.h" -#include "crimson/os/seastore/cache.h" namespace { seastar::logger& logger() { @@ -30,37 +27,14 @@ using crimson::common::local_conf; namespace crimson::os::seastore { +SeaStore::~SeaStore() {} + struct SeastoreCollection final : public FuturizedCollection { template SeastoreCollection(T&&... args) : FuturizedCollection(std::forward(args)...) {} }; -SeaStore::SeaStore(const std::string& path) - : segment_manager(segment_manager::create_test_ephemeral() /* TODO */), - segment_cleaner( - std::make_unique( - SegmentCleaner::config_t::default_from_segment_manager( - *segment_manager))), - cache(std::make_unique(*segment_manager)), - journal(new Journal(*segment_manager)), - lba_manager( - lba_manager::create_lba_manager(*segment_manager, *cache)), - transaction_manager( - new TransactionManager( - *segment_manager, - *segment_cleaner, - *journal, - *cache, - *lba_manager)), - onode_manager(onode_manager::create_ephemeral()) -{ - journal->set_segment_provider(&*segment_cleaner); - segment_cleaner->set_extent_callback(&*transaction_manager); -} - -SeaStore::~SeaStore() = default; - seastar::future<> SeaStore::stop() { return seastar::now(); @@ -229,7 +203,7 @@ seastar::future<> SeaStore::do_transaction( { return seastar::do_with( _t.begin(), - transaction_manager->create_transaction(), + transaction_manager.create_transaction(), std::vector(), std::move(_t), std::move(_ch), @@ -243,7 +217,7 @@ seastar::future<> SeaStore::do_transaction( [this, &iter, &trans, &onodes, &t, &ch]() { return _do_transaction_step(trans, ch, onodes, iter).safe_then( [this, &trans] { - return transaction_manager->submit_transaction(std::move(trans)); + return transaction_manager.submit_transaction(std::move(trans)); }).handle_error( // TODO: add errorator::do_until crimson::ct_error::eagain::handle([]() { diff --git a/src/crimson/os/seastore/seastore.h b/src/crimson/os/seastore/seastore.h index 798442c34888..4e57542a14fd 100644 --- a/src/crimson/os/seastore/seastore.h +++ b/src/crimson/os/seastore/seastore.h @@ -12,34 +12,30 @@ #include #include -#include "osd/osd_types.h" #include "include/uuid.h" #include "os/Transaction.h" -#include "crimson/os/seastore/segment_cleaner.h" #include "crimson/os/futurized_store.h" -#include "transaction.h" +#include "crimson/os/seastore/transaction.h" +#include "crimson/os/seastore/onode_manager.h" namespace crimson::os::seastore { class SeastoreCollection; -class SegmentManager; -class OnodeManager; class Onode; using OnodeRef = boost::intrusive_ptr; -class Journal; -class LBAManager; class TransactionManager; -class Cache; class SeaStore final : public FuturizedStore { uuid_d osd_fsid; public: - SeaStore(const std::string& path); - ~SeaStore() final; + SeaStore(TransactionManager &tm) : + transaction_manager(tm) {} + ~SeaStore(); + seastar::future<> stop() final; seastar::future<> mount() final; seastar::future<> umount() final; @@ -119,15 +115,9 @@ public: } private: - std::unique_ptr segment_manager; - std::unique_ptr segment_cleaner; - std::unique_ptr cache; - std::unique_ptr journal; - std::unique_ptr lba_manager; - std::unique_ptr transaction_manager; + TransactionManager &transaction_manager; std::unique_ptr onode_manager; - using write_ertr = crimson::errorator< crimson::ct_error::input_output_error>; write_ertr::future<> _do_transaction_step(