cancel_copy(cop);
}
- CopyOpRef cop(new CopyOp(ctx, src, oloc, version));
+ CopyOpRef cop(new CopyOp(ctx, ctx->obc, src, oloc, version));
copy_ops[dest] = cop;
ctx->copy_op = cop;
++ctx->obc->copyfrom_readside;
<< " tid " << cop->objecter_tid << dendl;
return;
}
- OpContext *ctx = cop->ctx;
- ObjectContextRef obc = ctx->obc;
+ ObjectContextRef obc = cop->obc;
cop->objecter_tid = 0;
if (r >= 0) {
}
dout(20) << __func__ << " complete; committing" << dendl;
- execute_ctx(ctx);
+ execute_ctx(cop->ctx);
copy_ops.erase(obc->obs.oi.soid);
--obc->copyfrom_readside;
- ctx->copy_op.reset();
+ cop->ctx->copy_op.reset();
kick_object_context_blocked(obc);
}
osd->objecter->op_cancel(cop->objecter_tid);
}
- copy_ops.erase(ctx->obc->obs.oi.soid);
- --ctx->obc->copyfrom_readside;
+ copy_ops.erase(cop->obc->obs.oi.soid);
+ --cop->obc->copyfrom_readside;
ctx->copy_op.reset();
- kick_object_context_blocked(ctx->obc);
+ kick_object_context_blocked(cop->obc);
delete ctx;
}
struct CopyOp {
OpContext *ctx;
+ ObjectContextRef obc;
hobject_t src;
object_locator_t oloc;
version_t version;
hobject_t temp_oid;
object_copy_cursor_t temp_cursor;
- CopyOp(OpContext *c, hobject_t s, object_locator_t l, version_t v)
- : ctx(c), src(s), oloc(l), version(v),
+ CopyOp(OpContext *c, ObjectContextRef _obc, hobject_t s, object_locator_t l, version_t v)
+ : ctx(c), obc(_obc), src(s), oloc(l), version(v),
objecter_tid(0),
size(0),
rval(-1)