[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