} else {
ldout(cct, 15) << "send_linger " << info->linger_id << " register" << dendl;
opv = info->ops;
- if (info->on_reg_ack)
- onack = new C_Linger_Register(this, info);
oncommit = new C_Linger_Commit(this, info);
}
Op *o = new Op(info->target.base_oid, info->target.base_oloc,
logger->inc(l_osdc_linger_send);
}
-void Objecter::_linger_register(LingerOp *info, int r)
-{
- ldout(cct, 10) << "_linger_register " << info->linger_id << dendl;
- if (info->on_reg_ack) {
- info->on_reg_ack->complete(r);
- info->on_reg_ack = NULL;
- }
-}
-
void Objecter::_linger_commit(LingerOp *info, int r)
{
ldout(cct, 10) << "_linger_commit " << info->linger_id << dendl;
info->inbl = inbl;
info->poutbl = NULL;
info->pobjver = objver;
- info->on_reg_ack = NULL;
info->on_reg_commit = oncommit;
RWLock::WLocker wl(rwlock);
}
if (op->map_dne_bound > 0) {
if (osdmap->get_epoch() >= op->map_dne_bound) {
- if (op->on_reg_ack) {
- op->on_reg_ack->complete(-ENOENT);
- }
if (op->on_reg_commit) {
op->on_reg_commit->complete(-ENOENT);
}
uint32_t register_gen;
bool registered;
bool canceled;
- Context *on_reg_ack, *on_reg_commit;
+ Context *on_reg_commit;
// we trigger these from an async finisher
Context *on_notify_finish;
register_gen(0),
registered(false),
canceled(false),
- on_reg_ack(NULL), on_reg_commit(NULL),
+ on_reg_commit(NULL),
on_notify_finish(NULL),
notify_result_bl(NULL),
watch_context(NULL),
}
};
- struct C_Linger_Register : public Context {
- Objecter *objecter;
- LingerOp *info;
- C_Linger_Register(Objecter *o, LingerOp *l) : objecter(o), info(l) {
- info->get();
- }
- ~C_Linger_Register() {
- info->put();
- }
- void finish(int r) {
- objecter->_linger_register(info, r);
- }
- };
-
struct C_Linger_Commit : public Context {
Objecter *objecter;
LingerOp *info;
void _linger_submit(LingerOp *info);
void _send_linger(LingerOp *info);
- void _linger_register(LingerOp *info, int r);
void _linger_commit(LingerOp *info, int r);
void _linger_reconnect(LingerOp *info, int r);
void _send_linger_ping(LingerOp *info);