DEBUGT("op OMAP_SETKEYS, oid={}, omap size={}, type={} ...",
*ctx.transaction, oid, aset.size(), root.get_type());
return _omap_set_values(
- ctx,
+ *ctx.transaction,
onode,
std::move(aset),
std::move(root));
DEBUGT("op OMAP_RMKEYS, oid={}, omap size={}, type={} ...",
*ctx.transaction, oid, keys.size(), root.get_type());
return _omap_rmkeys(
- ctx,
+ *ctx.transaction,
onode,
std::move(keys),
std::move(root));
DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={}, type={}...",
*ctx.transaction, oid, first, last, root.get_type());
return _omap_rmkeyrange(
- ctx,
+ *ctx.transaction,
onode,
std::move(first), std::move(last),
std::move(root));
SeaStore::Shard::tm_ret
SeaStore::Shard::_clone_omaps(
- internal_context_t &ctx,
+ Transaction& t,
OnodeRef &onode,
OnodeRef &d_onode,
const omap_type_t type)
{
- return trans_intr::repeat([&ctx, &onode, &d_onode, this, type] {
+ return trans_intr::repeat([&t, &onode, &d_onode, this, type] {
return seastar::do_with(
std::optional<std::string>(std::nullopt),
- [&ctx, &onode, &d_onode, this, type](auto &start)
+ [&t, &onode, &d_onode, this, type](auto &start)
{
auto config = OMapManager::omap_list_config_t()
.with_inclusive(false, false);
- return omap_list(*onode, get_omap_root(type, *onode), *ctx.transaction, start, config
- ).si_then([&ctx, &onode, &d_onode, this, type, &start](auto p) {
+ return omap_list(*onode, get_omap_root(type, *onode), t, start, config
+ ).si_then([&t, &onode, &d_onode, this, type, &start](auto p) {
auto complete = std::get<0>(p);
auto &attrs = std::get<1>(p);
if (attrs.empty()) {
}
std::string nstart = attrs.rbegin()->first;
return _omap_set_values(
- ctx,
+ t,
d_onode,
std::map<std::string, ceph::bufferlist>(attrs.begin(), attrs.end()),
get_omap_root(type, *d_onode)
d_onode.get()});
}).si_then([&ctx, &onode, &d_onode, this] {
return _clone_omaps(
- ctx, onode, d_onode, omap_type_t::XATTR);
+ *ctx.transaction, onode, d_onode, omap_type_t::XATTR);
}).si_then([&ctx, &onode, &d_onode, this] {
return _clone_omaps(
- ctx, onode, d_onode, omap_type_t::OMAP);
+ *ctx.transaction, onode, d_onode, omap_type_t::OMAP);
}).si_then([&ctx, &onode, &d_onode, this] {
return _clone_omaps(
- ctx, onode, d_onode, omap_type_t::LOG);
+ *ctx.transaction, onode, d_onode, omap_type_t::LOG);
});
}
SeaStore::Shard::tm_ret
SeaStore::Shard::_omap_set_values(
- internal_context_t &ctx,
+ Transaction& t,
OnodeRef &onode,
std::map<std::string, ceph::bufferlist> &&kvs,
omap_root_t&& root)
{
- Transaction& t = *ctx.transaction;
return seastar::do_with(
BtreeOMapManager(*transaction_manager),
std::move(root),
OnodeRef &onode)
{
return _xattr_rmattr(
- ctx,
+ *ctx.transaction,
get_omap_root(omap_type_t::XATTR, *onode),
onode,
std::string(OMAP_HEADER_XATTR_KEY)
SeaStore::Shard::tm_ret
SeaStore::Shard::_omap_rmkeys(
- internal_context_t &ctx,
+ Transaction &t,
OnodeRef &onode,
omap_keys_t &&keys,
omap_root_t&& root)
BtreeOMapManager(*transaction_manager),
std::move(root),
std::move(keys),
- [&ctx, &onode]
+ [&t, &onode]
(auto &omap_manager, auto &root, auto &keys)
{
return trans_intr::do_for_each(
keys.begin(),
keys.end(),
- [&omap_manager, &ctx, &root](auto &p)
+ [&omap_manager, &t, &root](auto &p)
{
- return omap_manager.omap_rm_key(root, *ctx.transaction, p);
- }).si_then([&ctx, &root, &onode] {
+ return omap_manager.omap_rm_key(root, t, p);
+ }).si_then([&t, &root, &onode] {
if (root.must_update()) {
- omaptree_update_root(*ctx.transaction, root, *onode);
+ omaptree_update_root(t, root, *onode);
}
});
});
SeaStore::Shard::tm_ret
SeaStore::Shard::_omap_rmkeyrange(
- internal_context_t &ctx,
+ Transaction& t,
OnodeRef &onode,
std::string first,
std::string last,
{
if (first > last) {
LOG_PREFIX(SeaStoreS::_omap_rmkeyrange);
- ERRORT("range error, first:{} > last:{}", *ctx.transaction, first, last);
+ ERRORT("range error, first:{} > last:{}", t, first, last);
ceph_abort();
}
if (root.is_null()) {
std::move(root),
std::move(first),
std::move(last),
- [&ctx, &onode]
+ [&t, &onode]
(auto &omap_manager, auto &root, auto &first, auto &last)
{
auto config = OMapManager::omap_list_config_t()
.with_inclusive(true, false)
.without_max();
return omap_manager.omap_rm_key_range(
- root, *ctx.transaction, first, last, config
- ).si_then([&ctx, &root, &onode] {
+ root, t, first, last, config
+ ).si_then([&t, &root, &onode] {
if (root.must_update()) {
- omaptree_update_root(*ctx.transaction, root, *onode);
+ omaptree_update_root(t, root, *onode);
}
});
});
// if oi was not in the layout, it probably exists in the omap,
// need to remove it first
fut = _xattr_rmattr(
- ctx,
+ *ctx.transaction,
get_omap_root(omap_type_t::XATTR, *onode),
onode,
OI_ATTR);
if (!layout.ss_size) {
fut = _xattr_rmattr(
- ctx,
+ *ctx.transaction,
get_omap_root(omap_type_t::XATTR, *onode),
onode,
SS_ATTR);
return std::move(fut
).si_then([this, onode, &ctx, aset=std::move(aset)]() mutable {
return _omap_set_values(
- ctx,
+ *ctx.transaction,
onode,
std::move(aset),
get_omap_root(omap_type_t::XATTR, *onode));
return tm_iertr::now();
} else {
return _xattr_rmattr(
- ctx,
+ *ctx.transaction,
get_omap_root(omap_type_t::XATTR, *onode),
onode,
std::move(name));
SeaStore::Shard::tm_ret
SeaStore::Shard::_xattr_rmattr(
- internal_context_t &ctx,
+ Transaction& t,
omap_root_t&& root,
OnodeRef &onode,
std::string &&name)
{
LOG_PREFIX(SeaStoreS::_xattr_rmattr);
- DEBUGT("onode={}", *ctx.transaction, *onode);
+ DEBUGT("onode={}", t, *onode);
if (root.is_null()) {
return base_iertr::now();
}
BtreeOMapManager(*transaction_manager),
std::move(root),
std::move(name),
- [&ctx, &onode](auto &omap_manager, auto &root, auto &name)
+ [&t, &onode](auto &omap_manager, auto &root, auto &name)
{
- return omap_manager.omap_rm_key(root, *ctx.transaction, name
- ).si_then([&ctx, &root, &onode] {
+ return omap_manager.omap_rm_key(root, t, name
+ ).si_then([&t, &root, &onode] {
if (root.must_update()) {
- omaptree_update_root(*ctx.transaction, root, *onode);
+ omaptree_update_root(t, root, *onode);
}
});
});