diff mbox

rbd: fix image request leak on parent read

Message ID 5182532C.80400@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder May 2, 2013, 11:51 a.m. UTC
When a read for a layered image object finds the target object
doesn't exist, a read image request for the parent image is created
and submitted.  When that completes, the callback routine was
not releasing that parent image request.  Fix that.

The slab allocation stuff just added has greatly simplified the
search for the source of this memory leak.

This resolves:
    http://tracker.ceph.com/issues/4803

Signed-off-by: Alex Elder <elder@inktank.com>
---
 drivers/block/rbd.c |    1 +
 1 file changed, 1 insertion(+)

 }

Comments

Josh Durgin May 2, 2013, 5:06 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 05/02/2013 04:51 AM, Alex Elder wrote:
> When a read for a layered image object finds the target object
> doesn't exist, a read image request for the parent image is created
> and submitted.  When that completes, the callback routine was
> not releasing that parent image request.  Fix that.
>
> The slab allocation stuff just added has greatly simplified the
> search for the source of this memory leak.
>
> This resolves:
>      http://tracker.ceph.com/issues/4803
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   drivers/block/rbd.c |    1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 8d9aeef..d669f71 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2547,6 +2547,7 @@ static void rbd_img_parent_read_callback(struct
> rbd_img_request *img_request)
>   		obj_request->xferred = img_request->xferred;
>   	}
>   out:
> +	rbd_img_request_put(img_request);
>   	rbd_img_obj_request_read_callback(obj_request);
>   	rbd_obj_request_complete(obj_request);
>   }
>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 8d9aeef..d669f71 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2547,6 +2547,7 @@  static void rbd_img_parent_read_callback(struct
rbd_img_request *img_request)
 		obj_request->xferred = img_request->xferred;
 	}
 out:
+	rbd_img_request_put(img_request);
 	rbd_img_obj_request_read_callback(obj_request);
 	rbd_obj_request_complete(obj_request);