version_t objver;
C_SaferCond onfinish;
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
- extra_op_flags);
+ boost::intrusive_ptr linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
*handle = linger_op->get_cookie();
if (internal) {
linger_op->handle = InternalWatchInfo(this, oid, ctx, ctx2);
prepare_assert_ops(&wr);
wr.watch(*handle, CEPH_OSD_WATCH_OP_WATCH, timeout);
bufferlist bl;
- objecter->linger_watch(linger_op, wr,
+ objecter->linger_watch(linger_op.get(), wr,
snapc, ceph::real_clock::now(), bl,
&onfinish,
&objver);
set_sync_op_version(objver);
if (r < 0) {
- objecter->linger_cancel(linger_op);
+ objecter->linger_cancel(linger_op.get());
*handle = 0;
}
uint32_t timeout,
bool internal)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
- extra_op_flags);
+ boost::intrusive_ptr linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
c->io = this;
Context *oncomplete = new C_aio_linger_Complete(c, linger_op, false);
prepare_assert_ops(&wr);
wr.watch(*handle, CEPH_OSD_WATCH_OP_WATCH, timeout);
bufferlist bl;
- objecter->linger_watch(linger_op, wr,
+ objecter->linger_watch(linger_op.get(), wr,
snapc, ceph::real_clock::now(), bl,
oncomplete, &c->objver);
bufferlist *preply_bl,
char **preply_buf, size_t *preply_buf_len)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
- extra_op_flags);
+ boost::intrusive_ptr linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
C_SaferCond notify_finish_cond;
auto e = boost::asio::prefer(
boost::asio::bind_executor(
std::move(e),
CB_notify_Finish(client->cct, ¬ify_finish_cond,
- objecter, linger_op, preply_bl,
+ objecter, linger_op.get(), preply_bl,
preply_buf, preply_buf_len));
uint32_t timeout = notify_timeout;
if (timeout_ms)
// Issue RADOS op
C_SaferCond onack;
version_t objver;
- objecter->linger_notify(linger_op,
+ objecter->linger_notify(linger_op.get(),
rd, snap_seq, inbl, NULL,
&onack, &objver);
notify_finish_cond.wait();
}
- objecter->linger_cancel(linger_op);
+ objecter->linger_cancel(linger_op.get());
set_sync_op_version(objver);
return r;
bufferlist *preply_bl, char **preply_buf,
size_t *preply_buf_len)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
- extra_op_flags);
+ boost::intrusive_ptr linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
c->io = this;
boost::asio::bind_executor(
std::move(e),
CB_notify_Finish(client->cct, oncomplete,
- objecter, linger_op,
+ objecter, linger_op.get(),
preply_bl, preply_buf,
preply_buf_len));
Context *onack = new C_aio_notify_Ack(client->cct, oncomplete);
rd.notify(linger_op->get_cookie(), 1, timeout, bl, &inbl);
// Issue RADOS op
- objecter->linger_notify(linger_op,
+ objecter->linger_notify(linger_op.get(),
rd, snap_seq, inbl, NULL,
onack, &c->objver);
return 0;