All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Elder <alex.elder@linaro.org>
To: Josh Durgin <josh.durgin@inktank.com>
Cc: ceph-devel@vger.kernel.org
Subject: Re: [PATCH] rbd: fix buffer size for writes to images with snapshots
Date: Thu, 29 Aug 2013 09:31:55 -0500	[thread overview]
Message-ID: <521F5B5B.40205@linaro.org> (raw)
In-Reply-To: <1377641215-29459-1-git-send-email-josh.durgin@inktank.com>

On 08/27/2013 05:06 PM, Josh Durgin wrote:
> rbd_osd_req_create() needs to know the snapshot context size to create
> a buffer large enough to send it with the message front. It gets this
> from the img_request, which was not set for the obj_request yet. This
> resulted in trying to write past the end of the front payload, hitting
> this BUG:
> 
> libceph: BUG_ON(p > msg->front.iov_base + msg->front.iov_len);
> 
> Fix this by associating the obj_request with its img_request
> immediately after it's created, before the osd request is created.
> 
> Fixes: http://tracker.ceph.com/issues/5760
> Suggested-by: Alex Elder <alex.elder@linaro.org>

I must have suggested it in e-mail...  I guess I should have updated
the bug.

This looks good.

Reviewed-by: Alex Elder <elder@linaro.org>

> Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
> ---
>  drivers/block/rbd.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index f8fd7d3..80f787b 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -2203,6 +2203,11 @@ static int rbd_img_request_fill(struct rbd_img_request *img_request,
>  		rbd_segment_name_free(object_name);
>  		if (!obj_request)
>  			goto out_unwind;
> +		/*
> +		 * set obj_request->img_request before creating the
> +		 * osd_request so that it gets the right snapc
> +		 */
> +		rbd_img_obj_request_add(img_request, obj_request);
>  
>  		if (type == OBJ_REQUEST_BIO) {
>  			unsigned int clone_size;
> @@ -2244,11 +2249,6 @@ static int rbd_img_request_fill(struct rbd_img_request *img_request,
>  					obj_request->pages, length,
>  					offset & ~PAGE_MASK, false, false);
>  
> -		/*
> -		 * set obj_request->img_request before formatting
> -		 * the osd_request so that it gets the right snapc
> -		 */
> -		rbd_img_obj_request_add(img_request, obj_request);
>  		if (write_request)
>  			rbd_osd_req_format_write(obj_request);
>  		else
> 


      reply	other threads:[~2013-08-29 14:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-27 22:06 [PATCH] rbd: fix buffer size for writes to images with snapshots Josh Durgin
2013-08-29 14:31 ` Alex Elder [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=521F5B5B.40205@linaro.org \
    --to=alex.elder@linaro.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=josh.durgin@inktank.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.