From: Josh Durgin <josh.durgin@inktank.com>
To: Alex Elder <elder@inktank.com>
Cc: ceph-devel@vger.kernel.org
Subject: Re: [PATCH 3/6] rbd: only update values on snap_info success
Date: Mon, 29 Apr 2013 08:15:21 -0700 [thread overview]
Message-ID: <517E8E89.7060804@inktank.com> (raw)
In-Reply-To: <517A6DAE.7010604@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
On 04/26/2013 05:06 AM, Alex Elder wrote:
> Change rbd_dev_v2_snap_info() so it only ever sets values of the
> size and features parameters if looking up the snapshot name was
> successful.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
> drivers/block/rbd.c | 24 +++++++++++++++++++-----
> 1 file changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 1e01f0d..e7d10d3 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -3908,6 +3908,7 @@ static char *rbd_dev_v2_snap_name(struct
> rbd_device *rbd_dev, u32 which)
> if (!reply_buf)
> return ERR_PTR(-ENOMEM);
>
> + rbd_assert(which < rbd_dev->header.snapc->num_snaps);
> snap_id = cpu_to_le64(rbd_dev->header.snapc->snaps[which]);
> ret = rbd_obj_method_sync(rbd_dev, rbd_dev->header_name,
> "rbd", "get_snapshot_name",
> @@ -3940,17 +3941,30 @@ static char *rbd_dev_v2_snap_info(struct
> rbd_device *rbd_dev, u32 which,
> u64 *snap_size, u64 *snap_features)
> {
> u64 snap_id;
> + u64 size;
> + u64 features;
> + char *snap_name;
> int ret;
>
> + rbd_assert(which < rbd_dev->header.snapc->num_snaps);
> snap_id = rbd_dev->header.snapc->snaps[which];
> - ret = _rbd_dev_v2_snap_size(rbd_dev, snap_id, NULL, snap_size);
> + ret = _rbd_dev_v2_snap_size(rbd_dev, snap_id, NULL, &size);
> if (ret)
> - return ERR_PTR(ret);
> - ret = _rbd_dev_v2_snap_features(rbd_dev, snap_id, snap_features);
> + goto out_err;
> +
> + ret = _rbd_dev_v2_snap_features(rbd_dev, snap_id, &features);
> if (ret)
> - return ERR_PTR(ret);
> + goto out_err;
> +
> + snap_name = rbd_dev_v2_snap_name(rbd_dev, which);
> + if (!IS_ERR(snap_name)) {
> + *snap_size = size;
> + *snap_features = features;
> + }
>
> - return rbd_dev_v2_snap_name(rbd_dev, which);
> + return snap_name;
> +out_err:
> + return ERR_PTR(ret);
> }
>
> static char *rbd_dev_snap_info(struct rbd_device *rbd_dev, u32 which,
>
next prev parent reply other threads:[~2013-04-29 15:15 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-26 12:04 [PATCH 0/6] rbd: cleanup and plug leaks Alex Elder
2013-04-26 12:05 ` [PATCH 1/6] rbd: fix leak of snapshots during initial probe Alex Elder
2013-04-29 15:12 ` Josh Durgin
2013-04-26 12:05 ` [PATCH 2/6] rbd: make snap_size order parameter optional Alex Elder
2013-04-29 15:14 ` Josh Durgin
2013-04-26 12:06 ` [PATCH 3/6] rbd: only update values on snap_info success Alex Elder
2013-04-29 15:15 ` Josh Durgin [this message]
2013-04-26 12:06 ` [PATCH 4/6] rbd: rename __rbd_add_snap_dev() Alex Elder
2013-04-29 15:15 ` Josh Durgin
2013-04-26 12:06 ` [PATCH 5/6] rbd: fix leak of format 2 snapshot names Alex Elder
2013-04-26 17:40 ` [PATCH 5/6, v2] " Alex Elder
2013-04-29 15:16 ` [PATCH 5/6] " Josh Durgin
2013-04-29 15:18 ` Josh Durgin
2013-04-26 12:06 ` [PATCH 6/6] rbd: use rbd_obj_method_sync() return value Alex Elder
2013-04-29 15:22 ` Josh Durgin
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=517E8E89.7060804@inktank.com \
--to=josh.durgin@inktank.com \
--cc=ceph-devel@vger.kernel.org \
--cc=elder@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.