summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-05-02 04:37:07 +0200
committerAlex Elder <elder@inktank.com>2013-05-02 19:15:28 +0200
commitb5b09be30cf99f9c699e825629f02e3bce555d44 (patch)
treee0fde7c77f9d6d2c5acbae75bb03004cbd9aaf46
parentlibceph: use slab cache for osd client requests (diff)
downloadlinux-b5b09be30cf99f9c699e825629f02e3bce555d44.tar.xz
linux-b5b09be30cf99f9c699e825629f02e3bce555d44.zip
rbd: fix image request leak on parent read
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> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r--drivers/block/rbd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 390946a078be..c2ca1818f335 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);
}