}
}
return fut.si_then([&, op, this, FNAME](auto get_onode) {
- OnodeRef &o = onodes[op->oid];
- if (!o) {
+ OnodeRef& onode = onodes[op->oid];
+ if (!onode) {
assert(get_onode);
- o = get_onode;
+ onode = get_onode;
}
OnodeRef& d_onode = onodes[op->dest_oid];
if ((op->op == Transaction::OP_CLONE
}
}).si_then([&ctx, &i, &onodes, op, this, FNAME]() -> tm_ret {
const ghobject_t& oid = i.get_oid(op->oid);
+ OnodeRef& onode = onodes[op->oid];
+ assert(onode);
try {
switch (op->op) {
case Transaction::OP_REMOVE:
{
DEBUGT("op REMOVE, oid={} ...", *ctx.transaction, oid);
- return _remove(ctx, onodes[op->oid]
- ).si_then([&onodes, op] {
- onodes[op->oid].reset();
+ return _remove(ctx, onode
+ ).si_then([&onode] {
+ onode.reset();
});
}
case Transaction::OP_CREATE:
case Transaction::OP_TOUCH:
{
DEBUGT("op CREATE/TOUCH, oid={} ...", *ctx.transaction, oid);
- return _touch(ctx, onodes[op->oid]);
+ return _touch(ctx, onode);
}
case Transaction::OP_WRITE:
{
DEBUGT("op WRITE, oid={}, 0x{:x}~0x{:x}, flags=0x{:x} ...",
*ctx.transaction, oid, off, len, fadvise_flags);
return _write(
- ctx, onodes[op->oid], off, len, std::move(bl),
+ ctx, onode, off, len, std::move(bl),
fadvise_flags);
}
case Transaction::OP_TRUNCATE:
{
uint64_t off = op->off;
DEBUGT("op TRUNCATE, oid={}, 0x{:x} ...", *ctx.transaction, oid, off);
- return _truncate(ctx, onodes[op->oid], off);
+ return _truncate(ctx, onode, off);
}
case Transaction::OP_SETATTR:
{
i.decode_bl(bl);
DEBUGT("op SETATTR, oid={}, attr name={}, value length=0x{:x} ...",
*ctx.transaction, oid, name, bl.length());
- return _setattrs(ctx, onodes[op->oid], std::move(to_set));
+ return _setattrs(ctx, onode, std::move(to_set));
}
case Transaction::OP_SETATTRS:
{
i.decode_attrset(to_set);
DEBUGT("op SETATTRS, oid={}, attrs size={} ...",
*ctx.transaction, oid, to_set.size());
- return _setattrs(ctx, onodes[op->oid], std::move(to_set));
+ return _setattrs(ctx, onode, std::move(to_set));
}
case Transaction::OP_RMATTR:
{
std::string name = i.decode_string();
DEBUGT("op RMATTR, oid={}, attr name={} ...",
*ctx.transaction, oid, name);
- return _rmattr(ctx, onodes[op->oid], name);
+ return _rmattr(ctx, onode, name);
}
case Transaction::OP_RMATTRS:
{
DEBUGT("op RMATTRS, oid={} ...", *ctx.transaction, oid);
- return _rmattrs(ctx, onodes[op->oid]);
+ return _rmattrs(ctx, onode);
}
case Transaction::OP_OMAP_SETKEYS:
{
std::map<std::string, ceph::bufferlist> aset;
i.decode_attrset(aset);
- const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+ const omap_root_le_t &root = select_log_omap_root(*onode);
DEBUGT("op OMAP_SETKEYS, oid={}, omap size={}, type={} ...",
*ctx.transaction, oid, aset.size(), root.get_type());
- return _omap_set_values(ctx, onodes[op->oid], std::move(aset),
+ return _omap_set_values(
+ ctx,
+ onode,
+ std::move(aset),
root);
}
case Transaction::OP_OMAP_SETHEADER:
i.decode_bl(bl);
DEBUGT("op OMAP_SETHEADER, oid={}, length=0x{:x} ...",
*ctx.transaction, oid, bl.length());
- return _omap_set_header(ctx, onodes[op->oid], std::move(bl));
+ return _omap_set_header(ctx, onode, std::move(bl));
}
case Transaction::OP_OMAP_RMKEYS:
{
omap_keys_t keys;
i.decode_keyset(keys);
- const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+ const omap_root_le_t &root = select_log_omap_root(*onode);
DEBUGT("op OMAP_RMKEYS, oid={}, omap size={}, type={} ...",
*ctx.transaction, oid, keys.size(), root.get_type());
- return _omap_rmkeys(ctx, onodes[op->oid], std::move(keys), root);
+ return _omap_rmkeys(
+ ctx,
+ onode,
+ std::move(keys),
+ root);
}
case Transaction::OP_OMAP_RMKEYRANGE:
{
std::string first, last;
first = i.decode_string();
last = i.decode_string();
- const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+ const omap_root_le_t &root = select_log_omap_root(*onode);
DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={}, type={}...",
*ctx.transaction, oid, first, last, root.get_type());
return _omap_rmkeyrange(
- ctx, onodes[op->oid],
- std::move(first), std::move(last),
+ ctx,
+ onode,
+ std::move(first), std::move(last),
root);
}
case Transaction::OP_OMAP_CLEAR:
{
DEBUGT("op OMAP_CLEAR, oid={} ...", *ctx.transaction, oid);
- return _omap_clear(ctx, onodes[op->oid]);
+ return _omap_clear(ctx, onode);
}
case Transaction::OP_ZERO:
{
extent_len_t len = op->len;
DEBUGT("op ZERO, oid={}, 0x{:x}~0x{:x} ...",
*ctx.transaction, oid, off, len);
- return _zero(ctx, onodes[op->oid], off, len);
+ return _zero(ctx, onode, off, len);
}
case Transaction::OP_SETALLOCHINT:
{
{
DEBUGT("op CLONE, oid={}, dest oid={} ...",
*ctx.transaction, oid, i.get_oid(op->dest_oid));
- return _clone(ctx, onodes[op->oid], onodes[op->dest_oid]);
+ return _clone(ctx, onode, onodes[op->dest_oid]);
}
case Transaction::OP_COLL_MOVE_RENAME:
{
*ctx.transaction, oid, i.get_oid(op->dest_oid));
ceph_assert(op->cid == op->dest_cid);
return _rename(
- ctx, onodes[op->oid], onodes[op->dest_oid]
- ).si_then([&onodes, op] {
- onodes[op->oid].reset();
+ ctx, onode, onodes[op->dest_oid]
+ ).si_then([&onode] {
+ onode.reset();
});
}
default: