void BlueFS::add_block_extent(unsigned id, uint64_t offset, uint64_t length)
{
std::lock_guard<std::mutex> l(lock);
- dout(1) << __func__ << " bdev " << id << " " << offset << "~" << length
+ dout(1) << __func__ << " bdev " << id
+ << " 0x" << std::hex << offset << "~" << length << std::dec
<< dendl;
assert(id < bdev.size());
assert(bdev[id]);
uint64_t *offset, uint32_t *length)
{
std::lock_guard<std::mutex> l(lock);
- dout(1) << __func__ << " bdev " << id << " want " << want << dendl;
+ dout(1) << __func__ << " bdev " << id
+ << " want 0x" << std::hex << want << std:: dec << dendl;
assert(id < alloc.size());
assert(alloc[id]);
int r = alloc[id]->reserve(want);
if (logger)
logger->inc(l_bluefs_reclaim_bytes, *length);
- dout(1) << __func__ << " bdev " << id << " want " << want
- << " got " << *offset << "~" << *length << dendl;
+ dout(1) << __func__ << " bdev " << id << " want 0x" << std::hex << want
+ << " got 0x" << *offset << "~" << *length << std::dec << dendl;
return 0;
}
if (p.empty())
continue;
for (interval_set<uint64_t>::iterator q = p.begin(); q != p.end(); ++q) {
- dout(20) << __func__ << " op_alloc_add " << bdev << " " << q.get_start()
- << "~" << q.get_len() << dendl;
+ dout(20) << __func__ << " op_alloc_add " << bdev << " 0x"
+ << std::hex << q.get_start() << "~" << q.get_len() << std::dec
+ << dendl;
log_t.op_alloc_add(bdev, q.get_start(), q.get_len());
}
}
log_writer = _create_writer(_get_file(1));
assert(log_writer->file->fnode.ino == 1);
log_writer->pos = log_writer->file->fnode.size;
- dout(10) << __func__ << " log write pos set to " << log_writer->pos << dendl;
+ dout(10) << __func__ << " log write pos set to 0x"
+ << std::hex << log_writer->pos << std::dec
+ << dendl;
_init_logger();
return 0;
bdev[BDEV_DB]->aio_write(get_super_offset(), bl, &ioc, false);
bdev[BDEV_DB]->aio_submit(&ioc);
ioc.aio_wait();
- dout(20) << __func__ << " v " << super.version << " crc " << crc
- << " offset " << get_super_offset() << dendl;
+ dout(20) << __func__ << " v " << super.version
+ << " crc 0x" << std::hex << crc
+ << " offset 0x" << get_super_offset() << std::dec
+ << dendl;
return 0;
}
}
::decode(expected_crc, p);
if (crc != expected_crc) {
- derr << __func__ << " bad crc on superblock, expected " << expected_crc
- << " != actual " << crc << dendl;
+ derr << __func__ << " bad crc on superblock, expected 0x"
+ << std::hex << expected_crc << " != actual 0x" << crc << std::dec
+ << dendl;
return -EIO;
}
dout(10) << __func__ << " superblock " << super.version << dendl;
}
}
if (uuid != super.uuid) {
- dout(10) << __func__ << " " << pos << ": stop: uuid " << uuid
- << " != super.uuid " << super.uuid << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": stop: uuid " << uuid << " != super.uuid " << super.uuid
+ << dendl;
break;
}
if (seq != log_seq + 1) {
- dout(10) << __func__ << " " << pos << ": stop: seq " << seq
- << " != expected " << log_seq + 1 << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": stop: seq " << seq << " != expected " << log_seq + 1
+ << dendl;
break;
}
if (more) {
- dout(20) << __func__ << " need " << more << " more bytes" << dendl;
+ dout(20) << __func__ << " need 0x" << std::hex << more << std::dec
+ << " more bytes" << dendl;
bufferlist t;
int r = _read(log_reader, &log_reader->buf, pos + super.block_size, more,
&t, NULL);
if (r < (int)more) {
- dout(10) << __func__ << " " << pos << ": stop: len is "
- << bl.length() + more << ", which is past eof" << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << pos
+ << ": stop: len is 0x" << bl.length() + more << std::dec
+ << ", which is past eof" << dendl;
break;
}
assert(r == (int)more);
::decode(t, p);
}
catch (buffer::error& e) {
- dout(10) << __func__ << " " << pos << ": stop: failed to decode: "
- << e.what() << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": stop: failed to decode: " << e.what()
+ << dendl;
delete log_reader;
return -EIO;
}
assert(seq == t.seq);
- dout(10) << __func__ << " " << pos << ": " << t << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": " << t << dendl;
bufferlist::iterator p = t.op_bl.begin();
while (!p.end()) {
switch (op) {
case bluefs_transaction_t::OP_INIT:
- dout(20) << __func__ << " " << pos << ": op_init" << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_init" << dendl;
assert(t.seq == 1);
break;
{
uint64_t next_seq;
::decode(next_seq, p);
- dout(20) << __func__ << " " << pos << ": op_jump_seq "
- << next_seq << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_jump_seq " << next_seq << dendl;
assert(next_seq >= log_seq);
log_seq = next_seq - 1; // we will increment it below
}
::decode(id, p);
::decode(offset, p);
::decode(length, p);
- dout(20) << __func__ << " " << pos << ": op_alloc_add "
- << " " << (int)id << ":" << offset << "~" << length << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_alloc_add " << " " << (int)id
+ << ":0x" << std::hex << offset << "~" << length << std::dec
+ << dendl;
block_all[id].insert(offset, length);
block_total[id] += length;
alloc[id]->init_add_free(offset, length);
::decode(id, p);
::decode(offset, p);
::decode(length, p);
- dout(20) << __func__ << " " << pos << ": op_alloc_rm "
- << " " << (int)id << ":" << offset << "~" << length << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_alloc_rm " << " " << (int)id
+ << ":0x" << std::hex << offset << "~" << length << std::dec
+ << dendl;
block_all[id].erase(offset, length);
block_total[id] -= length;
alloc[id]->init_rm_free(offset, length);
::decode(dirname, p);
::decode(filename, p);
::decode(ino, p);
- dout(20) << __func__ << " " << pos << ": op_dir_link "
- << " " << dirname << "/" << filename << " to " << ino
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_dir_link " << " " << dirname << "/" << filename
+ << " to " << ino
<< dendl;
FileRef file = _get_file(ino);
assert(file->fnode.ino);
string dirname, filename;
::decode(dirname, p);
::decode(filename, p);
- dout(20) << __func__ << " " << pos << ": op_dir_unlink "
- << " " << dirname << "/" << filename << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_dir_unlink " << " " << dirname << "/" << filename
+ << dendl;
map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q != dir_map.end());
map<string,FileRef>::iterator r = q->second->file_map.find(filename);
{
string dirname;
::decode(dirname, p);
- dout(20) << __func__ << " " << pos << ": op_dir_create " << dirname
- << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_dir_create " << dirname << dendl;
map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q == dir_map.end());
dir_map[dirname] = new Dir;
{
string dirname;
::decode(dirname, p);
- dout(20) << __func__ << " " << pos << ": op_dir_remove " << dirname
- << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_dir_remove " << dirname << dendl;
map<string,DirRef>::iterator q = dir_map.find(dirname);
assert(q != dir_map.end());
assert(q->second->file_map.empty());
{
bluefs_fnode_t fnode;
::decode(fnode, p);
- dout(20) << __func__ << " " << pos << ": op_file_update "
- << " " << fnode << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_file_update " << " " << fnode << dendl;
FileRef f = _get_file(fnode.ino);
f->fnode = fnode;
if (fnode.ino > ino_last) {
{
uint64_t ino;
::decode(ino, p);
- dout(20) << __func__ << " " << pos << ": op_file_remove " << ino
- << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": op_file_remove " << ino << dendl;
auto p = file_map.find(ino);
assert(p != file_map.end());
file_map.erase(p);
break;
default:
- derr << __func__ << " " << pos << ": stop: unrecognized op " << (int)op
- << dendl;
+ derr << __func__ << " 0x" << std::hex << pos << std::dec
+ << ": stop: unrecognized op " << (int)op << dendl;
delete log_reader;
return -EIO;
}
log_file->fnode.size = log_reader->buf.pos;
}
- dout(10) << __func__ << " log file size was " << log_file->fnode.size << dendl;
+ dout(10) << __func__ << " log file size was 0x"
+ << std::hex << log_file->fnode.size << std::dec << dendl;
delete log_reader;
// verify file link counts are all >0
size_t len, ///< [in] this many bytes
char *out) ///< [out] optional: or copy it here
{
- dout(10) << __func__ << " h " << h << " " << off << "~" << len
+ dout(10) << __func__ << " h " << h
+ << " 0x" << std::hex << off << "~" << len << std::dec
<< " from " << h->file->fnode << dendl;
++h->file->num_reading;
len = 0;
else
len = h->file->fnode.size - off;
- dout(20) << __func__ << " reaching (or past) eof, len clipped to "
- << len << dendl;
+ dout(20) << __func__ << " reaching (or past) eof, len clipped to 0x"
+ << std::hex << len << std::dec << dendl;
}
int ret = 0;
off + l > h->file->fnode.size) {
l = h->file->fnode.size - off;
}
- dout(20) << __func__ << " read buffered " << x_off << "~" << l << " of "
- << *p << dendl;
+ dout(20) << __func__ << " read buffered 0x"
+ << std::hex << x_off << "~" << l << std::dec
+ << " of " << *p << dendl;
int r = bdev[p->bdev]->read_random(p->offset + x_off, l, out,
g_conf->bluestore_bluefs_buffered_io);
assert(r == 0);
bufferlist *outbl, ///< [out] optional: reference the result here
char *out) ///< [out] optional: or copy it here
{
- dout(10) << __func__ << " h " << h << " " << off << "~" << len
+ dout(10) << __func__ << " h " << h
+ << " 0x" << std::hex << off << "~" << len << std::dec
<< " from " << h->file->fnode << dendl;
++h->file->num_reading;
len = 0;
else
len = h->file->fnode.size - off;
- dout(20) << __func__ << " reaching (or past) eof, len clipped to "
- << len << dendl;
+ dout(20) << __func__ << " reaching (or past) eof, len clipped to 0x"
+ << std::hex << len << std::dec << dendl;
}
if (outbl)
outbl->clear();
buf->bl_off + l > eof_offset) {
l = eof_offset - buf->bl_off;
}
- dout(20) << __func__ << " fetching " << x_off << "~" << l << " of "
- << *p << dendl;
+ dout(20) << __func__ << " fetching 0x"
+ << std::hex << x_off << "~" << l << std::dec
+ << " of " << *p << dendl;
int r = bdev[p->bdev]->read(p->offset + x_off, l, &buf->bl, ioc[p->bdev],
g_conf->bluestore_bluefs_buffered_io);
assert(r == 0);
}
left = buf->get_buf_remaining(off);
- dout(20) << __func__ << " left " << left << " len " << len << dendl;
+ dout(20) << __func__ << " left 0x" << std::hex << left
+ << " len 0x" << len << std::dec << dendl;
int r = MIN(len, left);
if (outbl) {
out += r;
}
- dout(30) << __func__ << " result chunk (" << r << " bytes):\n";
+ dout(30) << __func__ << " result chunk (0x"
+ << std::hex << r << std::dec << " bytes):\n";
bufferlist t;
t.substr_of(buf->bl, off - buf->bl_off, r);
t.hexdump(*_dout);
void BlueFS::_invalidate_cache(FileRef f, uint64_t offset, uint64_t length)
{
dout(10) << __func__ << " file " << f->fnode
- << " " << offset << "~" << length << dendl;
+ << " 0x" << std::hex << offset << "~" << length << std::dec
+ << dendl;
if (offset & ~super.block_mask()) {
offset &= super.block_mask();
length = ROUND_UP_TO(length, super.block_size);
while (length > 0 && p != f->fnode.extents.end()) {
uint64_t x_len = MIN(p->length - x_off, length);
bdev[p->bdev]->invalidate_cache(p->offset + x_off, x_len);
- dout(20) << " " << x_off << "~" << x_len << " of " << *p << dendl;
+ dout(20) << __func__ << " 0x" << std::hex << x_off << "~" << x_len
+ << std:: dec << " of " << *p << dendl;
offset += x_len;
length -= x_len;
}
for (unsigned bdev = 0; bdev < MAX_BDEV; ++bdev) {
interval_set<uint64_t>& p = block_all[bdev];
for (interval_set<uint64_t>::iterator q = p.begin(); q != p.end(); ++q) {
- dout(20) << __func__ << " op_alloc_add " << bdev << " " << q.get_start()
- << "~" << q.get_len() << dendl;
+ dout(20) << __func__ << " op_alloc_add " << bdev << " 0x"
+ << std::hex << q.get_start() << "~" << q.get_len() << std::dec
+ << dendl;
t.op_alloc_add(bdev, q.get_start(), q.get_len());
}
}
int BlueFS::_flush_range(FileWriter *h, uint64_t offset, uint64_t length)
{
- dout(10) << __func__ << " " << h << " pos " << h->pos
- << " " << offset << "~" << length
+ dout(10) << __func__ << " " << h << " pos 0x" << std::hex << h->pos
+ << " 0x" << offset << "~" << length << std::dec
<< " to " << h->file->fnode << dendl;
assert(!h->file->deleted);
assert(h->file->num_readers.load() == 0);
if (offset < h->pos) {
length -= h->pos - offset;
offset = h->pos;
- dout(10) << " still need " << offset << "~" << length << dendl;
+ dout(10) << " still need 0x"
+ << std::hex << offset << "~" << length << std::dec
+ << dendl;
}
assert(offset <= h->file->fnode.size);
uint64_t x_off = 0;
vector<bluefs_extent_t>::iterator p = h->file->fnode.seek(offset, &x_off);
assert(p != h->file->fnode.extents.end());
- dout(20) << __func__ << " in " << *p << " x_off " << x_off << dendl;
+ dout(20) << __func__ << " in " << *p << " x_off 0x"
+ << std::hex << x_off << std::dec << dendl;
unsigned partial = x_off & ~super.block_mask();
bufferlist bl;
if (partial) {
- dout(20) << __func__ << " using partial tail " << partial << dendl;
+ dout(20) << __func__ << " using partial tail 0x"
+ << std::hex << partial << std::dec << dendl;
assert(h->tail_block.length() == partial);
bl.claim_append(h->tail_block);
x_off -= partial;
bl.claim_append(t);
t.substr_of(h->buffer, length, h->buffer.length() - length);
h->buffer.swap(t);
- dout(20) << " leaving " << h->buffer.length() << " unflushed" << dendl;
+ dout(20) << " leaving 0x" << std::hex << h->buffer.length() << std::dec
+ << " unflushed" << dendl;
}
assert(bl.length() == length);
t.substr_of(bl, bloff, x_len);
unsigned tail = x_len & ~super.block_mask();
if (tail) {
- dout(20) << __func__ << " caching tail of " << tail
+ dout(20) << __func__ << " caching tail of 0x"
+ << std::hex << tail << std::dec
<< " and padding block with zeros" << dendl;
h->tail_block.substr_of(bl, bl.length() - tail, tail);
t.append_zero(super.block_size - tail);
bdev[i]->aio_submit(h->iocv[i]);
}
}
- dout(20) << __func__ << " h " << h << " pos now " << h->pos << dendl;
+ dout(20) << __func__ << " h " << h << " pos now 0x"
+ << std::hex << h->pos << std::dec << dendl;
return 0;
}
<< h->file->fnode << dendl;
return 0;
}
- dout(10) << __func__ << " " << h << " " << offset << "~" << length
+ dout(10) << __func__ << " " << h << " 0x"
+ << std::hex << offset << "~" << length << std::dec
<< " to " << h->file->fnode << dendl;
assert(h->pos <= h->file->fnode.size);
return _flush_range(h, offset, length);
int BlueFS::_truncate(FileWriter *h, uint64_t offset)
{
- dout(10) << __func__ << " " << offset << " file " << h->file->fnode << dendl;
+ dout(10) << __func__ << " 0x" << std::hex << offset << std::dec
+ << " file " << h->file->fnode << dendl;
// truncate off unflushed data?
if (h->pos < offset &&
int BlueFS::_allocate(unsigned id, uint64_t len, vector<bluefs_extent_t> *ev)
{
- dout(10) << __func__ << " len " << len << " from " << id << dendl;
+ dout(10) << __func__ << " len 0x" << std::hex << len << std::dec
+ << " from " << id << dendl;
assert(id < alloc.size());
uint64_t left = ROUND_UP_TO(len, g_conf->bluefs_alloc_size);
int BlueFS::_preallocate(FileRef f, uint64_t off, uint64_t len)
{
- dout(10) << __func__ << " file " << f->fnode << " "
- << off << "~" << len << dendl;
+ dout(10) << __func__ << " file " << f->fnode << " 0x"
+ << std::hex << off << "~" << len << std::dec << dendl;
uint64_t allocated = f->fnode.get_allocated();
if (off + len > allocated) {
uint64_t want = off + len - allocated;