]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seatore: update seastore skeleton to link properly
authorSamuel Just <sjust@redhat.com>
Thu, 21 Jan 2021 23:14:13 +0000 (15:14 -0800)
committerSamuel Just <sjust@redhat.com>
Wed, 24 Feb 2021 02:43:39 +0000 (18:43 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/CMakeLists.txt
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore.h

index a8b046b6ba32aeaed1f0f1008a105f43b5cf90bb..c0b4865d576af1e62850b552c09a4daa2f80a650 100644 (file)
@@ -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)
index b11750abbee7f4fd201dcf60e9b74c2be585adb7..601ce429e445925c2f3a91bcd8aa161c218bc366 100644 (file)
 #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 <typename... T>
   SeastoreCollection(T&&... args) :
     FuturizedCollection(std::forward<T>(args)...) {}
 };
 
-SeaStore::SeaStore(const std::string& path)
-  : segment_manager(segment_manager::create_test_ephemeral() /* TODO */),
-    segment_cleaner(
-      std::make_unique<SegmentCleaner>(
-       SegmentCleaner::config_t::default_from_segment_manager(
-         *segment_manager))),
-    cache(std::make_unique<Cache>(*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<OnodeRef>(),
     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([]() {
index 798442c34888198e89dfc9d361b718522982439d..4e57542a14fd9c4c5700b77c4c2c8a0323de740c 100644 (file)
 #include <optional>
 #include <seastar/core/future.hh>
 
-#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<Onode>;
-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<SegmentManager> segment_manager;
-  std::unique_ptr<SegmentCleaner> segment_cleaner;
-  std::unique_ptr<Cache> cache;
-  std::unique_ptr<Journal> journal;
-  std::unique_ptr<LBAManager> lba_manager;
-  std::unique_ptr<TransactionManager> transaction_manager;
+  TransactionManager &transaction_manager;
   std::unique_ptr<OnodeManager> onode_manager;
 
-
   using write_ertr = crimson::errorator<
     crimson::ct_error::input_output_error>;
   write_ertr::future<> _do_transaction_step(