[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ceph-devel
Subject:    Re: [PATCH 04/11] rbd: more cleanup in rbd_header_from_disk()
From:       Yehuda Sadeh <yehuda () inktank ! com>
Date:       2012-08-30 16:48:52
Message-ID: CAC-hyiG0qrb7TxxopW36DeQ_3HSU=mcKS9VvQ32S2CU2tY9hNQ () mail ! gmail ! com
[Download RAW message or body]

Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>

On Fri, Aug 24, 2012 at 9:33 AM, Alex Elder <elder@inktank.com> wrote:
> This just rearranges things a bit more in rbd_header_from_disk()
> so that the snapshot sizes are initialized right after the buffer
> to hold them is allocated, and doing a little further consolidation
> that follows from that.  It also adds a few simple comments.
>
> Signed-off-by: Alex Elder <elder@inktank.com>
> ---
>  drivers/block/rbd.c |   26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 7b3d861..130dbc2 100644
> --- a/drivers/block/rbd.c
> +++ b/drivers/block/rbd.c
> @@ -520,6 +520,7 @@ static int rbd_header_from_disk(struct
> rbd_image_header *header,
>         u32 snap_count;
>         size_t len;
>         size_t size;
> +       u32 i;
>
>         memset(header, 0, sizeof (*header));
>
> @@ -535,6 +536,8 @@ static int rbd_header_from_disk(struct
> rbd_image_header *header,
>         if (snap_count) {
>                 u64 snap_names_len = le64_to_cpu(ondisk->snap_names_len);
>
> +               /* Save a copy of the snapshot names */
> +
>                 BUG_ON(snap_names_len > (u64) SIZE_MAX);
>                 header->snap_names = kmalloc(snap_names_len, GFP_KERNEL);
>                 if (!header->snap_names)
> @@ -542,10 +545,15 @@ static int rbd_header_from_disk(struct
> rbd_image_header *header,
>                 memcpy(header->snap_names, &ondisk->snaps[snap_count],
>                         snap_names_len);
>
> +               /* Record each snapshot's size */
> +
>                 size = snap_count * sizeof (*header->snap_sizes);
>                 header->snap_sizes = kmalloc(size, GFP_KERNEL);
>                 if (!header->snap_sizes)
>                         goto out_err;
> +               for (i = 0; i < snap_count; i++)
> +                       header->snap_sizes[i] =
> +                               le64_to_cpu(ondisk->snaps[i].image_size);
>         } else {
>                 WARN_ON(ondisk->snap_names_len);
>                 header->snap_names = NULL;
> @@ -558,6 +566,8 @@ static int rbd_header_from_disk(struct
> rbd_image_header *header,
>         header->comp_type = ondisk->options.comp_type;
>         header->total_snaps = snap_count;
>
> +       /* Allocate and fill in the snapshot context */
> +
>         size = sizeof (struct ceph_snap_context);
>         size += snap_count * sizeof (header->snapc->snaps[0]);
>         header->snapc = kzalloc(size, GFP_KERNEL);
> @@ -567,19 +577,9 @@ static int rbd_header_from_disk(struct
> rbd_image_header *header,
>         atomic_set(&header->snapc->nref, 1);
>         header->snapc->seq = le64_to_cpu(ondisk->snap_seq);
>         header->snapc->num_snaps = snap_count;
> -
> -       /* Fill in the snapshot information */
> -
> -       if (snap_count) {
> -               u32 i;
> -
> -               for (i = 0; i < snap_count; i++) {
> -                       header->snapc->snaps[i] =
> -                               le64_to_cpu(ondisk->snaps[i].id);
> -                       header->snap_sizes[i] =
> -                               le64_to_cpu(ondisk->snaps[i].image_size);
> -               }
> -       }
> +       for (i = 0; i < snap_count; i++)
> +               header->snapc->snaps[i] =
> +                       le64_to_cpu(ondisk->snaps[i].id);
>
>         return 0;
>
> --
> 1.7.9.5
>
> --
> 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
--
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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic