SUBSYS(seastore_tm, 0, 5) // logs below seastore tm
SUBSYS(seastore_t, 0, 5)
SUBSYS(seastore_cleaner, 0, 5)
+SUBSYS(seastore_epm, 0, 5)
SUBSYS(seastore_lba, 0, 5)
SUBSYS(seastore_fixedkv_tree, 0, 5)
SUBSYS(seastore_cache, 0, 5)
#include "crimson/os/seastore/extent_placement_manager.h"
#include "crimson/common/config_proxy.h"
+#include "crimson/os/seastore/logging.h"
-SET_SUBSYS(seastore_journal);
+SET_SUBSYS(seastore_epm);
namespace crimson::os::seastore {
}
}
+ExtentPlacementManager::open_ertr::future<>
+ExtentPlacementManager::open_for_write()
+{
+ LOG_PREFIX(ExtentPlacementManager::open_for_write);
+ INFO("started with {} devices", num_devices);
+ ceph_assert(primary_device != nullptr);
+ return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
+ return writer->open();
+ }).safe_then([this] {
+ return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
+ return writer->open();
+ });
+ });
+}
+
+ExtentPlacementManager::alloc_paddr_iertr::future<>
+ExtentPlacementManager::delayed_alloc_or_ool_write(
+ Transaction &t,
+ const std::list<LogicalCachedExtentRef> &delayed_extents)
+{
+ LOG_PREFIX(ExtentPlacementManager::delayed_alloc_or_ool_write);
+ DEBUGT("start with {} delayed extents",
+ t, delayed_extents.size());
+ assert(writer_refs.size());
+ return seastar::do_with(
+ std::map<ExtentOolWriter*, std::list<LogicalCachedExtentRef>>(),
+ [this, &t, &delayed_extents](auto& alloc_map) {
+ for (auto& extent : delayed_extents) {
+ // For now, just do ool allocation for any delayed extent
+ auto writer_ptr = get_writer(
+ extent->get_user_hint(),
+ get_extent_category(extent->get_type()),
+ extent->get_reclaim_generation());
+ alloc_map[writer_ptr].emplace_back(extent);
+ }
+ return trans_intr::do_for_each(alloc_map, [&t](auto& p) {
+ auto writer = p.first;
+ auto& extents = p.second;
+ return writer->alloc_write_ool_extents(t, extents);
+ });
+ });
+}
+
+ExtentPlacementManager::close_ertr::future<>
+ExtentPlacementManager::close()
+{
+ LOG_PREFIX(ExtentPlacementManager::close);
+ INFO("started");
+ return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
+ return writer->close();
+ }).safe_then([this] {
+ return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
+ return writer->close();
+ });
+ });
+}
+
void ExtentPlacementManager::BackgroundProcess::log_state(const char *caller) const
{
LOG_PREFIX(BackgroundProcess::log_state);
#include "crimson/os/seastore/async_cleaner.h"
#include "crimson/os/seastore/cached_extent.h"
#include "crimson/os/seastore/journal/segment_allocator.h"
-#include "crimson/os/seastore/logging.h"
#include "crimson/os/seastore/transaction.h"
namespace crimson::os::seastore {
}
using open_ertr = ExtentOolWriter::open_ertr;
- open_ertr::future<> open_for_write() {
- LOG_PREFIX(ExtentPlacementManager::open);
- SUBINFO(seastore_journal, "started with {} devices", num_devices);
- ceph_assert(primary_device != nullptr);
- return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
- return writer->open();
- }).safe_then([this] {
- return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
- return writer->open();
- });
- });
- }
+ open_ertr::future<> open_for_write();
void start_scan_space() {
return background_process.start_scan_space();
using alloc_paddr_iertr = ExtentOolWriter::alloc_write_iertr;
alloc_paddr_iertr::future<> delayed_alloc_or_ool_write(
Transaction& t,
- const std::list<LogicalCachedExtentRef>& delayed_extents) {
- LOG_PREFIX(ExtentPlacementManager::delayed_alloc_or_ool_write);
- SUBDEBUGT(seastore_journal, "start with {} delayed extents",
- t, delayed_extents.size());
- assert(writer_refs.size());
- return seastar::do_with(
- std::map<ExtentOolWriter*, std::list<LogicalCachedExtentRef>>(),
- [this, &t, &delayed_extents](auto& alloc_map) {
- for (auto& extent : delayed_extents) {
- // For now, just do ool allocation for any delayed extent
- auto writer_ptr = get_writer(
- extent->get_user_hint(),
- get_extent_category(extent->get_type()),
- extent->get_reclaim_generation());
- alloc_map[writer_ptr].emplace_back(extent);
- }
- return trans_intr::do_for_each(alloc_map, [&t](auto& p) {
- auto writer = p.first;
- auto& extents = p.second;
- return writer->alloc_write_ool_extents(t, extents);
- });
- });
- }
+ const std::list<LogicalCachedExtentRef>& delayed_extents);
seastar::future<> stop_background() {
return background_process.stop_background();
}
using close_ertr = ExtentOolWriter::close_ertr;
- close_ertr::future<> close() {
- LOG_PREFIX(ExtentPlacementManager::close);
- SUBINFO(seastore_journal, "started");
- return crimson::do_for_each(data_writers_by_gen, [](auto &writer) {
- return writer->close();
- }).safe_then([this] {
- return crimson::do_for_each(md_writers_by_gen, [](auto &writer) {
- return writer->close();
- });
- });
- }
+ close_ertr::future<> close();
using read_ertr = Device::read_ertr;
read_ertr::future<> read(