From: Ilya Dryomov Date: Mon, 16 May 2022 15:17:54 +0000 (+0200) Subject: libceph: fix misleading ceph_osdc_cancel_request() comment X-Git-Tag: microblaze-v5.20~270^2 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=d0bb883c6355bcb2cc149fb4d5c3b28ccd327a5e;p=linux-2.6-microblaze.git libceph: fix misleading ceph_osdc_cancel_request() comment cancel_request() never guaranteed that after its return the OSD client would be completely done with the OSD request. The callback (if specified) can still be invoked and a ref can still be held. Signed-off-by: Ilya Dryomov Reviewed-by: Xiubo Li --- diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 4b88f2a4a6e2..9d82bb42e958 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c @@ -4591,8 +4591,13 @@ int ceph_osdc_start_request(struct ceph_osd_client *osdc, EXPORT_SYMBOL(ceph_osdc_start_request); /* - * Unregister a registered request. The request is not completed: - * ->r_result isn't set and __complete_request() isn't called. + * Unregister request. If @req was registered, it isn't completed: + * r_result isn't set and __complete_request() isn't invoked. + * + * If @req wasn't registered, this call may have raced with + * handle_reply(), in which case r_result would already be set and + * __complete_request() would be getting invoked, possibly even + * concurrently with this call. */ void ceph_osdc_cancel_request(struct ceph_osd_request *req) {