X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Flibrados%2FIoCtxImpl.cc;h=dbd0818da61567c159f640fadb2a3c1c8d080fa5;hb=28e407b858acd3bddc89f68583571f771bb42e46;hp=bafdb948da8c3125cd8a02fda3872ac1b8799fa5;hpb=dfcb7b53b2e4fcd2a5af0240d4975adc711ab96e;p=ceph.git diff --git a/ceph/src/librados/IoCtxImpl.cc b/ceph/src/librados/IoCtxImpl.cc index bafdb948d..dbd0818da 100644 --- a/ceph/src/librados/IoCtxImpl.cc +++ b/ceph/src/librados/IoCtxImpl.cc @@ -138,7 +138,7 @@ struct C_aio_notify_Complete : public C_aio_linger_Complete { } 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); @@ -175,10 +175,6 @@ struct C_aio_notify_Ack : public Context { 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); - } } }; @@ -1832,6 +1828,7 @@ int librados::IoCtxImpl::notify(const object_t& oid, bufferlist& bl, 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) @@ -1863,7 +1860,7 @@ int librados::IoCtxImpl::notify(const object_t& oid, bufferlist& bl, } 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);