}
void complete(int r) override {
- // invoked by C_notify_Finish (or C_aio_notify_Ack on failure)
+ // invoked by C_notify_Finish
lock.Lock();
finished = true;
complete_unlock(r);
ldout(cct, 10) << __func__ << " linger op " << oncomplete->linger_op << " "
<< "acked (" << r << ")" << dendl;
oncomplete->handle_ack(r);
- if (r < 0) {
- // on failure, we won't expect to see a notify_finish callback
- onfinish->complete(r);
- }
}
};
Context *notify_finish = new C_notify_Finish(client->cct, ¬ify_finish_cond,
objecter, linger_op, preply_bl,
preply_buf, preply_buf_len);
+ (void) notify_finish;
uint32_t timeout = notify_timeout;
if (timeout_ms)
} else {
ldout(client->cct, 10) << __func__ << " failed to initiate notify, r = "
<< r << dendl;
- notify_finish->complete(r);
+ notify_finish_cond.wait();
}
objecter->linger_cancel(linger_op);