diff mbox

[01/20] rbd: define inbound data size for method ops

Message ID 515ED92A.2010301@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder April 5, 2013, 2:01 p.m. UTC
When rbd creates an object request containing an object method call
operation it is passing 0 for the size.  I originally thought this
was because the length was not needed for method calls, but I think
it really should be supplied, to describe how much space is
available to receive response data.  So provide the supplied length.

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

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

 	pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
@@ -1852,7 +1851,7 @@ static int rbd_obj_method_sync(struct rbd_device
*rbd_dev,
 		return PTR_ERR(pages);

 	ret = -ENOMEM;
-	obj_request = rbd_obj_request_create(object_name, 0, 0,
+	obj_request = rbd_obj_request_create(object_name, 0, inbound_size,
 							OBJ_REQUEST_PAGES);
 	if (!obj_request)
 		goto out;

Comments

Josh Durgin April 5, 2013, 6:13 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 04/05/2013 07:01 AM, Alex Elder wrote:
> When rbd creates an object request containing an object method call
> operation it is passing 0 for the size.  I originally thought this
> was because the length was not needed for method calls, but I think
> it really should be supplied, to describe how much space is
> available to receive response data.  So provide the supplied length.
>
> This resolves:
>      http://tracker.ceph.com/issues/4659
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>   drivers/block/rbd.c |   13 ++++++-------
>   1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 9fb51b5..5e579fa 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -1839,12 +1839,11 @@ static int rbd_obj_method_sync(struct rbd_device
> *rbd_dev,
>   	int ret;
>
>   	/*
> -	 * Method calls are ultimately read operations but they
> -	 * don't involve object data (so no offset or length).
> -	 * The result should placed into the inbound buffer
> -	 * provided.  They also supply outbound data--parameters for
> -	 * the object method.  Currently if this is present it will
> -	 * be a snapshot id.
> +	 * Method calls are ultimately read operations.  The result
> +	 * should placed into the inbound buffer provided.  They
> +	 * also supply outbound data--parameters for the object
> +	 * method.  Currently if this is present it will be a
> +	 * snapshot id.
>   	 */
>   	page_count = (u32) calc_pages_for(0, inbound_size);
>   	pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
> @@ -1852,7 +1851,7 @@ static int rbd_obj_method_sync(struct rbd_device
> *rbd_dev,
>   		return PTR_ERR(pages);
>
>   	ret = -ENOMEM;
> -	obj_request = rbd_obj_request_create(object_name, 0, 0,
> +	obj_request = rbd_obj_request_create(object_name, 0, inbound_size,
>   							OBJ_REQUEST_PAGES);
>   	if (!obj_request)
>   		goto out;
>

--
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 9fb51b5..5e579fa 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1839,12 +1839,11 @@  static int rbd_obj_method_sync(struct rbd_device
*rbd_dev,
 	int ret;

 	/*
-	 * Method calls are ultimately read operations but they
-	 * don't involve object data (so no offset or length).
-	 * The result should placed into the inbound buffer
-	 * provided.  They also supply outbound data--parameters for
-	 * the object method.  Currently if this is present it will
-	 * be a snapshot id.
+	 * Method calls are ultimately read operations.  The result
+	 * should placed into the inbound buffer provided.  They
+	 * also supply outbound data--parameters for the object
+	 * method.  Currently if this is present it will be a
+	 * snapshot id.
 	 */
 	page_count = (u32) calc_pages_for(0, inbound_size);