summaryrefslogtreecommitdiffstats
path: root/src/crimson/os/seastore/transaction_manager.cc
diff options
context:
space:
mode:
authorYingxin Cheng <yingxin.cheng@intel.com>2024-09-10 05:55:05 +0200
committerYingxin Cheng <yingxin.cheng@intel.com>2024-10-08 04:34:43 +0200
commitec5c6c5761ed1124d12c2e036262e6135fc99a9b (patch)
tree1ccca8bf4fbba4a2b8eb68e5384309611166b440 /src/crimson/os/seastore/transaction_manager.cc
parentcrimson/os/seastore/transaction_manager: misc cleanups (diff)
downloadceph-ec5c6c5761ed1124d12c2e036262e6135fc99a9b.tar.xz
ceph-ec5c6c5761ed1124d12c2e036262e6135fc99a9b.zip
crimson/os/seastore/transaction_manager: refine logs
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
Diffstat (limited to 'src/crimson/os/seastore/transaction_manager.cc')
-rw-r--r--src/crimson/os/seastore/transaction_manager.cc82
1 files changed, 46 insertions, 36 deletions
diff --git a/src/crimson/os/seastore/transaction_manager.cc b/src/crimson/os/seastore/transaction_manager.cc
index 0fd23ef6afb..f4e3b0858f2 100644
--- a/src/crimson/os/seastore/transaction_manager.cc
+++ b/src/crimson/os/seastore/transaction_manager.cc
@@ -48,7 +48,7 @@ TransactionManager::TransactionManager(
TransactionManager::mkfs_ertr::future<> TransactionManager::mkfs()
{
LOG_PREFIX(TransactionManager::mkfs);
- INFO("enter");
+ INFO("...");
return epm->mount(
).safe_then([this] {
return journal->open_for_mkfs();
@@ -94,7 +94,7 @@ TransactionManager::mkfs_ertr::future<> TransactionManager::mkfs()
}).safe_then([this] {
return close();
}).safe_then([FNAME] {
- INFO("completed");
+ INFO("done");
});
}
@@ -102,7 +102,7 @@ TransactionManager::mount_ertr::future<>
TransactionManager::mount()
{
LOG_PREFIX(TransactionManager::mount);
- INFO("enter");
+ INFO("...");
cache->init();
return epm->mount(
).safe_then([this] {
@@ -169,7 +169,7 @@ TransactionManager::mount()
return epm->open_for_write();
}).safe_then([FNAME, this] {
epm->start_background();
- INFO("completed");
+ INFO("done");
}).handle_error(
mount_ertr::pass_further{},
crimson::ct_error::assert_all{"unhandled error"}
@@ -179,7 +179,7 @@ TransactionManager::mount()
TransactionManager::close_ertr::future<>
TransactionManager::close() {
LOG_PREFIX(TransactionManager::close);
- INFO("enter");
+ INFO("...");
return epm->stop_background(
).then([this] {
return cache->close();
@@ -189,7 +189,7 @@ TransactionManager::close() {
}).safe_then([this] {
return epm->close();
}).safe_then([FNAME] {
- INFO("completed");
+ INFO("done");
return seastar::now();
});
}
@@ -231,14 +231,14 @@ TransactionManager::ref_ret TransactionManager::remove(
LogicalCachedExtentRef &ref)
{
LOG_PREFIX(TransactionManager::remove);
- TRACET("{}", t, *ref);
+ DEBUGT("{} ...", t, *ref);
return lba_manager->decref_extent(t, ref->get_laddr()
).si_then([this, FNAME, &t, ref](auto result) {
- DEBUGT("extent refcount is decremented to {} -- {}",
- t, result.refcount, *ref);
if (result.refcount == 0) {
cache->retire_extent(t, ref);
}
+ DEBUGT("removed {}~0x{:x} refcount={} -- {}",
+ t, result.addr, result.length, result.refcount, *ref);
return result.refcount;
});
}
@@ -248,11 +248,9 @@ TransactionManager::ref_ret TransactionManager::remove(
laddr_t offset)
{
LOG_PREFIX(TransactionManager::remove);
- TRACET("{}", t, offset);
+ DEBUGT("{} ...", t, offset);
return lba_manager->decref_extent(t, offset
).si_then([this, FNAME, offset, &t](auto result) -> ref_ret {
- DEBUGT("extent refcount is decremented to {} -- {}~{}, {}",
- t, result.refcount, offset, result.length, result.addr);
auto fut = ref_iertr::now();
if (result.refcount == 0) {
if (result.addr.is_paddr() &&
@@ -261,8 +259,9 @@ TransactionManager::ref_ret TransactionManager::remove(
t, result.addr.get_paddr(), result.length);
}
}
-
- return fut.si_then([result=std::move(result)] {
+ return fut.si_then([result=std::move(result), offset, &t, FNAME] {
+ DEBUGT("removed {}~0x{:x} refcount={} -- offset={}",
+ t, result.addr, result.length, result.refcount, offset);
return result.refcount;
});
});
@@ -273,9 +272,9 @@ TransactionManager::refs_ret TransactionManager::remove(
std::vector<laddr_t> offsets)
{
LOG_PREFIX(TransactionManager::remove);
- DEBUG("{} offsets", offsets.size());
+ DEBUGT("{} offsets ...", t, offsets.size());
return seastar::do_with(std::move(offsets), std::vector<unsigned>(),
- [this, &t](auto &&offsets, auto &refcnts) {
+ [this, &t, FNAME](auto &&offsets, auto &refcnts) {
return trans_intr::do_for_each(offsets.begin(), offsets.end(),
[this, &t, &refcnts](auto &laddr) {
return this->remove(t, laddr
@@ -283,7 +282,8 @@ TransactionManager::refs_ret TransactionManager::remove(
refcnts.push_back(ref);
return ref_iertr::now();
});
- }).si_then([&refcnts] {
+ }).si_then([&refcnts, &t, FNAME] {
+ DEBUGT("removed {} offsets", t, refcnts.size());
return ref_iertr::make_ready_future<std::vector<unsigned>>(std::move(refcnts));
});
});
@@ -520,7 +520,6 @@ TransactionManager::rewrite_logical_extent(
ERRORT("extent has been invalidated -- {}", t, *extent);
ceph_abort();
}
- TRACET("rewriting extent -- {}", t, *extent);
auto lextent = extent->cast<LogicalCachedExtent>();
cache->retire_extent(t, extent);
@@ -534,7 +533,7 @@ TransactionManager::rewrite_logical_extent(
lextent->get_rewrite_generation())->cast<LogicalCachedExtent>();
nlextent->rewrite(t, *lextent, 0);
- DEBUGT("rewriting logical extent -- {} to {}", t, *lextent, *nlextent);
+ DEBUGT("rewriting meta -- {} to {}", t, *lextent, *nlextent);
#ifndef NDEBUG
if (get_checksum_needed(lextent->get_paddr())) {
@@ -571,17 +570,16 @@ TransactionManager::rewrite_logical_extent(
0,
lextent->get_length(),
extent_ref_count_t(0),
- [this, lextent, &t]
+ [this, FNAME, lextent, &t]
(auto &extents, auto &off, auto &left, auto &refcount) {
return trans_intr::do_for_each(
extents,
- [lextent, this, &t, &off, &left, &refcount](auto &nextent) {
- LOG_PREFIX(TransactionManager::rewrite_logical_extent);
+ [lextent, this, FNAME, &t, &off, &left, &refcount](auto &nextent) {
bool first_extent = (off == 0);
ceph_assert(left >= nextent->get_length());
auto nlextent = nextent->template cast<LogicalCachedExtent>();
nlextent->rewrite(t, *lextent, off);
- DEBUGT("rewriting logical extent -- {} to {}", t, *lextent, *nlextent);
+ DEBUGT("rewriting data -- {} to {}", t, *lextent, *nlextent);
/* This update_mapping is, strictly speaking, unnecessary for delayed_alloc
* extents since we're going to do it again once we either do the ool write
@@ -635,10 +633,18 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
{
auto updated = cache->update_extent_from_transaction(t, extent);
if (!updated) {
- DEBUGT("extent is already retired, skipping -- {}", t, *extent);
+ DEBUGT("target={} {} already retired, skipping -- {}", t,
+ rewrite_gen_printer_t{target_generation},
+ sea_time_point_printer_t{modify_time},
+ *extent);
return rewrite_extent_iertr::now();
}
+
extent = updated;
+ DEBUGT("target={} {} -- {} ...", t,
+ rewrite_gen_printer_t{target_generation},
+ sea_time_point_printer_t{modify_time},
+ *extent);
ceph_assert(!extent->is_pending_io());
}
@@ -656,9 +662,9 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
// FIXME: is_dirty() is true for mutation pending extents
// which shouldn't do inplace rewrite because a pending transaction
// may fail.
- DEBUGT("delta overwriting extent -- {}", t, *extent);
t.add_inplace_rewrite_extent(extent);
extent->set_inplace_rewrite_generation();
+ DEBUGT("rewritten as inplace rewrite -- {}", t, *extent);
return rewrite_extent_iertr::now();
}
extent->set_target_rewrite_generation(INIT_GENERATION);
@@ -672,22 +678,24 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
}
if (is_root_type(extent->get_type())) {
- DEBUGT("rewriting root extent -- {}", t, *extent);
cache->duplicate_for_write(t, extent);
+ DEBUGT("rewritten root {}", t, *extent);
return rewrite_extent_iertr::now();
}
+ auto fut = rewrite_extent_iertr::now();
if (extent->is_logical()) {
assert(is_logical_type(extent->get_type()));
- return rewrite_logical_extent(t, extent->cast<LogicalCachedExtent>());
+ fut = rewrite_logical_extent(t, extent->cast<LogicalCachedExtent>());
} else if (is_backref_node(extent->get_type())) {
- DEBUGT("rewriting backref extent -- {}", t, *extent);
- return backref_manager->rewrite_extent(t, extent);
+ fut = backref_manager->rewrite_extent(t, extent);
} else {
assert(is_lba_node(extent->get_type()));
- DEBUGT("rewriting physical extent -- {}", t, *extent);
- return lba_manager->rewrite_extent(t, extent);
+ fut = lba_manager->rewrite_extent(t, extent);
}
+ return fut.si_then([FNAME, &t] {
+ DEBUGT("rewritten", t);
+ });
}
TransactionManager::get_extents_if_live_ret
@@ -699,7 +707,7 @@ TransactionManager::get_extents_if_live(
extent_len_t len)
{
LOG_PREFIX(TransactionManager::get_extents_if_live);
- TRACET("{} {}~{} {}", t, type, laddr, len, paddr);
+ DEBUGT("{} {}~0x{:x} {} ...", t, type, laddr, len, paddr);
// This only works with segments to check if alive,
// as parallel transactions may split the extent at the same time.
@@ -709,7 +717,7 @@ TransactionManager::get_extents_if_live(
).si_then([=, this, &t](auto extent)
-> get_extents_if_live_ret {
if (extent && extent->get_length() == len) {
- DEBUGT("{} {}~{} {} is live in cache -- {}",
+ DEBUGT("{} {}~0x{:x} {} is cached and alive -- {}",
t, type, laddr, len, paddr, *extent);
std::list<CachedExtentRef> res;
res.emplace_back(std::move(extent));
@@ -763,7 +771,9 @@ TransactionManager::get_extents_if_live(
list.emplace_back(std::move(ret));
return seastar::now();
});
- }).si_then([&list] {
+ }).si_then([&list, &t, FNAME, type, laddr, len, paddr] {
+ DEBUGT("{} {}~0x{:x} {} is alive as {} extents",
+ t, type, laddr, len, paddr, list.size());
return get_extents_if_live_ret(
interruptible::ready_future_marker{},
std::move(list));
@@ -784,11 +794,11 @@ TransactionManager::get_extents_if_live(
).si_then([=, &t](auto ret) {
std::list<CachedExtentRef> res;
if (ret) {
- DEBUGT("{} {}~{} {} is live as physical extent -- {}",
+ DEBUGT("{} {}~0x{:x} {} is absent and alive as physical extent -- {}",
t, type, laddr, len, paddr, *ret);
res.emplace_back(std::move(ret));
} else {
- DEBUGT("{} {}~{} {} is not live as physical extent",
+ DEBUGT("{} {}~0x{:x} {} is not alive as physical extent",
t, type, laddr, len, paddr);
}
return get_extents_if_live_ret(