1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

Preserve pe_start in .pv_setup and .pv_write if pe_start was supplied.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Mike Snitzer 2009-07-30 17:42:33 +00:00
parent c8a4e489c1
commit d01a37f597
2 changed files with 14 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.51 -
================================
Preserve pe_start in .pv_setup and .pv_write if pe_start was supplied.
Fix _mda_setup() to not check first mda's size before pe_align rounding.
Formalize pe_start policy as split between .pv_setup and .pv_write.
Document -I option of clvmd in the man page.

View File

@ -1368,11 +1368,16 @@ static int _text_pv_write(const struct format_type *fmt, struct physical_volume
else
dm_list_init(&info->das);
if (pv->pe_start) {
log_very_verbose("%s: preserving pe_start=%lu",
pv_dev_name(pv), pv->pe_start);
goto preserve_pe_start;
}
/*
* 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;
dm_list_iterate_items(mda, &info->mdas) {
mdac = (struct mda_context *) mda->metadata_locn;
@ -1389,6 +1394,8 @@ static int _text_pv_write(const struct format_type *fmt, struct physical_volume
pv->pe_start += pv->pe_align - adjustment;
}
}
preserve_pe_start:
if (!add_da
(NULL, &info->das, pv->pe_start << SECTOR_SHIFT, UINT64_C(0)))
return_0;
@ -1700,8 +1707,10 @@ static int _text_pv_setup(const struct format_type *fmt,
/* FIXME Default from config file? vgextend cmdline flag? */
pv->status |= ALLOCATABLE_PV;
} else {
if (pe_start)
if (pe_start) {
pv->pe_start = pe_start;
goto preserve_pe_start;
}
if (!data_alignment)
data_alignment = find_config_tree_int(pv->fmt->cmd,
@ -1714,6 +1723,7 @@ static int _text_pv_setup(const struct format_type *fmt,
"%lu sectors (requested %lu sectors)",
pv_dev_name(pv), pv->pe_align, data_alignment);
preserve_pe_start:
if (extent_count)
pe_end = pe_start + extent_count * extent_size - 1;
if (!_mda_setup(fmt, pe_start, pe_end, pvmetadatacopies,