#include "crimson/os/seastore/onode_manager.h"
#include "crimson/os/seastore/object_data_handler.h"
-namespace {
- seastar::logger& logger() {
- return crimson::get_logger(ceph_subsys_filestore);
- }
-}
-
using crimson::common::local_conf;
namespace crimson::os::seastore {
seastar::future<store_statfs_t> SeaStore::stat() const
{
- logger().debug("{}", __func__);
+ LOG_PREFIX(SeaStore::stat);
+ DEBUG("");
store_statfs_t st;
return seastar::make_ready_future<store_statfs_t>(st);
}
seastar::future<CollectionRef> SeaStore::create_new_collection(const coll_t& cid)
{
+ LOG_PREFIX(SeaStore::create_new_collection);
+ DEBUG("{}", cid);
auto c = _get_collection(cid);
return repeat_with_internal_context(
c,
seastar::future<CollectionRef> SeaStore::open_collection(const coll_t& cid)
{
+ LOG_PREFIX(SeaStore::open_collection);
+ DEBUG("{}", cid);
return seastar::make_ready_future<CollectionRef>(_get_collection(cid));
}
size_t len,
uint32_t op_flags)
{
+ LOG_PREFIX(SeaStore::read);
+ DEBUG("oid {} offset {} len {}", oid, offset, len);
return repeat_with_onode<ceph::bufferlist>(
ch,
oid,
std::string_view name) const
{
auto c = static_cast<SeastoreCollection*>(ch.get());
- logger().debug("{} {} {}",
- __func__, c->get_cid(), oid);
+ LOG_PREFIX(SeaStore::get_attr);
+ DEBUG("{} {}", c->get_cid(), oid);
using get_attr_ertr = TransactionManager::base_ertr::extend<
crimson::ct_error::enodata>;
return repeat_with_onode<ceph::bufferlist>(
return seastar::make_ready_future<ceph::bufferlist>(std::move(*opt));
});
});
- }).handle_error(crimson::ct_error::input_output_error::handle([this] {
- logger().error("EIO when getting attrs");
+ }).handle_error(crimson::ct_error::input_output_error::handle([FNAME] {
+ ERROR("EIO when getting attrs");
abort();
}), crimson::ct_error::pass_further_all{});
}
CollectionRef ch,
const ghobject_t& oid)
{
+ LOG_PREFIX(SeaStore::get_attrs);
auto c = static_cast<SeastoreCollection*>(ch.get());
- logger().debug("{} {} {}",
- __func__, c->get_cid(), oid);
+ DEBUG("{} {}", c->get_cid(), oid);
return repeat_with_onode<attrs_t>(
c, oid, [=](auto &t, auto& onode) {
auto& layout = onode.get_layout();
}
return seastar::make_ready_future<omap_values_t>(std::move(attrs));
});
- }).handle_error(crimson::ct_error::input_output_error::handle([this] {
- logger().error("EIO when getting attrs");
+ }).handle_error(crimson::ct_error::input_output_error::handle([FNAME] {
+ ERROR("EIO when getting attrs");
abort();
}), crimson::ct_error::pass_further_all{});
}
CollectionRef c,
const ghobject_t& oid)
{
+ LOG_PREFIX(SeaStore::stat);
return repeat_with_onode<struct stat>(
c,
oid,
- [=](auto &t, auto &onode) {
+ [=, &oid](auto &t, auto &onode) {
struct stat st;
auto &olayout = onode.get_layout();
st.st_size = olayout.size;
st.st_blksize = transaction_manager->get_block_size();
st.st_blocks = (st.st_size + st.st_blksize - 1) / st.st_blksize;
st.st_nlink = 1;
+ DEBUGT("cid {}, oid {}, return size {}", t, c->get_cid(), oid, st.st_size);
return seastar::make_ready_future<struct stat>(st);
}).handle_error(
crimson::ct_error::assert_all{
OMapManager::omap_list_config_t config)
{
auto c = static_cast<SeastoreCollection*>(ch.get());
- logger().debug(
- "{} {} {}",
- __func__, c->get_cid(), oid);
+ LOG_PREFIX(SeaStore::omap_list);
+ DEBUG("{} {}", c->get_cid(), oid);
using ret_bare_t = std::tuple<bool, SeaStore::omap_values_t>;
using int_ret_t = omap_int_ertr_t::future<ret_bare_t>;
return repeat_with_onode<ret_bare_t>(
}
void SeaStore::on_error(ceph::os::Transaction &t) {
- logger().error(" transaction dump:\n");
+ LOG_PREFIX(SeaStore::on_error);
+ ERROR(" transaction dump:\n");
JSONFormatter f(true);
f.open_object_section("transaction");
t.dump(&f);
f.close_section();
std::stringstream str;
f.flush(str);
- logger().error("{}", str.str());
+ ERROR("{}", str.str());
abort();
}
std::vector<OnodeRef> &onodes,
ceph::os::Transaction::iterator &i)
{
+ LOG_PREFIX(SeaStore::_do_transaction_step);
auto get_onode = [&onodes](size_t i) -> OnodeRef& {
ceph_assert(i < onodes.size());
return onodes[i];
return tm_ertr::now();
}
default:
- logger().error("bad op {}", static_cast<unsigned>(op->op));
+ ERROR("bad op {}", static_cast<unsigned>(op->op));
return crimson::ct_error::input_output_error::make();
}
} catch (std::exception &e) {
- logger().error("{} got exception {}", __func__, e);
+ ERROR("got exception {}", e);
return crimson::ct_error::input_output_error::make();
}
}
internal_context_t &ctx,
OnodeRef &onode)
{
- logger().debug("{} onode={}",
- __func__, *onode);
+ LOG_PREFIX(SeaStore::_remove);
+ DEBUGT("onode={}", *ctx.transaction, *onode);
return tm_ertr::now();
}
internal_context_t &ctx,
OnodeRef &onode)
{
- logger().debug("{} onode={}",
- __func__, *onode);
+ LOG_PREFIX(SeaStore::_touch);
+ DEBUGT("onode={}", *ctx.transaction, *onode);
return tm_ertr::now();
}
ceph::bufferlist &&_bl,
uint32_t fadvise_flags)
{
- logger().debug("SeaStore::{}: {} {} ~ {}",
- __func__, *onode, offset, len);
+ LOG_PREFIX(SeaStore::_write);
+ DEBUGT("onode={} {}~{}", *ctx.transaction, *onode, offset, len);
{
auto &object_size = onode->get_mutable_layout(*ctx.transaction).size;
object_size = std::max<uint64_t>(
OnodeRef &onode,
std::map<std::string, ceph::bufferlist> &&aset)
{
- logger().debug(
- "{}: {} {} keys",
- __func__, *onode, aset.size());
+ LOG_PREFIX(SeaStore::_omap_set_values);
+ DEBUGT("{} {} keys", *ctx.transaction, *onode, aset.size());
return __omap_set_kvs(
onode->get_layout().omap_root,
*ctx.transaction,
OnodeRef &onode,
ceph::bufferlist &&header)
{
- logger().debug(
- "{}: {} {} bytes",
- __func__, *onode, header.length());
+ LOG_PREFIX(SeaStore::_omap_set_header);
+ DEBUGT("{} {} bytes", *ctx.transaction, *onode, header.length());
assert(0 == "not supported yet");
return tm_ertr::now();
}
OnodeRef &onode,
omap_keys_t &&keys)
{
- logger().debug(
- "{} {} {} keys",
- __func__, *onode, keys.size());
+ LOG_PREFIX(SeaStore::_omap_rmkeys);
+ DEBUGT("{} {} keys", *ctx.transaction, *onode, keys.size());
auto omap_root = onode->get_layout().omap_root.get();
if (omap_root.is_null()) {
return seastar::now();
std::string first,
std::string last)
{
- logger().debug(
- "{} {} first={} last={}",
- __func__, *onode, first, last);
+ LOG_PREFIX(SeaStore::_omap_rmkeyrange);
+ DEBUGT("{} first={} last={}", *ctx.transaction, *onode, first, last);
assert(0 == "not supported yet");
return tm_ertr::now();
}
OnodeRef &onode,
uint64_t size)
{
- logger().debug("SeaStore::{} onode={} size={}",
- __func__, *onode, size);
+ LOG_PREFIX(SeaStore::_truncate);
+ DEBUGT("onode={} size={}", *ctx.transaction, *onode, size);
onode->get_mutable_layout(*ctx.transaction).size = size;
return ObjectDataHandler().truncate(
ObjectDataHandler::context_t{
OnodeRef &onode,
std::map<std::string, bufferlist>&& aset)
{
- logger().debug("{} onode={}",
- __func__, *onode);
+ LOG_PREFIX(SeaStore::_setattrs);
+ DEBUGT("onode={}", *ctx.transaction, *onode);
auto& layout = onode->get_mutable_layout(*ctx.transaction);
if (auto it = aset.find(OI_ATTR); it != aset.end()) {
auto& val = it->second;
seastar::future<> SeaStore::write_meta(const std::string& key,
const std::string& value)
{
- logger().debug("{}, key: {}; value: {}", __func__, key, value);
+ LOG_PREFIX(SeaStore::write_meta);
+ DEBUG("key: {}; value: {}", key, value);
return seastar::do_with(key, value,
[this](auto& key, auto& value) {
return repeat_eagain([this, &key, &value] {
seastar::future<std::tuple<int, std::string>> SeaStore::read_meta(const std::string& key)
{
- logger().debug("{}, key: {}", __func__, key);
+ LOG_PREFIX(SeaStore::read_meta);
+ DEBUG("key: {}", key);
return seastar::do_with(transaction_manager->create_transaction(), key,
[this](auto& t, auto& key) {
return transaction_manager->get_root(*t).safe_then(