From cdc08fcc6314cf8934929e2da44f3c6b9fb71059 Mon Sep 17 00:00:00 2001 From: Peter Rajnoha Date: Mon, 21 Feb 2011 12:15:59 +0000 Subject: [PATCH] Remove useless mdas parameter for pv_read (from now on, we store mdas in a format instance) --- lib/format1/format1.c | 3 +-- lib/format_pool/format_pool.c | 1 - lib/format_text/format-text.c | 15 +------------ lib/metadata/metadata-exported.h | 4 ++-- lib/metadata/metadata.c | 37 +++++++++++--------------------- lib/metadata/metadata.h | 3 +-- tools/pvremove.c | 10 ++++----- tools/pvresize.c | 8 +++---- tools/toollib.c | 14 ++++++------ 9 files changed, 31 insertions(+), 64 deletions(-) diff --git a/lib/format1/format1.c b/lib/format1/format1.c index 46f696a95..6ffe252a3 100644 --- a/lib/format1/format1.c +++ b/lib/format1/format1.c @@ -331,8 +331,7 @@ static int _format1_vg_write(struct format_instance *fid, struct volume_group *v } static int _format1_pv_read(const struct format_type *fmt, const char *pv_name, - struct physical_volume *pv, struct dm_list *mdas __attribute__((unused)), - int scan_label_only __attribute__((unused))) + struct physical_volume *pv, int scan_label_only __attribute__((unused))) { struct dm_pool *mem = dm_pool_create("lvm1 pv_read", 1024); struct disk_list *dl; diff --git a/lib/format_pool/format_pool.c b/lib/format_pool/format_pool.c index d49cb1bf4..85bd0cc02 100644 --- a/lib/format_pool/format_pool.c +++ b/lib/format_pool/format_pool.c @@ -206,7 +206,6 @@ static int _pool_pv_setup(const struct format_type *fmt __attribute__((unused)), static int _pool_pv_read(const struct format_type *fmt, const char *pv_name, struct physical_volume *pv, - struct dm_list *mdas __attribute__((unused)), int scan_label_only __attribute__((unused))) { struct dm_pool *mem = dm_pool_create("pool pv_read", 1024); diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c index a3d7dbc83..0204a651c 100644 --- a/lib/format_text/format-text.c +++ b/lib/format_text/format-text.c @@ -1668,10 +1668,8 @@ static uint64_t _metadata_locn_offset_raw(void *metadata_locn) } static int _text_pv_read(const struct format_type *fmt, const char *pv_name, - struct physical_volume *pv, struct dm_list *mdas, - int scan_label_only) + struct physical_volume *pv, int scan_label_only) { - struct metadata_area *mda, *mda_new; struct label *label; struct device *dev; struct lvmcache_info *info; @@ -1686,17 +1684,6 @@ static int _text_pv_read(const struct format_type *fmt, const char *pv_name, if (!_populate_pv_fields(info, pv, scan_label_only)) return 0; - if (!mdas) - return 1; - - /* Add copy of mdas to supplied list */ - dm_list_iterate_items(mda, &info->mdas) { - mda_new = mda_copy(fmt->cmd->mem, mda); - if (!mda_new) - return 0; - dm_list_add(mdas, &mda_new->list); - } - return 1; } diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index 1bd5748dc..a39a4d42a 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -368,8 +368,8 @@ int vg_revert(struct volume_group *vg); struct volume_group *vg_read_internal(struct cmd_context *cmd, const char *vg_name, const char *vgid, int warnings, int *consistent); struct physical_volume *pv_read(struct cmd_context *cmd, const char *pv_name, - struct dm_list *mdas, uint64_t *label_sector, - int warnings, int scan_label_only); + uint64_t *label_sector, int warnings, + int scan_label_only); struct dm_list *get_pvs(struct cmd_context *cmd); /* diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 904dc374b..9d5d29679 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -38,7 +38,6 @@ static struct physical_volume *_pv_read(struct cmd_context *cmd, struct dm_pool *pvmem, const char *pv_name, struct format_instance *fid, - struct dm_list *mdas, uint64_t *label_sector, int warnings, int scan_label_only); @@ -1338,14 +1337,11 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name, { struct physical_volume *pv; struct device *dev; - struct dm_list mdas; - - dm_list_init(&mdas); /* FIXME Check partition type is LVM unless --force is given */ /* Is there a pv here already? */ - pv = pv_read(cmd, name, &mdas, NULL, 0, 0); + pv = pv_read(cmd, name, NULL, 0, 0); /* * If a PV has no MDAs it may appear to be an orphan until the @@ -1353,10 +1349,10 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name, * this means checking every VG by scanning every PV on the * system. */ - if (pv && is_orphan(pv) && mdas_empty_or_ignored(&mdas)) { + if (pv && is_orphan(pv) && !dm_list_size(&pv->fid->metadata_areas_in_use)) { if (!scan_vgs_for_pvs(cmd, 0)) return_0; - pv = pv_read(cmd, name, NULL, NULL, 0, 0); + pv = pv_read(cmd, name, NULL, 0, 0); } /* Allow partial & exported VGs to be destroyed. */ @@ -1821,20 +1817,18 @@ struct physical_volume *find_pv_by_name(struct cmd_context *cmd, static struct physical_volume *_find_pv_by_name(struct cmd_context *cmd, const char *pv_name) { - struct dm_list mdas; struct physical_volume *pv; - dm_list_init(&mdas); - if (!(pv = _pv_read(cmd, cmd->mem, pv_name, NULL, &mdas, NULL, 1, 0))) { + if (!(pv = _pv_read(cmd, cmd->mem, pv_name, NULL, NULL, 1, 0))) { log_error("Physical volume %s not found", pv_name); return NULL; } - if (is_orphan_vg(pv->vg_name) && mdas_empty_or_ignored(&mdas)) { + if (is_orphan_vg(pv->vg_name) && !dm_list_size(&pv->fid->metadata_areas_in_use)) { /* If a PV has no MDAs - need to search all VGs for it */ if (!scan_vgs_for_pvs(cmd, 1)) return_NULL; - if (!(pv = _pv_read(cmd, cmd->mem, pv_name, NULL, NULL, NULL, 1, 0))) { + if (!(pv = _pv_read(cmd, cmd->mem, pv_name, NULL, NULL, 1, 0))) { log_error("Physical volume %s not found", pv_name); return NULL; } @@ -2659,8 +2653,8 @@ static struct volume_group *_vg_read_orphans(struct cmd_context *cmd, } dm_list_iterate_items(info, &vginfo->infos) { - if (!(pv = _pv_read(cmd, mem, dev_name(info->dev), vg->fid, - NULL, NULL, warnings, 0))) { + if (!(pv = _pv_read(cmd, mem, dev_name(info->dev), + vg->fid, NULL, warnings, 0))) { continue; } if (!(pvl = dm_pool_zalloc(mem, sizeof(*pvl)))) { @@ -3377,10 +3371,10 @@ const char *find_vgname_from_pvname(struct cmd_context *cmd, * FIXME - liblvm todo - make into function that returns handle */ struct physical_volume *pv_read(struct cmd_context *cmd, const char *pv_name, - struct dm_list *mdas, uint64_t *label_sector, - int warnings, int scan_label_only) + uint64_t *label_sector, int warnings, + int scan_label_only) { - return _pv_read(cmd, cmd->mem, pv_name, NULL, mdas, label_sector, warnings, scan_label_only); + return _pv_read(cmd, cmd->mem, pv_name, NULL, label_sector, warnings, scan_label_only); } /* FIXME Use label functions instead of PV functions */ @@ -3388,7 +3382,6 @@ static struct physical_volume *_pv_read(struct cmd_context *cmd, struct dm_pool *pvmem, const char *pv_name, struct format_instance *fid, - struct dm_list *mdas, uint64_t *label_sector, int warnings, int scan_label_only) { @@ -3419,8 +3412,7 @@ static struct physical_volume *_pv_read(struct cmd_context *cmd, } /* FIXME Move more common code up here */ - if (!(info->fmt->ops->pv_read(info->fmt, pv_name, pv, mdas, - scan_label_only))) { + if (!(info->fmt->ops->pv_read(info->fmt, pv_name, pv, scan_label_only))) { log_error("Failed to read existing physical volume '%s'", pv_name); goto bad; @@ -4258,8 +4250,5 @@ char *tags_format_and_copy(struct dm_pool *mem, const struct dm_list *tags) */ struct physical_volume *pv_by_path(struct cmd_context *cmd, const char *pv_name) { - struct dm_list mdas; - - dm_list_init(&mdas); - return _pv_read(cmd, cmd->mem, pv_name, NULL, &mdas, NULL, 1, 0); + return _pv_read(cmd, cmd->mem, pv_name, NULL, NULL, 1, 0); } diff --git a/lib/metadata/metadata.h b/lib/metadata/metadata.h index 6981d8e30..00c07aa26 100644 --- a/lib/metadata/metadata.h +++ b/lib/metadata/metadata.h @@ -252,8 +252,7 @@ struct format_handler { * Return PV with given path. */ int (*pv_read) (const struct format_type * fmt, const char *pv_name, - struct physical_volume * pv, struct dm_list *mdas, - int scan_label_only); + struct physical_volume * pv, int scan_label_only); /* * Tweak an already filled out a pv ready for importing into a diff --git a/tools/pvremove.c b/tools/pvremove.c index a8717e05c..ace3c1d00 100644 --- a/tools/pvremove.c +++ b/tools/pvremove.c @@ -25,15 +25,12 @@ const char _really_wipe[] = static int pvremove_check(struct cmd_context *cmd, const char *name) { struct physical_volume *pv; - struct dm_list mdas; - - dm_list_init(&mdas); /* FIXME Check partition type is LVM unless --force is given */ /* Is there a pv here already? */ /* If not, this is an error unless you used -f. */ - if (!(pv = pv_read(cmd, name, &mdas, NULL, 1, 0))) { + if (!(pv = pv_read(cmd, name, NULL, 1, 0))) { if (arg_count(cmd, force_ARG)) return 1; log_error("Physical Volume %s not found", name); @@ -47,13 +44,14 @@ static int pvremove_check(struct cmd_context *cmd, const char *name) * means checking every VG by scanning every * PV on the system. */ - if (is_orphan(pv) && !dm_list_size(&mdas)) { + if (is_orphan(pv) && !dm_list_size(&pv->fid->metadata_areas_in_use) && + !dm_list_size(&pv->fid->metadata_areas_ignored)) { if (!scan_vgs_for_pvs(cmd, 0)) { log_error("Rescan for PVs without metadata areas " "failed."); return 0; } - if (!(pv = pv_read(cmd, name, NULL, NULL, 1, 0))) { + if (!(pv = pv_read(cmd, name, NULL, 1, 0))) { log_error("Failed to read physical volume %s", name); return 0; } diff --git a/tools/pvresize.c b/tools/pvresize.c index a471f368e..f347d9d37 100644 --- a/tools/pvresize.c +++ b/tools/pvresize.c @@ -32,28 +32,26 @@ static int _pv_resize_single(struct cmd_context *cmd, uint64_t size = 0; uint32_t new_pe_count = 0; int r = 0; - struct dm_list mdas; const char *pv_name = pv_dev_name(pv); const char *vg_name = pv_vg_name(pv); struct lvmcache_info *info; int mda_count = 0; struct volume_group *old_vg = vg; - dm_list_init(&mdas); - if (is_orphan_vg(vg_name)) { if (!lock_vol(cmd, vg_name, LCK_VG_WRITE)) { log_error("Can't get lock for orphans"); return 0; } - if (!(pv = pv_read(cmd, pv_name, &mdas, NULL, 1, 0))) { + if (!(pv = pv_read(cmd, pv_name, NULL, 1, 0))) { unlock_vg(cmd, vg_name); log_error("Unable to read PV \"%s\"", pv_name); return 0; } - mda_count = dm_list_size(&mdas); + mda_count = dm_list_size(&pv->fid->metadata_areas_in_use) + + dm_list_size(&pv->fid->metadata_areas_ignored); } else { vg = vg_read_for_update(cmd, vg_name, NULL, 0); diff --git a/tools/toollib.c b/tools/toollib.c index 2a52a5171..cdd8bb752 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -649,7 +649,7 @@ static int _process_all_devs(struct cmd_context *cmd, void *handle, } while ((dev = dev_iter_get(iter))) { - if (!(pv = pv_read(cmd, dev_name(dev), NULL, NULL, 0, 0))) { + if (!(pv = pv_read(cmd, dev_name(dev), NULL, 0, 0))) { memset(&pv_dummy, 0, sizeof(pv_dummy)); dm_list_init(&pv_dummy.tags); dm_list_init(&pv_dummy.segments); @@ -691,7 +691,6 @@ int process_each_pv(struct cmd_context *cmd, int argc, char **argv, struct str_list *sll; char *at_sign, *tagname; int scanned = 0; - struct dm_list mdas; dm_list_init(&tags); @@ -733,10 +732,8 @@ int process_each_pv(struct cmd_context *cmd, int argc, char **argv, } pv = pvl->pv; } else { - - dm_list_init(&mdas); - if (!(pv = pv_read(cmd, argv[opt], &mdas, - NULL, 1, scan_label_only))) { + if (!(pv = pv_read(cmd, argv[opt], NULL, + 1, scan_label_only))) { log_error("Failed to read physical " "volume \"%s\"", argv[opt]); ret_max = ECMD_FAILED; @@ -751,7 +748,8 @@ int process_each_pv(struct cmd_context *cmd, int argc, char **argv, * PV on the system. */ if (!scanned && is_orphan(pv) && - !dm_list_size(&mdas)) { + !dm_list_size(&pv->fid->metadata_areas_in_use) && + !dm_list_size(&pv->fid->metadata_areas_ignored)) { if (!scan_label_only && !scan_vgs_for_pvs(cmd, 1)) { stack; @@ -760,7 +758,7 @@ int process_each_pv(struct cmd_context *cmd, int argc, char **argv, } scanned = 1; if (!(pv = pv_read(cmd, argv[opt], - NULL, NULL, 1, + NULL, 1, scan_label_only))) { log_error("Failed to read " "physical volume " -- 2.43.5