auto ssize = segment_manager.get_segment_size();
auto nsegments = segment_manager.get_num_segments();
auto sm_size = segment_manager.get_available_size();
- INFO("adding segment manager {}, size={}, ssize={}, segments={}",
+ INFO("adding segment manager {}, size=0x{:x}, segment size=0x{:x}, segments={}",
device_id_printer_t{d_id}, sm_size, ssize, nsegments);
ceph_assert(ssize > 0);
ceph_assert(nsegments > 0);
<< ", closed=" << infos.get_num_closed()
<< ", type_journal=" << infos.get_num_type_journal()
<< ", type_ool=" << infos.get_num_type_ool()
- << ", total=" << infos.get_total_bytes() << "B"
- << ", available=" << infos.get_available_bytes() << "B"
- << ", unavailable=" << infos.get_unavailable_bytes() << "B"
+ << ", total=0x" << std::hex << infos.get_total_bytes() << "B"
+ << ", available=0x" << infos.get_available_bytes() << "B"
+ << ", unavailable=0x" << infos.get_unavailable_bytes() << "B" << std::dec
<< ", available_ratio=" << infos.get_available_ratio()
<< ", submitted_head=" << infos.get_submitted_journal_head()
<< ", time_bound=" << sea_time_point_printer_t{infos.get_time_bound()}
for (auto i = b; i < e; ++i) {
if (bitmap[i]) {
if (!error) {
- ERROR("found allocated in {}, {} ~ {}", segment, offset, len);
+ ERROR("found allocated in {}, 0x{:x}~0x{:x}", segment, offset, len);
error = true;
}
- DEBUG("block {} allocated", i * block_size);
+ DEBUG("block 0x{:x}B allocated", i * block_size);
}
bitmap[i] = true;
}
for (auto i = b; i < e; ++i) {
if (!bitmap[i]) {
if (!error) {
- ERROR("found unallocated in {}, {} ~ {}", segment, offset, len);
+ ERROR("found unallocated in {}, 0x{:x}~0x{:x}", segment, offset, len);
error = true;
}
- DEBUG("block {} unallocated", i * block_size);
+ DEBUG("block 0x{:x}B unallocated", i * block_size);
}
bitmap[i] = false;
}
INFO("dump start");
for (unsigned i = 0; i < bitmap.size(); ++i) {
if (bitmap[i]) {
- LOCAL_LOGGER.info(" {} still live", i * block_size);
+ LOCAL_LOGGER.info(" 0x{:x}B still live", i * block_size);
}
}
}
void SpaceTrackerSimple::dump_usage(segment_id_t id) const
{
LOG_PREFIX(SpaceTrackerSimple::dump_usage);
- INFO("id: {}, live_bytes: {}",
+ INFO("id: {}, live_bytes: 0x{:x}",
id, live_bytes_by_segment[id].live_bytes);
}
[this, &extents, &t](auto &ent)
{
LOG_PREFIX(SegmentCleaner::do_reclaim_space);
- TRACET("getting extent of type {} at {}~{}",
+ TRACET("getting extent of type {} at {}~0x{:x}",
t,
ent.type,
ent.paddr,
background_callback->maybe_wake_background();
assert(ret > 0);
- DEBUG("segment {} new len: {}~{}, live_bytes: {}",
+ DEBUG("segment {} new len: {}~0x{:x}, live_bytes: 0x{:x}",
seg_addr.get_segment_id(),
addr,
len,
stats.used_bytes -= len;
auto& seg_addr = addr.as_seg_paddr();
- DEBUG("segment {} free len: {}~{}",
+ DEBUG("segment {} free len: {}~0x{:x}",
seg_addr.get_segment_id(), addr, len);
auto old_usage = calc_utilization(seg_addr.get_segment_id());
[[maybe_unused]] auto ret = space_tracker->release(
adjust_segment_util(old_usage, new_usage);
background_callback->maybe_wake_blocked_io();
assert(ret >= 0);
- DEBUG("segment {} free len: {}~{}, live_bytes: {}",
+ DEBUG("segment {} free len: {}~0x{:x}, live_bytes: 0x{:x}",
seg_addr.get_segment_id(),
addr,
len,
<< ", reclaim_ratio=" << get_reclaim_ratio()
<< ", alive_ratio=" << get_alive_ratio();
if (is_detailed) {
- os << ", unavailable_unreclaimable="
+ os << ", unavailable_unreclaimable=0x" << std::hex
<< get_unavailable_unreclaimable_bytes() << "B"
- << ", unavailable_reclaimble="
+ << ", unavailable_reclaimble=0x"
<< get_unavailable_reclaimable_bytes() << "B"
- << ", alive=" << stats.used_bytes << "B"
+ << ", alive=0x" << stats.used_bytes << "B" << std::dec
<< ", " << segments;
}
os << ")";
for (auto rbm : rbms) {
if (addr.get_device_id() == rbm->get_device_id()) {
if (rbm->get_start() <= addr) {
- DEBUG("allocate addr: {} len: {}", addr, len);
+ DEBUG("allocate addr: {} len: 0x{:x}", addr, len);
stats.used_bytes += len;
rbm->mark_space_used(addr, len);
}
for (auto rbm : rbms) {
if (addr.get_device_id() == rbm->get_device_id()) {
if (rbm->get_start() <= addr) {
- DEBUG("free addr: {} len: {}", addr, len);
+ DEBUG("free addr: {} len: 0x{:x}", addr, len);
ceph_assert(stats.used_bytes >= len);
stats.used_bytes -= len;
rbm->mark_space_free(addr, len);
std::ostream &operator<<(std::ostream &out, const backref_entry_t &ent) {
return out << "backref_entry_t{"
- << ent.paddr << "~" << ent.len << ", "
+ << ent.paddr << "~0x" << std::hex << ent.len << std::dec << ", "
<< "laddr: " << ent.laddr << ", "
<< "type: " << ent.type << ", "
<< "seq: " << ent.seq << ", "
"seastore_cache_lru_size"))
{
LOG_PREFIX(Cache::Cache);
- INFO("created, lru_capacity={}B", lru.get_capacity_bytes());
+ INFO("created, lru_capacity=0x{:x}B", lru.get_capacity_bytes());
register_metrics();
segment_providers_by_device_id.resize(DEVICE_ID_MAX, nullptr);
}
{
LOG_PREFIX(Cache::init_cached_extents);
SUBINFOT(seastore_cache,
- "start with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}",
+ "start with {}(0x{:x}B) extents, {} dirty, dirty_from={}, alloc_from={}",
t,
extents_index.size(),
extents_index.get_bytes(),
}
).si_then([this, FNAME, &t] {
SUBINFOT(seastore_cache,
- "finish with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}",
+ "finish with {}(0x{:x}B) extents, {} dirty, dirty_from={}, alloc_from={}",
t,
extents_index.size(),
extents_index.get_bytes(),
std::ostream& operator<<(std::ostream& out, const device_spec_t& ds)
{
return out << "device_spec("
- << "magic=" << ds.magic
+ << "magic=0x" << std::hex << ds.magic << std::dec
<< ", dtype=" << ds.dtype
<< ", " << device_id_printer_t{ds.id}
<< ")";
w_info.bp = bp;
writes.push_back(w_info);
}
- TRACE("current extent: base off {} len {},\
- maybe-merged current extent: base off {} len {}",
+ TRACE("current extent: {}~0x{:x},\
+ maybe-merged current extent: {}~0x{:x}",
paddr, ex->get_length(), writes.back().offset, writes.back().bp.length());
}
cleaner_usage_t cleaner_usage;
friend std::ostream &operator<<(std::ostream &out, const io_usage_t &usage) {
return out << "io_usage_t("
- << "inline_usage=" << usage.inline_usage
- << ", main_cleaner_usage=" << usage.cleaner_usage.main_usage
- << ", cold_cleaner_usage=" << usage.cleaner_usage.cold_ool_usage
+ << "inline_usage=0x" << std::hex << usage.inline_usage
+ << ", main_cleaner_usage=0x" << usage.cleaner_usage.main_usage
+ << ", cold_cleaner_usage=0x" << usage.cleaner_usage.cold_ool_usage << std::dec
<< ")";
}
};
: ext.start + (ext.len - left);
allocs.emplace_back(alloc_result_t{start, std::move(bp), gen});
SUBDEBUGT(seastore_epm,
- "allocated {} {}B extent at {}, hint={}, gen={}",
+ "allocated {} 0x{:x}B extent at {}, hint={}, gen={}",
t, type, len, start, hint, gen);
left -= len;
}
if (region.is_data()) {
assert_aligned(region.len);
ceph_assert(region.len == region.bl->length());
- DEBUGT("allocating extent: {}~{}",
+ DEBUGT("allocating extent: {}~0x{:x}",
ctx.t,
region.addr,
region.len);
ObjectDataHandler::write_iertr::pass_further{}
);
} else if (region.is_zero()) {
- DEBUGT("reserving: {}~{}",
+ DEBUGT("reserving: {}~0x{:x}",
ctx.t,
region.addr,
region.len);
<< ", aligned_data_end=" << overwrite_plan.aligned_data_end
<< ", left_operation=" << overwrite_plan.left_operation
<< ", right_operation=" << overwrite_plan.right_operation
- << ", block_size=" << overwrite_plan.block_size
+ << ", block_size=0x" << std::hex << overwrite_plan.block_size << std::dec
<< ", is_left_fresh=" << overwrite_plan.is_left_fresh
<< ", is_right_fresh=" << overwrite_plan.is_right_fresh
<< ")";
ceph_assert(size <= max_object_size);
if (!object_data.is_null()) {
ceph_assert(object_data.get_reserved_data_len() == max_object_size);
- DEBUGT("reservation present: {}~{}",
+ DEBUGT("reservation present: {}~0x{:x}",
ctx.t,
object_data.get_reserved_data_base(),
object_data.get_reserved_data_len());
return write_iertr::now();
} else {
- DEBUGT("reserving: {}~{}",
+ DEBUGT("reserving: {}~0x{:x}",
ctx.t,
ctx.onode.get_data_hint(),
max_object_size);
LOG_PREFIX(ObjectDataHandler::trim_data_reservation);
auto data_base = object_data.get_reserved_data_base();
auto data_len = object_data.get_reserved_data_len();
- DEBUGT("object_data: {}~{}", ctx.t, data_base, data_len);
+ DEBUGT("object_data: {}~0x{:x}", ctx.t, data_base, data_len);
laddr_t aligned_start = (data_base + size).get_aligned_laddr();
loffset_t aligned_length =
data_len - aligned_start.get_byte_distance<loffset_t>(data_base);
if (append_len == 0) {
LOG_PREFIX(ObjectDataHandler::trim_data_reservation);
TRACET("First pin overlaps the boundary and has aligned data"
- "create existing at addr:{}, len:{}",
+ "create existing at addr:{}, len:0x{:x}",
ctx.t, pin.get_key(), size - pin_offset);
to_write.push_back(extent_to_write_t::create_existing(
pin.duplicate(),
write_bl.append_zero(append_len);
LOG_PREFIX(ObjectDataHandler::trim_data_reservation);
TRACET("First pin overlaps the boundary and has unaligned data"
- "create data at addr:{}, len:{}",
+ "create data at addr:{}, len:0x{:x}",
ctx.t, pin.get_key(), write_bl.length());
to_write.push_back(extent_to_write_t::create_data(
pin.get_key(),
(auto &pins, auto &to_write) mutable
{
LOG_PREFIX(ObjectDataHandler::overwrite);
- DEBUGT("overwrite: {}~{}",
+ DEBUGT("overwrite: 0x{:x}~0x{:x}",
ctx.t,
offset,
len);
ctx,
[this, ctx, offset, len](auto &object_data) {
LOG_PREFIX(ObjectDataHandler::zero);
- DEBUGT("zero to {}~{}, object_data: {}~{}, is_null {}",
+ DEBUGT("zero to 0x{:x}~0x{:x}, object_data: {}~0x{:x}, is_null {}",
ctx.t,
offset,
len,
ctx,
[this, ctx, offset, &bl](auto &object_data) {
LOG_PREFIX(ObjectDataHandler::write);
- DEBUGT("writing to {}~{}, object_data: {}~{}, is_null {}",
+ DEBUGT("writing to 0x{:x}~0x{:x}, object_data: {}~0x{:x}, is_null {}",
ctx.t,
offset,
bl.length(),
ctx,
[ctx, obj_offset, len, &ret](const auto &object_data) {
LOG_PREFIX(ObjectDataHandler::read);
- DEBUGT("reading {}~{}",
+ DEBUGT("reading {}~0x{:x}",
ctx.t,
object_data.get_reserved_data_base(),
object_data.get_reserved_data_len());
l_current_end.get_byte_distance<extent_len_t>(l_current);
if (pin->get_val().is_zero()) {
- DEBUGT("got {}~{} from zero-pin {}~{}",
+ DEBUGT("got {}~0x{:x} from zero-pin {}~0x{:x}",
ctx.t,
l_current,
read_len,
l_current_end_aligned.get_byte_distance<extent_len_t>(pin_start);
read_len_aligned -= read_start_aligned;
extent_len_t unalign_start_offset = read_start - read_start_aligned;
- DEBUGT("reading {}~{} from pin {}~{}",
+ DEBUGT("reading {}~0x{:x} from pin {}~0x{:x}",
ctx.t,
l_current,
read_len,
[ctx, obj_offset, len, &ret](const auto &object_data) {
LOG_PREFIX(ObjectDataHandler::fiemap);
DEBUGT(
- "{}~{}, reservation {}~{}",
+ "0x{:x}~0x{:x}, reservation {}~0x{:x}",
ctx.t,
obj_offset,
len,
ctx,
[this, ctx, offset](auto &object_data) {
LOG_PREFIX(ObjectDataHandler::truncate);
- DEBUGT("truncating {}~{} offset: {}",
+ DEBUGT("truncating {}~0x{:x} offset: 0x{:x}",
ctx.t,
object_data.get_reserved_data_base(),
object_data.get_reserved_data_len(),
laddr_t data_base)
{
LOG_PREFIX(ObjectDataHandler::clone_extents);
- TRACET(" object_data: {}~{}, data_base: {}",
+ TRACET("object_data: {}~0x{:x}, data_base: 0x{:x}",
ctx.t,
object_data.get_reserved_data_base(),
object_data.get_reserved_data_len(),
auto len = object_data.get_reserved_data_len();
object_data.clear();
LOG_PREFIX(ObjectDataHandler::clone);
- DEBUGT("cloned obj reserve_data_base: {}, len {}",
+ DEBUGT("cloned obj reserve_data_base: {}, len 0x{:x}",
ctx.t,
d_object_data.get_reserved_data_base(),
d_object_data.get_reserved_data_len());
d_object_data.get_reserved_data_len()
).si_then([&d_object_data, ctx, &object_data, base, len, this] {
LOG_PREFIX("ObjectDataHandler::clone");
- DEBUGT("head obj reserve_data_base: {}, len {}",
+ DEBUGT("head obj reserve_data_base: {}, len 0x{:x}",
ctx.t,
object_data.get_reserved_data_base(),
object_data.get_reserved_data_len());
auto &layout = rhs.get_layout();
return out << "Onode("
<< "hobj=" << rhs.hobj << ", "
- << "size=" << static_cast<uint32_t>(layout.size)
+ << "size=0x" << std::hex << static_cast<uint32_t>(layout.size) << std::dec
<< ")";
}
{
LOG_PREFIX(RecordScanner::scan_valid_records);
initialize_cursor(cursor);
- DEBUG("starting at {}, budget={}", cursor, budget);
+ DEBUG("starting at {}, budget=0x{:x}", cursor, budget);
auto retref = std::make_unique<size_t>(0);
auto &budget_used = *retref;
return crimson::repeat(
}
}().safe_then([=, &budget_used, &cursor] {
if (cursor.is_complete() || budget_used >= budget) {
- DEBUG("finish at {}, budget_used={}, budget={}",
+ DEBUG("finish at {}, budget_used=0x{:x}, budget=0x{:x}",
cursor, budget_used, budget);
return seastar::stop_iteration::yes;
} else {
paddr_t start = cursor.seq.offset;
auto block_size = cursor.get_block_size();
if (get_segment_off(cursor.seq.offset) + block_size > get_segment_end_offset(cursor.seq.offset)) {
- DEBUG("failed -- record group header block {}~4096 > segment_size {}",
- start, get_segment_end_offset(cursor.seq.offset));
+ DEBUG("failed -- record group header block {}~0x{:x} > segment_size 0x{:x}",
+ start, block_size, get_segment_end_offset(cursor.seq.offset));
return read_validate_record_metadata_ret(
read_validate_record_metadata_ertr::ready_future_marker{},
std::nullopt);
}
- TRACE("reading record group header block {}~4096", start);
+ TRACE("reading record group header block {}~0x{:x}", start, block_size);
return read(start, block_size
).safe_then([this, FNAME, nonce, block_size, &cursor](bufferptr bptr)
-> read_validate_record_metadata_ret {
paddr_t rest_start = cursor.seq.offset.add_offset(block_size);
auto rest_len = header.mdlength - block_size;
- TRACE("reading record group header rest {}~{}", rest_start, rest_len);
+ TRACE("reading record group header rest {}~0x{:x}", rest_start, rest_len);
return read(rest_start, rest_len
).safe_then([header=std::move(header), bl=std::move(bl)
](auto&& bptail) mutable {
{
LOG_PREFIX(RecordScanner::read_validate_data);
auto data_addr = record_base.add_offset(header.mdlength);
- TRACE("reading record group data blocks {}~{}", data_addr, header.dlength);
+ TRACE("reading record group data blocks {}~0x{:x}", data_addr, header.dlength);
return read(
data_addr,
header.dlength
total_length
}
};
- DEBUG("processing {} at {}, budget_used={}",
+ DEBUG("processing {} at {}, budget_used=0x{:x}",
next.header, locator, budget_used);
return handler(
locator,
st.st_blksize = device->get_block_size();
st.st_blocks = (st.st_size + st.st_blksize - 1) / st.st_blksize;
st.st_nlink = 1;
- DEBUGT("oid={}, size={}, blksize={}",
+ DEBUGT("oid={}, size=0x{:x}, blksize=0x{:x}",
t, oid, st.st_size, st.st_blksize);
return seastar::make_ready_future<struct stat>(st);
}
[this, num_bytes](auto &ctx) {
LOG_PREFIX(SeaStoreS::do_transaction_no_callbacks);
return with_trans_intr(*ctx.transaction, [&ctx, this, FNAME, num_bytes](auto &t) {
- DEBUGT("cid={}, {} operations, {} bytes, {} colls, {} objects ...",
+ DEBUGT("cid={}, {} operations, 0x{:x} bytes, {} colls, {} objects ...",
t, ctx.ch->get_cid(),
ctx.ext_transaction.get_num_ops(),
num_bytes,
<< "type: " << delta.type
<< ", paddr: " << delta.paddr
<< ", laddr: " << delta.laddr
- << ", prev_crc: " << delta.prev_crc
- << ", final_crc: " << delta.final_crc
- << ", length: " << delta.length
+ << ", prev_crc: 0x" << std::hex << delta.prev_crc
+ << ", final_crc: 0x" << delta.final_crc
+ << ", length: 0x" << delta.length << std::dec
<< ", pversion: " << delta.pversion
- << ", ext_seq: " << delta.ext_seq
+ << ", ext_seq: " << segment_seq_printer_t{delta.ext_seq}
<< ", seg_type: " << delta.seg_type
<< ")";
}
return out << "extent_info_t("
<< "type: " << info.type
<< ", addr: " << info.addr
- << ", len: " << info.len
+ << ", len: 0x" << std::hex << info.len << std::dec
<< ")";
}
<< " " << rewrite_gen_printer_t{header.generation}
<< ", dirty_tail=" << header.dirty_tail
<< ", alloc_tail=" << header.alloc_tail
- << ", segment_nonce=" << header.segment_nonce
+ << ", segment_nonce=0x" << std::hex << header.segment_nonce << std::dec
<< ", modify_time=" << mod_time_point_printer_t{header.modify_time}
<< ")";
}
<< tail.physical_segment_id
<< " " << tail.type
<< " " << segment_seq_printer_t{tail.segment_seq}
- << ", segment_nonce=" << tail.segment_nonce
+ << ", segment_nonce=0x" << std::hex << tail.segment_nonce << std::dec
<< ", modify_time=" << mod_time_point_printer_t{tail.modify_time}
<< ", num_extents=" << tail.num_extents
<< ")";
{
return out << "record_size_t("
<< "record_type=" << rsize.record_type
- << "raw_md=" << rsize.get_raw_mdlength()
- << ", data=" << rsize.dlength
+ << "raw_md=0x" << std::hex << rsize.get_raw_mdlength()
+ << ", data=0x" << rsize.dlength << std::dec
<< ")";
}
{
return out << "record_group_header_t("
<< "num_records=" << h.records
- << ", mdlength=" << h.mdlength
- << ", dlength=" << h.dlength
- << ", nonce=" << h.segment_nonce
+ << ", mdlength=0x" << std::hex << h.mdlength
+ << ", dlength=0x" << h.dlength
+ << ", segment_nonce=0x" << h.segment_nonce << std::dec
<< ", committed_to=" << h.committed_to
- << ", data_crc=" << h.data_crc
+ << ", data_crc=0x" << std::hex << h.data_crc << std::dec
<< ")";
}
{
return out << "record_group_size_t("
<< "record_type=" << size.record_type
- << "raw_md=" << size.get_raw_mdlength()
- << ", data=" << size.dlength
- << ", block_size=" << size.block_size
+ << "raw_md=0x" << std::hex << size.get_raw_mdlength()
+ << ", data=0x" << size.dlength
+ << ", block_size=0x" << size.block_size << std::dec
<< ", fullness=" << size.get_fullness()
<< ")";
}
{
return out << "write_result_t("
<< "start=" << w.start_seq
- << ", length=" << w.length
+ << ", length=0x" << std::hex << w.length << std::dec
<< ")";
}
TRACET("{}", t, offset);
return lba_manager->incref_extent(t, offset
).si_then([FNAME, offset, &t](auto result) {
- DEBUGT("extent refcount is incremented to {} -- {}~{}, {}",
+ DEBUGT("extent refcount is incremented to {} -- {}~0x{:x}, {}",
t, result.refcount, offset, result.length, result.addr);
return result.refcount;
});
size_t max_bytes)
{
LOG_PREFIX(TransactionManager::get_next_dirty_extents);
- DEBUGT("max_bytes={}B, seq={}", t, max_bytes, seq);
+ DEBUGT("max_bytes=0x{:x}B, seq={}", t, max_bytes, seq);
return cache->get_next_dirty_extents(t, seq, max_bytes);
}
auto crc = ref->calc_crc32c();
SUBTRACET(
seastore_tm,
- "got extent -- {}, chksum in the lba tree: {}, actual chksum: {}",
+ "got extent -- {}, chksum in the lba tree: 0x{:x}, actual chksum: 0x{:x}",
t,
*ref,
pin->get_checksum(),
}
if (unlikely(inconsistent)) {
SUBERRORT(seastore_tm,
- "extent checksum inconsistent, recorded: {}, actual: {}, {}",
+ "extent checksum inconsistent, recorded: 0x{:x}, actual: 0x{:x}, {}",
t,
pin->get_checksum(),
crc,
auto crc = ref->calc_crc32c();
SUBTRACET(
seastore_tm,
- "got extent -- {}, chksum in the lba tree: {}, actual chksum: {}",
+ "got extent -- {}, chksum in the lba tree: 0x{:x}, actual chksum: 0x{:x}",
t,
*ref,
pin->get_checksum(),
}
if (unlikely(inconsistent)) {
SUBERRORT(seastore_tm,
- "extent checksum inconsistent, recorded: {}, actual: {}, {}",
+ "extent checksum inconsistent, recorded: 0x{:x}, actual: 0x{:x}, {}",
t,
pin->get_checksum(),
crc,