• I
    rbd: move bumping img_request refcount into rbd_obj_request_submit() · 4a17dadc
    Ilya Dryomov 提交于
    Commit 0f2d5be7 ("rbd: use reference counts for image requests")
    added rbd_img_request_get(), which rbd_img_request_fill() calls for
    each obj_request added to img_request.  It was an urgent band-aid for
    the uglyness that is rbd_img_obj_callback() and none of the error paths
    were updated.
    
    Given that this img_request reference is meant to represent an
    obj_request that hasn't passed through rbd_img_obj_callback() yet,
    proper cleanup in appropriate destructors is a challenge.  However,
    noting that if we don't get a chance to call rbd_obj_request_complete(),
    there is not going to be a call to rbd_img_obj_callback(), we can move
    rbd_img_request_get() into rbd_obj_request_submit() and fixup the two
    places that call rbd_obj_request_complete() directly and not through
    rbd_obj_request_submit() to temporarily bump img_request, so that
    rbd_img_obj_callback() can put as usual.
    
    This takes care of img_request leaks on errors on the submit side.
    Signed-off-by: NIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: NAlex Elder <elder@linaro.org>
    4a17dadc
rbd.c 166.6 KB