[lvm-devel] master - cleanup: use struct pvcreate_restorable_params throughout
Peter Rajnoha
prajnoha at fedoraproject.org
Tue Feb 26 14:18:08 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=6d8de3638c3e715a1c0273e3fed9daf71a871685
Commit: 6d8de3638c3e715a1c0273e3fed9daf71a871685
Parent: 6692b177777501532ba0d422dcb2a22016405519
Author: Peter Rajnoha <prajnoha at redhat.com>
AuthorDate: Mon Feb 18 12:47:31 2013 +0100
Committer: Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Tue Feb 26 11:25:11 2013 +0100
cleanup: use struct pvcreate_restorable_params throughout
---
lib/format1/format1.c | 21 +++++++++++++--------
lib/format_pool/format_pool.c | 4 +---
lib/format_text/format-text.c | 18 ++++++++----------
lib/metadata/metadata-exported.h | 9 ++++-----
lib/metadata/metadata.c | 31 +++++++++++++------------------
lib/metadata/metadata.h | 5 +----
tools/toollib.c | 4 ++--
tools/vgconvert.c | 15 +++++++++------
8 files changed, 51 insertions(+), 56 deletions(-)
diff --git a/lib/format1/format1.c b/lib/format1/format1.c
index bf5333e..335a7e2 100644
--- a/lib/format1/format1.c
+++ b/lib/format1/format1.c
@@ -339,11 +339,9 @@ static int _format1_pv_read(const struct format_type *fmt, const char *pv_name,
static int _format1_pv_initialise(const struct format_type * fmt,
int64_t label_sector __attribute__((unused)),
- uint64_t pe_start,
- uint32_t extent_count,
- uint32_t extent_size,
unsigned long data_alignment __attribute__((unused)),
unsigned long data_alignment_offset __attribute__((unused)),
+ struct pvcreate_restorable_params *rp,
struct physical_volume * pv)
{
if (pv->size > MAX_PV_SIZE)
@@ -355,18 +353,18 @@ static int _format1_pv_initialise(const struct format_type * fmt,
}
/* Nothing more to do if extent size isn't provided */
- if (!extent_size)
+ if (!rp->extent_size)
return 1;
/*
* This works out pe_start and pe_count.
*/
- if (!calculate_extent_count(pv, extent_size, extent_count, pe_start))
+ if (!calculate_extent_count(pv, rp->extent_size, rp->extent_count, rp->pe_start))
return_0;
/* Retain existing extent locations exactly */
- if (((pe_start || extent_count) && (pe_start != pv->pe_start)) ||
- (extent_count && (extent_count != pv->pe_count))) {
+ if (((rp->pe_start || rp->extent_count) && (rp->pe_start != pv->pe_start)) ||
+ (rp->extent_count && (rp->extent_count != pv->pe_count))) {
log_error("Metadata would overwrite physical extents");
return 0;
}
@@ -378,7 +376,14 @@ static int _format1_pv_setup(const struct format_type *fmt,
struct physical_volume *pv,
struct volume_group *vg)
{
- return _format1_pv_initialise(fmt, -1, 0, 0, vg->extent_size, 0, 0, pv);
+ struct pvcreate_restorable_params rp = {.restorefile = NULL,
+ .id = {{0}},
+ .idp = NULL,
+ .pe_start = 0,
+ .extent_count = 0,
+ .extent_size = vg->extent_size};
+
+ return _format1_pv_initialise(fmt, -1, 0, 0, &rp, pv);
}
static int _format1_lv_setup(struct format_instance *fid, struct logical_volume *lv)
diff --git a/lib/format_pool/format_pool.c b/lib/format_pool/format_pool.c
index 04bc4cf..c051968 100644
--- a/lib/format_pool/format_pool.c
+++ b/lib/format_pool/format_pool.c
@@ -165,11 +165,9 @@ bad:
static int _pool_pv_initialise(const struct format_type *fmt __attribute__((unused)),
int64_t label_sector __attribute__((unused)),
- uint64_t pe_start __attribute__((unused)),
- uint32_t extent_count __attribute__((unused)),
- uint32_t extent_size __attribute__((unused)),
unsigned long data_alignment __attribute__((unused)),
unsigned long data_alignment_offset __attribute__((unused)),
+ struct pvcreate_restorable_params *rp __attribute__((unused)),
struct physical_volume *pv __attribute__((unused)))
{
return 1;
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index cf15313..a769daf 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -1466,19 +1466,17 @@ static int _text_pv_read(const struct format_type *fmt, const char *pv_name,
static int _text_pv_initialise(const struct format_type *fmt,
const int64_t label_sector,
- uint64_t pe_start,
- uint32_t extent_count,
- uint32_t extent_size,
unsigned long data_alignment,
unsigned long data_alignment_offset,
+ struct pvcreate_restorable_params *rp,
struct physical_volume *pv)
{
/*
* Try to keep the value of PE start set to a firm value if requested.
* This is usefull when restoring existing PE start value (backups etc.).
*/
- if (pe_start != PV_PE_START_CALC)
- pv->pe_start = pe_start;
+ if (rp->pe_start != PV_PE_START_CALC)
+ pv->pe_start = rp->pe_start;
if (!data_alignment)
data_alignment = find_config_tree_int(pv->fmt->cmd,
@@ -1514,14 +1512,14 @@ static int _text_pv_initialise(const struct format_type *fmt,
return 0;
}
- if (pe_start == PV_PE_START_CALC)
+ if (rp->pe_start == PV_PE_START_CALC)
pv->pe_start = pv->pe_align + pv->pe_align_offset;
- if (extent_size)
- pv->pe_size = extent_size;
+ if (rp->extent_size)
+ pv->pe_size = rp->extent_size;
- if (extent_count)
- pv->pe_count = extent_count;
+ if (rp->extent_count)
+ pv->pe_count = rp->extent_count;
if ((pv->pe_start + pv->pe_count * pv->pe_size - 1) > (pv->size << SECTOR_SHIFT)) {
log_error("Physical extents end beyond end of device %s.",
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 1f77ce9..5c8a6df 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -391,6 +391,8 @@ struct lv_list {
struct logical_volume *lv;
};
+#define PV_PE_START_CALC ((uint64_t) -1) /* Calculate pe_start value */
+
struct pvcreate_restorable_params {
const char *restorefile; /* 0 if no --restorefile option */
struct id id; /* FIXME: redundant */
@@ -477,17 +479,14 @@ uint32_t vg_read_error(struct volume_group *vg_handle);
* areas can avoid overlap */
struct physical_volume *pv_create(const struct cmd_context *cmd,
struct device *dev,
- struct id *id,
uint64_t size,
unsigned long data_alignment,
unsigned long data_alignment_offset,
- uint64_t pe_start,
- uint32_t existing_extent_count,
- uint32_t existing_extent_size,
uint64_t label_sector,
unsigned pvmetadatacopies,
uint64_t pvmetadatasize,
- unsigned metadataignore);
+ unsigned metadataignore,
+ struct pvcreate_restorable_params *rp);
int pv_resize(struct physical_volume *pv, struct volume_group *vg,
uint64_t size);
int pv_analyze(struct cmd_context *cmd, const char *pv_name,
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 025329f..2c071b0 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -1430,7 +1430,7 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp)
pp->metadataignore = DEFAULT_PVMETADATAIGNORE;
pp->rp.restorefile = 0;
pp->rp.idp = 0;
- pp->rp.pe_start = 0;
+ pp->rp.pe_start = PV_PE_START_CALC;
pp->rp.extent_count = 0;
pp->rp.extent_size = 0;
}
@@ -1530,12 +1530,10 @@ struct physical_volume * pvcreate_single(struct cmd_context *cmd,
dm_list_init(&mdas);
- if (!(pv = pv_create(cmd, dev, pp->rp.idp, pp->size,
- pp->data_alignment, pp->data_alignment_offset,
- pp->rp.pe_start ? pp->rp.pe_start : PV_PE_START_CALC,
- pp->rp.extent_count, pp->rp.extent_size,
- pp->labelsector, pp->pvmetadatacopies,
- pp->pvmetadatasize, pp->metadataignore))) {
+ if (!(pv = pv_create(cmd, dev, pp->size, pp->data_alignment,
+ pp->data_alignment_offset, pp->labelsector,
+ pp->pvmetadatacopies, pp->pvmetadatasize,
+ pp->metadataignore, &pp->rp))) {
log_error("Failed to setup physical volume \"%s\"", pv_name);
goto bad;
}
@@ -1602,16 +1600,14 @@ static struct physical_volume *_alloc_pv(struct dm_pool *mem, struct device *dev
*/
struct physical_volume *pv_create(const struct cmd_context *cmd,
struct device *dev,
- struct id *id, uint64_t size,
+ uint64_t size,
unsigned long data_alignment,
unsigned long data_alignment_offset,
- uint64_t pe_start,
- uint32_t existing_extent_count,
- uint32_t existing_extent_size,
uint64_t label_sector,
unsigned pvmetadatacopies,
uint64_t pvmetadatasize,
- unsigned metadataignore)
+ unsigned metadataignore,
+ struct pvcreate_restorable_params *rp)
{
const struct format_type *fmt = cmd->fmt;
struct dm_pool *mem = fmt->orphan_vg->vgmem;
@@ -1622,8 +1618,8 @@ struct physical_volume *pv_create(const struct cmd_context *cmd,
if (!pv)
return_NULL;
- if (id)
- memcpy(&pv->id, id, sizeof(*id));
+ if (rp->idp)
+ memcpy(&pv->id, rp->idp, sizeof(*rp->idp));
else if (!id_create(&pv->id)) {
log_error("Failed to create random uuid for %s.",
dev_name(dev));
@@ -1669,9 +1665,8 @@ struct physical_volume *pv_create(const struct cmd_context *cmd,
pv->fmt = fmt;
pv->vg_name = fmt->orphan_vg_name;
- if (!fmt->ops->pv_initialise(fmt, label_sector, pe_start,
- existing_extent_count, existing_extent_size,
- data_alignment, data_alignment_offset, pv)) {
+ if (!fmt->ops->pv_initialise(fmt, label_sector, data_alignment,
+ data_alignment_offset, rp, pv)) {
log_error("Format-specific initialisation of physical "
"volume %s failed.", pv_dev_name(pv));
goto bad;
@@ -1680,7 +1675,7 @@ struct physical_volume *pv_create(const struct cmd_context *cmd,
for (mda_index = 0; mda_index < pvmetadatacopies; mda_index++) {
if (pv->fmt->ops->pv_add_metadata_area &&
!pv->fmt->ops->pv_add_metadata_area(pv->fmt, pv,
- pe_start != PV_PE_START_CALC,
+ rp->pe_start != PV_PE_START_CALC,
mda_index, pvmetadatasize,
metadataignore)) {
log_error("Failed to add metadata area for "
diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h
index 830c0e1..f7b3409 100644
--- a/lib/metadata/metadata.h
+++ b/lib/metadata/metadata.h
@@ -35,7 +35,6 @@
//#define MAX_RESTRICTED_LVS 255 /* Used by FMT_RESTRICTED_LVIDS */
#define MIRROR_LOG_OFFSET 2 /* sectors */
#define VG_MEMPOOL_CHUNK 10240 /* in bytes, hint only */
-#define PV_PE_START_CALC ((uint64_t) -1) /* Calculate pe_start value */
/*
* Ceiling(n / sz)
@@ -251,11 +250,9 @@ struct format_handler {
*/
int (*pv_initialise) (const struct format_type * fmt,
int64_t label_sector,
- uint64_t pe_start,
- uint32_t extent_count,
- uint32_t extent_size,
unsigned long data_alignment,
unsigned long data_alignment_offset,
+ struct pvcreate_restorable_params *rp,
struct physical_volume * pv);
/*
diff --git a/tools/toollib.c b/tools/toollib.c
index c3c4dbe..3717bde 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1451,7 +1451,7 @@ int pvcreate_params_validate(struct cmd_context *cmd,
return 0;
}
- if (pp->data_alignment && pp->rp.pe_start) {
+ if (pp->data_alignment && pp->rp.pe_start != PV_PE_START_CALC) {
if (pp->rp.pe_start % pp->data_alignment)
log_warn("WARNING: Ignoring data alignment %" PRIu64
" incompatible with --restorefile value (%"
@@ -1470,7 +1470,7 @@ int pvcreate_params_validate(struct cmd_context *cmd,
return 0;
}
- if (pp->data_alignment_offset && pp->rp.pe_start) {
+ if (pp->data_alignment_offset && pp->rp.pe_start != PV_PE_START_CALC) {
log_warn("WARNING: Ignoring data alignment offset %" PRIu64
" incompatible with --restorefile value (%"
PRIu64").", pp->data_alignment_offset, pp->rp.pe_start);
diff --git a/tools/vgconvert.c b/tools/vgconvert.c
index 2ba4095..85f68f2 100644
--- a/tools/vgconvert.c
+++ b/tools/vgconvert.c
@@ -20,11 +20,11 @@ static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
void *handle __attribute__((unused)))
{
struct physical_volume *pv, *existing_pv;
+ struct pvcreate_restorable_params rp;
struct logical_volume *lv;
struct lv_list *lvl;
int pvmetadatacopies = 0;
uint64_t pvmetadatasize = 0;
- uint64_t pe_start = 0;
struct pv_list *pvl;
int change_made = 0;
struct lvinfo info;
@@ -116,16 +116,19 @@ static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
dm_list_iterate_items(pvl, &vg->pvs) {
existing_pv = pvl->pv;
- pe_start = pv_pe_start(existing_pv);
+ rp.id = existing_pv->id;
+ rp.idp = &rp.id;
+ rp.pe_start = pv_pe_start(existing_pv);
+ rp.extent_count = pv_pe_count(existing_pv);
+ rp.extent_size = pv_pe_size(existing_pv);
+
/* pe_end = pv_pe_count(existing_pv) * pv_pe_size(existing_pv) + pe_start - 1; */
if (!(pv = pv_create(cmd, pv_dev(existing_pv),
- &existing_pv->id, 0, 0, 0,
- pe_start, pv_pe_count(existing_pv),
- pv_pe_size(existing_pv),
+ 0, 0, 0,
arg_int64_value(cmd, labelsector_ARG,
DEFAULT_LABELSECTOR),
- pvmetadatacopies, pvmetadatasize, 0))) {
+ pvmetadatacopies, pvmetadatasize, 0, &rp))) {
log_error("Failed to setup physical volume \"%s\"",
pv_dev_name(existing_pv));
if (change_made)
More information about the lvm-devel
mailing list