pg.op_applied(op.at_version);
}
logger().debug("{}:{}", __func__, __LINE__);
- return store->do_transaction(coll, std::move(txn)).then([FNAME] {
+ return crimson::os::with_store_do_transaction(
+ store, coll, std::move(txn)).then([FNAME] {
DEBUG("transaction commited!");
return write_iertr::now();
});
DEBUG("obj {} off {} size {} flags {}", obj, off, size, flags);
DEBUG("oid is: {}", ghobject_t{obj, ghobject_t::NO_GEN, get_shard()});
if (is_single_chunk(obj, op)) {
- return store->read(
+ return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::read>(
+ store,
coll, ghobject_t{obj, ghobject_t::NO_GEN, get_shard()}, off, size, flags);
} else {
return seastar::do_with(ceph::bufferlist{}, [=, this] (auto&& result_bl) {
std::end(sub_spec),
[&obj, off, flags, subchunk_size, m, &result_bl, this] (const auto& subchunk) {
const auto [sub_off_count, sub_size_count] = subchunk;
- return store->read(
+ return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::read>(
+ store,
coll,
ghobject_t{obj, ghobject_t::NO_GEN, get_shard()},
off + m*sinfo.get_chunk_size() + sub_off_count*subchunk_size,
if (reply.errors.count(obj_attr)) {
return read_ertr::now();
}
- return store->get_attrs(
- coll, ghobject_t{obj_attr, ghobject_t::NO_GEN, get_shard()}
+ return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::get_attrs>(
+ store, coll, ghobject_t{obj_attr, ghobject_t::NO_GEN, get_shard()}, 0
).safe_then([&reply, obj_attr] (auto&& attrs) {
reply.attrs_read[obj_attr] = std::move(attrs);
return read_ertr::now();
crimson::osd::ShardServices& shard_services,
crimson::os::CollectionRef coll,
ECBackend* backend)
-: ::crimson::osd::RecoveryBackend(pg, shard_services, coll, backend),
+: ::crimson::osd::RecoveryBackend(pg, shard_services, coll, pg.get_store_index(), backend),
::ECCommon::RecoveryBackend(
shard_services.get_cct(),
coll->get_cid(),
ceph::os::Transaction&& txn,
std::map<int, MOSDPGPushReply*> replies)
{
- std::ignore = shard_services.get_store().do_transaction(
- crimson::osd::RecoveryBackend::coll, std::move(txn)
+ std::ignore = crimson::os::with_store_do_transaction(
+ shard_services.get_store(pg.get_store_index()),
+ crimson::osd::RecoveryBackend::coll,
+ std::move(txn)
).then([replies=std::move(replies), this]() mutable {
if (auto msgit = replies.find(get_parent()->whoami_shard().osd);
msgit != std::end(replies)) {
coll{coll},
shard_services{shard_services},
dpp{dpp},
- store{&shard_services.get_store(store_index)}
+ store{shard_services.get_store(store_index)}
{
- logger().info("initialized PGBackend::store with {}", (void*)this->store);
}
tl::expected<PGBackend::loaded_object_md_t::ref, std::error_code>
}
return crimson::os::with_store<
&crimson::os::FuturizedStore::Shard::get_max_attr_name_length
- >(store).then([this, &os, &osd_op, &txn, &delta_stats](unsigned store_max_name_len) {
+ >(store).then([this, &os, &osd_op, &txn, &delta_stats, &attr_cache](unsigned store_max_name_len) {
const auto max_name_len = std::min<uint64_t>(
store_max_name_len, local_conf()->osd_max_attr_name_len);
if (osd_op.op.xattr.name_len > max_name_len) {
[&] () {
if (!is_erasure()) {
logger().debug("getxattrx on obj={} goes into objstore", os.oi.soid);
- return store->get_attrs(coll, ghobject_t{os.oi.soid});
+ return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::get_attrs>(
+ store, coll, ghobject_t{os.oi.soid}, 0);
}
return crimson::os::FuturizedStore::Shard::get_attrs_ertr::make_ready_future<
crimson::os::FuturizedStore::Shard::attrs_t>(attr_cache);
std::string&& key) const
{
return seastar::do_with(key, [this, &soid](auto &key) {
- return store->get_attr(coll, ghobject_t{soid}, key);
+ return crimson::os::with_store<&crimson::os::FuturizedStore::Shard::get_attr>(
+ store, coll, ghobject_t{soid}, key, 0);
});
}
namespace crimson::osd {
+ReplicatedRecoveryBackend::ReplicatedRecoveryBackend(
+ crimson::osd::PG& pg,
+ crimson::osd::ShardServices& shard_services,
+ crimson::os::CollectionRef coll,
+ PGBackend* backend)
+ : RecoveryBackend(pg, shard_services, coll, pg.get_store_index(), backend)
+{}
+
RecoveryBackend::interruptible_future<>
ReplicatedRecoveryBackend::recover_object(
const hobject_t& soid,
ReplicatedRecoveryBackend(crimson::osd::PG& pg,
crimson::osd::ShardServices& shard_services,
crimson::os::CollectionRef coll,
- PGBackend* backend)
- : RecoveryBackend(pg, shard_services, coll, pg.get_store_index(), backend)
- {}
+ PGBackend* backend);
interruptible_future<> handle_recovery_op(
Ref<MOSDFastDispatchOp> m,
crimson::net::ConnectionXcoreRef conn) final;