[lvm-devel] Re: data alignment of structures with 'status'

Mike Snitzer snitzer at redhat.com
Tue Nov 24 13:21:25 UTC 2009


On Mon, Nov 23 2009 at  6:44pm -0500,
Alasdair G Kergon <agk at redhat.com> wrote:

> On Mon, Nov 23, 2009 at 06:23:45PM -0500, Mike Snitzer wrote:
> > /* Moving 'extents_copied' from after 'region_size' to after 'area_len' */
> > struct lv_segment {
> >         struct dm_list             list;                 /*     0    16 */
> >         struct logical_volume *    lv;                   /*    16     8 */
> >         const struct segment_type  * segtype;            /*    24     8 */
> >         uint32_t                   le;                   /*    32     4 */
> >         uint32_t                   len;                  /*    36     4 */
> >         uint64_t                   status;               /*    40     8 */
> >         uint32_t                   stripe_size;          /*    48     4 */
> >         uint32_t                   area_count;           /*    52     4 */
> >         uint32_t                   area_len;             /*    56     4 */
> 
> >         uint32_t                   extents_copied;       /*    60     4 */
> 
> But it doesn't logically fit there - it's a mirror field not an all-areas one
> or a snapshot one.  I'm only arguing for packing things efficiently
> if it can be done while keeping groups of related fields together (and
> normally it can be).
> 
> How about moving chunk_size from the end of the group of snapshot fields
> to the front instead?  I.e. rotating 3 uint32_t fields in what you've posted
> here.

Your chunk_size suggestion works perfectly.  I'll run with that.

Mike




More information about the lvm-devel mailing list