#include "futurized_store.h"
#include "cyanstore/cyan_store.h"
#include "alienstore/alien_store.h"
+#include "seastore/seastore.h"
namespace crimson::os {
return std::make_unique<crimson::os::CyanStore>(data);
} else if (type == "bluestore") {
return std::make_unique<crimson::os::AlienStore>(data, values);
+ } else if (type == "seastore") {
+ return crimson::os::seastore::make_seastore(data, values);
} else {
ceph_abort_msgf("unsupported objectstore type: %s", type.c_str());
return {};
#include "crimson/os/futurized_collection.h"
+#include "crimson/os/seastore/segment_cleaner.h"
+#include "crimson/os/seastore/segment_manager/block.h"
+#include "crimson/os/seastore/collection_manager/flat_collection_manager.h"
+#include "crimson/os/seastore/onode_manager/staged-fltree/fltree_onode_manager.h"
#include "crimson/os/seastore/omap_manager/btree/btree_omap_manager.h"
#include "crimson/os/seastore/segment_manager/ephemeral.h"
#include "crimson/os/seastore/onode_manager.h"
return segment_manager->get_meta().seastore_id;
}
+std::unique_ptr<SeaStore> make_seastore(
+ const std::string &device,
+ const ConfigValues &config)
+{
+ auto sm = std::make_unique<
+ segment_manager::block::BlockSegmentManager
+ >(device + "/block");
+
+ auto segment_cleaner = std::make_unique<SegmentCleaner>(
+ SegmentCleaner::config_t::get_default(),
+ false /* detailed */);
+
+ auto journal = std::make_unique<Journal>(*sm);
+ auto cache = std::make_unique<Cache>(*sm);
+ auto lba_manager = lba_manager::create_lba_manager(*sm, *cache);
+
+ journal->set_segment_provider(&*segment_cleaner);
+
+ auto tm = std::make_unique<TransactionManager>(
+ *sm,
+ std::move(segment_cleaner),
+ std::move(journal),
+ std::move(cache),
+ std::move(lba_manager));
+
+ auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
+ return std::make_unique<SeaStore>(
+ std::move(sm),
+ std::move(tm),
+ std::move(cm),
+ std::make_unique<crimson::os::seastore::onode::FLTreeOnodeManager>(*tm));
+}
+
}
#include "os/Transaction.h"
#include "crimson/os/futurized_collection.h"
#include "crimson/os/futurized_store.h"
+
#include "crimson/os/seastore/transaction.h"
#include "crimson/os/seastore/onode_manager.h"
#include "crimson/os/seastore/omap_manager.h"
boost::intrusive_ptr<SeastoreCollection> _get_collection(const coll_t& cid);
};
+std::unique_ptr<SeaStore> make_seastore(
+ const std::string &device,
+ const ConfigValues &config);
}