Skip to content

Commit ec5c6c5

Browse files
committed
crimson/os/seastore/transaction_manager: refine logs
Signed-off-by: Yingxin Cheng <[email protected]>
1 parent 1ee3210 commit ec5c6c5

File tree

3 files changed

+122
-90
lines changed

3 files changed

+122
-90
lines changed

src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,22 @@ class BtreeLBAMapping : public BtreeNodeMapping<laddr_t, paddr_t> {
173173
if (!parent_modified()) {
174174
return;
175175
}
176+
LOG_PREFIX(BtreeLBAMapping::maybe_fix_pos);
176177
auto &p = static_cast<LBALeafNode&>(*parent);
177178
p.maybe_fix_mapping_pos(*this);
179+
SUBDEBUGT(seastore_lba, "fixed pin {}",
180+
ctx.trans, static_cast<LBAMapping&>(*this));
178181
}
179182

180183
LBAMappingRef refresh_with_pending_parent() final {
184+
LOG_PREFIX(BtreeLBAMapping::refresh_with_pending_parent);
181185
assert(is_parent_valid() && !is_parent_viewable());
182186
auto &p = static_cast<LBALeafNode&>(*parent);
183187
auto &viewable_p = static_cast<LBALeafNode&>(
184188
*p.find_pending_version(ctx.trans, get_key()));
185-
return viewable_p.get_mapping(ctx, get_key());
189+
auto new_pin = viewable_p.get_mapping(ctx, get_key());
190+
SUBDEBUGT(seastore_lba, "new pin {}", ctx.trans, static_cast<LBAMapping&>(*new_pin));
191+
return new_pin;
186192
}
187193
protected:
188194
std::unique_ptr<BtreeNodeMapping<laddr_t, paddr_t>> _duplicate(

src/crimson/os/seastore/transaction_manager.cc

Lines changed: 46 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ TransactionManager::TransactionManager(
4848
TransactionManager::mkfs_ertr::future<> TransactionManager::mkfs()
4949
{
5050
LOG_PREFIX(TransactionManager::mkfs);
51-
INFO("enter");
51+
INFO("...");
5252
return epm->mount(
5353
).safe_then([this] {
5454
return journal->open_for_mkfs();
@@ -94,15 +94,15 @@ TransactionManager::mkfs_ertr::future<> TransactionManager::mkfs()
9494
}).safe_then([this] {
9595
return close();
9696
}).safe_then([FNAME] {
97-
INFO("completed");
97+
INFO("done");
9898
});
9999
}
100100

101101
TransactionManager::mount_ertr::future<>
102102
TransactionManager::mount()
103103
{
104104
LOG_PREFIX(TransactionManager::mount);
105-
INFO("enter");
105+
INFO("...");
106106
cache->init();
107107
return epm->mount(
108108
).safe_then([this] {
@@ -169,7 +169,7 @@ TransactionManager::mount()
169169
return epm->open_for_write();
170170
}).safe_then([FNAME, this] {
171171
epm->start_background();
172-
INFO("completed");
172+
INFO("done");
173173
}).handle_error(
174174
mount_ertr::pass_further{},
175175
crimson::ct_error::assert_all{"unhandled error"}
@@ -179,7 +179,7 @@ TransactionManager::mount()
179179
TransactionManager::close_ertr::future<>
180180
TransactionManager::close() {
181181
LOG_PREFIX(TransactionManager::close);
182-
INFO("enter");
182+
INFO("...");
183183
return epm->stop_background(
184184
).then([this] {
185185
return cache->close();
@@ -189,7 +189,7 @@ TransactionManager::close() {
189189
}).safe_then([this] {
190190
return epm->close();
191191
}).safe_then([FNAME] {
192-
INFO("completed");
192+
INFO("done");
193193
return seastar::now();
194194
});
195195
}
@@ -231,14 +231,14 @@ TransactionManager::ref_ret TransactionManager::remove(
231231
LogicalCachedExtentRef &ref)
232232
{
233233
LOG_PREFIX(TransactionManager::remove);
234-
TRACET("{}", t, *ref);
234+
DEBUGT("{} ...", t, *ref);
235235
return lba_manager->decref_extent(t, ref->get_laddr()
236236
).si_then([this, FNAME, &t, ref](auto result) {
237-
DEBUGT("extent refcount is decremented to {} -- {}",
238-
t, result.refcount, *ref);
239237
if (result.refcount == 0) {
240238
cache->retire_extent(t, ref);
241239
}
240+
DEBUGT("removed {}~0x{:x} refcount={} -- {}",
241+
t, result.addr, result.length, result.refcount, *ref);
242242
return result.refcount;
243243
});
244244
}
@@ -248,11 +248,9 @@ TransactionManager::ref_ret TransactionManager::remove(
248248
laddr_t offset)
249249
{
250250
LOG_PREFIX(TransactionManager::remove);
251-
TRACET("{}", t, offset);
251+
DEBUGT("{} ...", t, offset);
252252
return lba_manager->decref_extent(t, offset
253253
).si_then([this, FNAME, offset, &t](auto result) -> ref_ret {
254-
DEBUGT("extent refcount is decremented to {} -- {}~{}, {}",
255-
t, result.refcount, offset, result.length, result.addr);
256254
auto fut = ref_iertr::now();
257255
if (result.refcount == 0) {
258256
if (result.addr.is_paddr() &&
@@ -261,8 +259,9 @@ TransactionManager::ref_ret TransactionManager::remove(
261259
t, result.addr.get_paddr(), result.length);
262260
}
263261
}
264-
265-
return fut.si_then([result=std::move(result)] {
262+
return fut.si_then([result=std::move(result), offset, &t, FNAME] {
263+
DEBUGT("removed {}~0x{:x} refcount={} -- offset={}",
264+
t, result.addr, result.length, result.refcount, offset);
266265
return result.refcount;
267266
});
268267
});
@@ -273,17 +272,18 @@ TransactionManager::refs_ret TransactionManager::remove(
273272
std::vector<laddr_t> offsets)
274273
{
275274
LOG_PREFIX(TransactionManager::remove);
276-
DEBUG("{} offsets", offsets.size());
275+
DEBUGT("{} offsets ...", t, offsets.size());
277276
return seastar::do_with(std::move(offsets), std::vector<unsigned>(),
278-
[this, &t](auto &&offsets, auto &refcnts) {
277+
[this, &t, FNAME](auto &&offsets, auto &refcnts) {
279278
return trans_intr::do_for_each(offsets.begin(), offsets.end(),
280279
[this, &t, &refcnts](auto &laddr) {
281280
return this->remove(t, laddr
282281
).si_then([&refcnts](auto ref) {
283282
refcnts.push_back(ref);
284283
return ref_iertr::now();
285284
});
286-
}).si_then([&refcnts] {
285+
}).si_then([&refcnts, &t, FNAME] {
286+
DEBUGT("removed {} offsets", t, refcnts.size());
287287
return ref_iertr::make_ready_future<std::vector<unsigned>>(std::move(refcnts));
288288
});
289289
});
@@ -520,7 +520,6 @@ TransactionManager::rewrite_logical_extent(
520520
ERRORT("extent has been invalidated -- {}", t, *extent);
521521
ceph_abort();
522522
}
523-
TRACET("rewriting extent -- {}", t, *extent);
524523

525524
auto lextent = extent->cast<LogicalCachedExtent>();
526525
cache->retire_extent(t, extent);
@@ -534,7 +533,7 @@ TransactionManager::rewrite_logical_extent(
534533
lextent->get_rewrite_generation())->cast<LogicalCachedExtent>();
535534
nlextent->rewrite(t, *lextent, 0);
536535

537-
DEBUGT("rewriting logical extent -- {} to {}", t, *lextent, *nlextent);
536+
DEBUGT("rewriting meta -- {} to {}", t, *lextent, *nlextent);
538537

539538
#ifndef NDEBUG
540539
if (get_checksum_needed(lextent->get_paddr())) {
@@ -571,17 +570,16 @@ TransactionManager::rewrite_logical_extent(
571570
0,
572571
lextent->get_length(),
573572
extent_ref_count_t(0),
574-
[this, lextent, &t]
573+
[this, FNAME, lextent, &t]
575574
(auto &extents, auto &off, auto &left, auto &refcount) {
576575
return trans_intr::do_for_each(
577576
extents,
578-
[lextent, this, &t, &off, &left, &refcount](auto &nextent) {
579-
LOG_PREFIX(TransactionManager::rewrite_logical_extent);
577+
[lextent, this, FNAME, &t, &off, &left, &refcount](auto &nextent) {
580578
bool first_extent = (off == 0);
581579
ceph_assert(left >= nextent->get_length());
582580
auto nlextent = nextent->template cast<LogicalCachedExtent>();
583581
nlextent->rewrite(t, *lextent, off);
584-
DEBUGT("rewriting logical extent -- {} to {}", t, *lextent, *nlextent);
582+
DEBUGT("rewriting data -- {} to {}", t, *lextent, *nlextent);
585583

586584
/* This update_mapping is, strictly speaking, unnecessary for delayed_alloc
587585
* 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(
635633
{
636634
auto updated = cache->update_extent_from_transaction(t, extent);
637635
if (!updated) {
638-
DEBUGT("extent is already retired, skipping -- {}", t, *extent);
636+
DEBUGT("target={} {} already retired, skipping -- {}", t,
637+
rewrite_gen_printer_t{target_generation},
638+
sea_time_point_printer_t{modify_time},
639+
*extent);
639640
return rewrite_extent_iertr::now();
640641
}
642+
641643
extent = updated;
644+
DEBUGT("target={} {} -- {} ...", t,
645+
rewrite_gen_printer_t{target_generation},
646+
sea_time_point_printer_t{modify_time},
647+
*extent);
642648
ceph_assert(!extent->is_pending_io());
643649
}
644650

@@ -656,9 +662,9 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
656662
// FIXME: is_dirty() is true for mutation pending extents
657663
// which shouldn't do inplace rewrite because a pending transaction
658664
// may fail.
659-
DEBUGT("delta overwriting extent -- {}", t, *extent);
660665
t.add_inplace_rewrite_extent(extent);
661666
extent->set_inplace_rewrite_generation();
667+
DEBUGT("rewritten as inplace rewrite -- {}", t, *extent);
662668
return rewrite_extent_iertr::now();
663669
}
664670
extent->set_target_rewrite_generation(INIT_GENERATION);
@@ -672,22 +678,24 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
672678
}
673679

674680
if (is_root_type(extent->get_type())) {
675-
DEBUGT("rewriting root extent -- {}", t, *extent);
676681
cache->duplicate_for_write(t, extent);
682+
DEBUGT("rewritten root {}", t, *extent);
677683
return rewrite_extent_iertr::now();
678684
}
679685

686+
auto fut = rewrite_extent_iertr::now();
680687
if (extent->is_logical()) {
681688
assert(is_logical_type(extent->get_type()));
682-
return rewrite_logical_extent(t, extent->cast<LogicalCachedExtent>());
689+
fut = rewrite_logical_extent(t, extent->cast<LogicalCachedExtent>());
683690
} else if (is_backref_node(extent->get_type())) {
684-
DEBUGT("rewriting backref extent -- {}", t, *extent);
685-
return backref_manager->rewrite_extent(t, extent);
691+
fut = backref_manager->rewrite_extent(t, extent);
686692
} else {
687693
assert(is_lba_node(extent->get_type()));
688-
DEBUGT("rewriting physical extent -- {}", t, *extent);
689-
return lba_manager->rewrite_extent(t, extent);
694+
fut = lba_manager->rewrite_extent(t, extent);
690695
}
696+
return fut.si_then([FNAME, &t] {
697+
DEBUGT("rewritten", t);
698+
});
691699
}
692700

693701
TransactionManager::get_extents_if_live_ret
@@ -699,7 +707,7 @@ TransactionManager::get_extents_if_live(
699707
extent_len_t len)
700708
{
701709
LOG_PREFIX(TransactionManager::get_extents_if_live);
702-
TRACET("{} {}~{} {}", t, type, laddr, len, paddr);
710+
DEBUGT("{} {}~0x{:x} {} ...", t, type, laddr, len, paddr);
703711

704712
// This only works with segments to check if alive,
705713
// as parallel transactions may split the extent at the same time.
@@ -709,7 +717,7 @@ TransactionManager::get_extents_if_live(
709717
).si_then([=, this, &t](auto extent)
710718
-> get_extents_if_live_ret {
711719
if (extent && extent->get_length() == len) {
712-
DEBUGT("{} {}~{} {} is live in cache -- {}",
720+
DEBUGT("{} {}~0x{:x} {} is cached and alive -- {}",
713721
t, type, laddr, len, paddr, *extent);
714722
std::list<CachedExtentRef> res;
715723
res.emplace_back(std::move(extent));
@@ -763,7 +771,9 @@ TransactionManager::get_extents_if_live(
763771
list.emplace_back(std::move(ret));
764772
return seastar::now();
765773
});
766-
}).si_then([&list] {
774+
}).si_then([&list, &t, FNAME, type, laddr, len, paddr] {
775+
DEBUGT("{} {}~0x{:x} {} is alive as {} extents",
776+
t, type, laddr, len, paddr, list.size());
767777
return get_extents_if_live_ret(
768778
interruptible::ready_future_marker{},
769779
std::move(list));
@@ -784,11 +794,11 @@ TransactionManager::get_extents_if_live(
784794
).si_then([=, &t](auto ret) {
785795
std::list<CachedExtentRef> res;
786796
if (ret) {
787-
DEBUGT("{} {}~{} {} is live as physical extent -- {}",
797+
DEBUGT("{} {}~0x{:x} {} is absent and alive as physical extent -- {}",
788798
t, type, laddr, len, paddr, *ret);
789799
res.emplace_back(std::move(ret));
790800
} else {
791-
DEBUGT("{} {}~{} {} is not live as physical extent",
801+
DEBUGT("{} {}~0x{:x} {} is not alive as physical extent",
792802
t, type, laddr, len, paddr);
793803
}
794804
return get_extents_if_live_ret(

0 commit comments

Comments
 (0)