[lvm-devel] [PATCH 1/6] Add --dataalignmentoffset to pvcreate to pad aligned data area
Alasdair G Kergon
agk at redhat.com
Thu Jul 16 15:11:53 UTC 2009
On Mon, Jul 13, 2009 at 04:11:17PM -0400, Mike Snitzer wrote:
> When setting up the first mda, format-text.c:_mda_setup now sets the
> pe_start to immediately follow the first mda (which ends at a pe_align
> boundry). data_alignment_offset will be added to pe_start if
> --dataalignmentoffset was used.
The reason this cannot be reviewed easily is this:
> Index: LVM2/lib/format_text/format-text.c
> ===================================================================
> --- LVM2.orig/lib/format_text/format-text.c
> +++ LVM2/lib/format_text/format-text.c
> @@ -1175,6 +1175,7 @@ static int _text_scan(const struct forma
> Always have an mda between end-of-label and pe_align() boundary */
> static int _mda_setup(const struct format_type *fmt,
> uint64_t pe_start, uint64_t pe_end,
> + unsigned long data_alignment_offset,
> int pvmetadatacopies,
> uint64_t pvmetadatasize, struct dm_list *mdas,
> struct physical_volume *pv,
> @@ -1251,6 +1252,16 @@ static int _mda_setup(const struct forma
> return 0;
> }
>
> + if (!pe_start && !pe_end) {
> + /*
> + * Set PV's pe_start to immediately follow the
> + * first mda (which ends at a pe_align boundary)
> + */
> + pv->pe_start = (start1 + mda_size1) >> SECTOR_SHIFT;
> + if (data_alignment_offset)
> + pv->pe_start += data_alignment_offset;
> + }
> +
> if (pvmetadatacopies == 1)
> return 1;
> } else
While the code already has elsewhere (_text_pv_write):
/*
* If pe_start is still unset, set it to first aligned
* sector after any metadata areas that begin before pe_start.
*/
if (!pv->pe_start)
pv->pe_start = pv->pe_align;
Further explanation is required to understand how both can be correct.
Alasdair
More information about the lvm-devel
mailing list