Re: [PATCH] libceph: osd_client: don't drop reply reference too early

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 5 Jun 2012, Alex Elder wrote:
> In ceph_osdc_release_request(), a reference to the r_reply message
> is dropped.  But just after that, that same message is revoked if it
> was in use to receive an incoming reply.  Reorder these so we are
> sure we hold a reference until we're actually done with the message.
> 
> Signed-off-by: Alex Elder <elder@xxxxxxxxxxx>

Reviewed-by: Sage Weil <sage@xxxxxxxxxxx>

Good catch.

> ---
>  net/ceph/osd_client.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> index e30efbc..d8b6d31 100644
> --- a/net/ceph/osd_client.c
> +++ b/net/ceph/osd_client.c
> @@ -139,8 +139,6 @@ void ceph_osdc_release_request(struct kref *kref)
> 
>  	if (req->r_request)
>  		ceph_msg_put(req->r_request);
> -	if (req->r_reply)
> -		ceph_msg_put(req->r_reply);
>  	if (req->r_con_filling_msg) {
>  		dout("release_request revoking pages %p from con %p\n",
>  		     req->r_pages, req->r_con_filling_msg);
> @@ -148,6 +146,8 @@ void ceph_osdc_release_request(struct kref *kref)
>  				      req->r_reply);
>  		ceph_con_put(req->r_con_filling_msg);
>  	}
> +	if (req->r_reply)
> +		ceph_msg_put(req->r_reply);
>  	if (req->r_own_pages)
>  		ceph_release_page_vector(req->r_pages,
>  					 req->r_num_pages);
> -- 
> 1.7.5.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux