delete logger;
}
-//AK - TODO - locking needed but not certain
void BlueFS::_update_logger_stats()
{
- // we must be holding the lock
- logger->set(l_bluefs_num_files, nodes.file_map.size());
- logger->set(l_bluefs_log_bytes, log.writer->file->fnode.size);
-
if (alloc[BDEV_WAL]) {
logger->set(l_bluefs_wal_total_bytes, _get_total(BDEV_WAL));
logger->set(l_bluefs_wal_used_bytes, _get_used(BDEV_WAL));
dout(10) << __func__ << " log write pos set to 0x"
<< std::hex << log.writer->pos << std::dec
<< dendl;
-
+ // update log size
+ logger->set(l_bluefs_log_bytes, log.writer->file->fnode.size);
return 0;
out:
}
}
}
+ // reflect file count in logger
+ logger->set(l_bluefs_num_files, nodes.file_map.size());
dout(10) << __func__ << " done" << dendl;
return 0;
if (p == nodes.file_map.end()) {
FileRef f = ceph::make_ref<File>();
nodes.file_map[ino] = f;
+ // track files count in logger
+ logger->set(l_bluefs_num_files, nodes.file_map.size());
dout(30) << __func__ << " ino " << ino << " = " << f
<< " (new)" << dendl;
return f;
vselector->sub_usage(file->vselector_hint, file->fnode);
log.t.op_file_remove(file->fnode.ino);
nodes.file_map.erase(file->fnode.ino);
+ logger->set(l_bluefs_num_files, nodes.file_map.size());
file->deleted = true;
std::lock_guard dl(dirty.lock);
_flush_and_sync_log_core(available_runway);
_flush_bdev(log.writer);
+ logger->set(l_bluefs_log_bytes, log.writer->file->fnode.size);
//now log.lock is no longer needed
log.lock.unlock();
_clear_dirty_set_stable_D(seq);
_release_pending_allocations(to_release);
+ logger->set(l_bluefs_log_bytes, log.writer->file->fnode.size);
_update_logger_stats();
return 0;
}
dir->file_map[string{filename}] = file;
++file->refs;
create = true;
+ logger->set(l_bluefs_num_files, nodes.file_map.size());
} else {
// overwrite existing file?
file = q->second;
file->fnode.mtime = ceph_clock_now();
nodes.file_map[ino_last] = file;
dir->file_map[string{filename}] = file;
+ logger->set(l_bluefs_num_files, nodes.file_map.size());
++file->refs;
log.t.op_file_update(file->fnode);
log.t.op_dir_link(dirname, filename, file->fnode.ino);