From: Alex Elder <elder@ieee.org>
To: Ilya Dryomov <ilya.dryomov@inktank.com>, ceph-devel@vger.kernel.org
Subject: Re: [PATCH 6/8] rbd: update mapping size only on refresh
Date: Thu, 24 Jul 2014 08:25:21 -0500 [thread overview]
Message-ID: <53D10941.2050205@ieee.org> (raw)
In-Reply-To: <1406191369-6746-7-git-send-email-ilya.dryomov@inktank.com>
On 07/24/2014 03:42 AM, Ilya Dryomov wrote:
> There is no sense in trying to update the mapping size before it's even
> been set.
It took me a bit to follow this. But basically there is
no mapping unless it's mapped. So previously this was
updating the mapping information even for unmapped
parent (or other) images. There's no need to update
the mapping size for a snapshot--it'll never change.
Is that right? If not, please advise; otherwise:
Reviewed-by: Alex Elder <elder@linaro.org>
> Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
> ---
> drivers/block/rbd.c | 19 +++++++------------
> 1 file changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 5dd6f5057ef4..16f388f2960b 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -971,12 +971,6 @@ static int rbd_header_from_disk(struct rbd_device *rbd_dev,
> header->snap_names = snap_names;
> header->snap_sizes = snap_sizes;
>
> - /* Make sure mapping size is consistent with header info */
> -
> - if (rbd_dev->spec->snap_id == CEPH_NOSNAP || first_time)
> - if (rbd_dev->mapping.size != header->image_size)
> - rbd_dev->mapping.size = header->image_size;
> -
> return 0;
> out_2big:
> ret = -EIO;
> @@ -3520,9 +3514,14 @@ static int rbd_dev_refresh(struct rbd_device *rbd_dev)
>
> ret = rbd_dev_header_info(rbd_dev);
>
> - /* If it's a mapped snapshot, validate its EXISTS flag */
> + if (rbd_dev->spec->snap_id == CEPH_NOSNAP) {
> + if (rbd_dev->mapping.size != rbd_dev->header.image_size)
> + rbd_dev->mapping.size = rbd_dev->header.image_size;
> + } else {
> + /* validate mapped snapshot's EXISTS flag */
> + rbd_exists_validate(rbd_dev);
> + }
>
> - rbd_exists_validate(rbd_dev);
> up_write(&rbd_dev->header_rwsem);
>
> if (mapping_size != rbd_dev->mapping.size) {
> @@ -4505,10 +4504,6 @@ static int rbd_dev_v2_header_info(struct rbd_device *rbd_dev)
> "is EXPERIMENTAL!");
> }
>
> - if (rbd_dev->spec->snap_id == CEPH_NOSNAP)
> - if (rbd_dev->mapping.size != rbd_dev->header.image_size)
> - rbd_dev->mapping.size = rbd_dev->header.image_size;
> -
> ret = rbd_dev_v2_snap_context(rbd_dev);
> dout("rbd_dev_v2_snap_context returned %d\n", ret);
>
>
next prev parent reply other threads:[~2014-07-24 13:25 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-24 8:42 [PATCH 0/8] wip-overlap Ilya Dryomov
2014-07-24 8:42 ` [PATCH 1/8] rbd: show the entire chain of parent images Ilya Dryomov
2014-07-24 12:31 ` Alex Elder
2014-07-24 12:45 ` Ilya Dryomov
2014-07-24 8:42 ` [PATCH 2/8] rbd: introduce rbd_dev_header_info() Ilya Dryomov
2014-07-24 12:34 ` Alex Elder
2014-07-24 8:42 ` [PATCH 3/8] rbd: remove unnecessary asserts in rbd_dev_image_probe() Ilya Dryomov
2014-07-24 12:40 ` Alex Elder
2014-07-24 8:42 ` [PATCH 4/8] rbd: split rbd_dev_spec_update() into two functions Ilya Dryomov
2014-07-24 12:55 ` Alex Elder
2014-07-24 8:42 ` [PATCH 5/8] rbd: harden rbd_dev_refresh() caller Ilya Dryomov
2014-07-24 13:09 ` Alex Elder
2014-07-24 8:42 ` [PATCH 6/8] rbd: update mapping size only on refresh Ilya Dryomov
2014-07-24 13:25 ` Alex Elder [this message]
2014-07-24 13:46 ` Ilya Dryomov
2014-07-24 15:10 ` Ilya Dryomov
2014-07-25 13:31 ` Alex Elder
2014-07-24 17:59 ` Alex Elder
2014-07-24 8:42 ` [PATCH 7/8] rbd: do not read in parent info before snap context Ilya Dryomov
2014-07-25 8:14 ` Alex Elder
2014-07-25 8:36 ` Ilya Dryomov
2014-07-25 12:46 ` Alex Elder
2014-07-24 8:42 ` [PATCH 8/8] rbd: take snap_id into account when reading in parent info Ilya Dryomov
2014-07-24 18:43 ` Alex Elder
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=53D10941.2050205@ieee.org \
--to=elder@ieee.org \
--cc=ceph-devel@vger.kernel.org \
--cc=ilya.dryomov@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.