int err;
C_DoWatchError(Objecter::LingerOp *i, int r) : info(i), err(r) {
info->get();
- info->queued_async();
+ info->_queued_async();
}
void finish(int r) {
info->watch_context->handle_error(info->linger_id, err);
C_DoWatchNotify(Objecter *o, Objecter::LingerOp *i, MWatchNotify *m)
: objecter(o), info(i), msg(m) {
info->get();
- info->queued_async();
+ info->_queued_async();
msg->get();
}
void finish(int r) {
ldout(cct, 7) << __func__ << " cookie " << m->cookie << " dne" << dendl;
return;
}
+ RWLock::WLocker wl(info->watch_lock);
if (m->opcode == CEPH_WATCH_EVENT_DISCONNECT) {
- RWLock::WLocker l(info->watch_lock);
info->last_error = -ENOTCONN;
}
finisher->queue(new C_DoWatchNotify(this, info, m));
ceph_tid_t ping_tid;
epoch_t map_dne_bound;
- void queued_async() {
- RWLock::WLocker l(watch_lock);
+ void _queued_async() {
+ assert(watch_lock.is_locked());
watch_pending_async.push_back(ceph_clock_now(NULL));
}
void finished_async() {