From 38220f9fe91228ad00c72bfe5b75651f38ec287f Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Tue, 16 Mar 2010 16:57:03 +0000 Subject: [PATCH] Remove unnecessary full_scan parameter from get_vgids and get_vgnames calls. --- WHATS_NEW | 1 + lib/cache/lvmcache.c | 12 ++++++------ lib/cache/lvmcache.h | 14 ++++++-------- lib/metadata/metadata-exported.h | 7 ++----- lib/metadata/metadata.c | 15 +++++++-------- liblvm/lvm_vg.c | 4 ++-- tools/toollib.c | 6 +++--- tools/vgrename.c | 2 +- 8 files changed, 28 insertions(+), 33 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 76b3b7bea..44278deae 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.63 - ================================ + Remove unnecessary full_scan parameter from get_vgids and get_vgnames calls. Look up missing PVs by uuid not dev_name in _pvs_single to avoid invalid stat. Make find_pv_in_vg_by_uuid() return same type as related functions. Introduce is_missing_pv(). diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index 35ee05b7e..7f59aa636 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -623,13 +623,13 @@ struct volume_group *lvmcache_get_vg(const char *vgid, unsigned precommitted) return vg; } -struct dm_list *lvmcache_get_vgids(struct cmd_context *cmd, int full_scan, - int include_internal) +struct dm_list *lvmcache_get_vgids(struct cmd_context *cmd, + int include_internal) { struct dm_list *vgids; struct lvmcache_vginfo *vginfo; - lvmcache_label_scan(cmd, full_scan); + lvmcache_label_scan(cmd, 0); if (!(vgids = str_list_create(cmd->mem))) { log_error("vgids list allocation failed"); @@ -650,13 +650,13 @@ struct dm_list *lvmcache_get_vgids(struct cmd_context *cmd, int full_scan, return vgids; } -struct dm_list *lvmcache_get_vgnames(struct cmd_context *cmd, int full_scan, - int include_internal) +struct dm_list *lvmcache_get_vgnames(struct cmd_context *cmd, + int include_internal) { struct dm_list *vgnames; struct lvmcache_vginfo *vginfo; - lvmcache_label_scan(cmd, full_scan); + lvmcache_label_scan(cmd, 0); if (!(vgnames = str_list_create(cmd->mem))) { log_errno(ENOMEM, "vgnames list allocation failed"); diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h index 2c14b6c79..37193a90f 100644 --- a/lib/cache/lvmcache.h +++ b/lib/cache/lvmcache.h @@ -98,16 +98,14 @@ int vgs_locked(void); int vgname_is_locked(const char *vgname); /* Returns list of struct str_lists containing pool-allocated copy of vgnames */ -/* Set full_scan to 1 to reread every filtered device label. If include_internal - * is not set, return only proper vg names. */ -struct dm_list *lvmcache_get_vgnames(struct cmd_context *cmd, int full_scan, - int include_internal); +/* If include_internal is not set, return only proper vg names. */ +struct dm_list *lvmcache_get_vgnames(struct cmd_context *cmd, + int include_internal); /* Returns list of struct str_lists containing pool-allocated copy of vgids */ -/* Set full_scan to 1 to reread every filtered device label. If include_internal - * is not set, return only proper vg ids. */ -struct dm_list *lvmcache_get_vgids(struct cmd_context *cmd, int full_scan, - int include_internal); +/* If include_internal is not set, return only proper vg ids. */ +struct dm_list *lvmcache_get_vgids(struct cmd_context *cmd, + int include_internal); /* Returns list of struct str_lists containing pool-allocated copy of pvids */ struct dm_list *lvmcache_get_pvids(struct cmd_context *cmd, const char *vgname, diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index a89a47d5d..2f1405fc6 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -398,11 +398,8 @@ int unlink_lv_from_vg(struct logical_volume *lv); void lv_set_visible(struct logical_volume *lv); void lv_set_hidden(struct logical_volume *lv); -/* Set full_scan to 1 to re-read every (filtered) device label */ -struct dm_list *get_vgnames(struct cmd_context *cmd, int full_scan, - int include_internal); -struct dm_list *get_vgids(struct cmd_context *cmd, int full_scan, - int include_internal); +struct dm_list *get_vgnames(struct cmd_context *cmd, int include_internal); +struct dm_list *get_vgids(struct cmd_context *cmd, int include_internal); int scan_vgs_for_pvs(struct cmd_context *cmd); int pv_write(struct cmd_context *cmd, struct physical_volume *pv, diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index bef70931d..11376ef1a 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -2967,7 +2967,8 @@ static struct volume_group *_vg_read_by_vgid(struct cmd_context *cmd, * allowed to do a full scan here any more. */ // The slow way - full scan required to cope with vgrename - if (!(vgnames = get_vgnames(cmd, 2, 0))) { + lvmcache_label_scan(cmd, 2); + if (!(vgnames = get_vgnames(cmd, 0))) { log_error("vg_read_by_vgid: get_vgnames failed"); goto out; } @@ -3103,16 +3104,14 @@ bad: } /* May return empty list */ -struct dm_list *get_vgnames(struct cmd_context *cmd, int full_scan, - int include_internal) +struct dm_list *get_vgnames(struct cmd_context *cmd, int include_internal) { - return lvmcache_get_vgnames(cmd, full_scan, include_internal); + return lvmcache_get_vgnames(cmd, include_internal); } -struct dm_list *get_vgids(struct cmd_context *cmd, int full_scan, - int include_internal) +struct dm_list *get_vgids(struct cmd_context *cmd, int include_internal) { - return lvmcache_get_vgids(cmd, full_scan, include_internal); + return lvmcache_get_vgids(cmd, include_internal); } static int _get_pvs(struct cmd_context *cmd, struct dm_list **pvslist) @@ -3138,7 +3137,7 @@ static int _get_pvs(struct cmd_context *cmd, struct dm_list **pvslist) } /* Get list of VGs */ - if (!(vgids = get_vgids(cmd, 0, 1))) { + if (!(vgids = get_vgids(cmd, 1))) { log_error("get_pvs: get_vgids failed"); return 0; } diff --git a/liblvm/lvm_vg.c b/liblvm/lvm_vg.c index ec829e87a..334e90669 100644 --- a/liblvm/lvm_vg.c +++ b/liblvm/lvm_vg.c @@ -351,12 +351,12 @@ char *lvm_vg_get_name(const vg_t vg) struct dm_list *lvm_list_vg_names(lvm_t libh) { - return get_vgnames((struct cmd_context *)libh, 0, 0); + return get_vgnames((struct cmd_context *)libh, 0); } struct dm_list *lvm_list_vg_uuids(lvm_t libh) { - return get_vgids((struct cmd_context *)libh, 0, 0); + return get_vgids((struct cmd_context *)libh, 0); } /* diff --git a/tools/toollib.c b/tools/toollib.c index a975fa33c..0d3fe0aef 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -275,7 +275,7 @@ int process_each_lv(struct cmd_context *cmd, int argc, char **argv, if (!argc || !dm_list_empty(&tags)) { log_verbose("Finding all logical volumes"); - if (!(vgnames = get_vgnames(cmd, 0, 0)) || dm_list_empty(vgnames)) { + if (!(vgnames = get_vgnames(cmd, 0)) || dm_list_empty(vgnames)) { log_error("No volume groups found"); return ret_max; } @@ -518,7 +518,7 @@ int process_each_vg(struct cmd_context *cmd, int argc, char **argv, if (!argc || !dm_list_empty(&tags)) { log_verbose("Finding all volume groups"); - if (!(vgids = get_vgids(cmd, 0, 0)) || dm_list_empty(vgids)) { + if (!(vgids = get_vgids(cmd, 0)) || dm_list_empty(vgids)) { log_error("No volume groups found"); return ret_max; } @@ -723,7 +723,7 @@ int process_each_pv(struct cmd_context *cmd, int argc, char **argv, if (sigint_caught()) goto out; } - if (!dm_list_empty(&tags) && (vgnames = get_vgnames(cmd, 0, 1)) && + if (!dm_list_empty(&tags) && (vgnames = get_vgnames(cmd, 1)) && !dm_list_empty(vgnames)) { dm_list_iterate_items(sll, vgnames) { vg = vg_read(cmd, sll->str, NULL, flags); diff --git a/tools/vgrename.c b/tools/vgrename.c index a63a6266a..799dcb24a 100644 --- a/tools/vgrename.c +++ b/tools/vgrename.c @@ -87,7 +87,7 @@ static int vg_rename_path(struct cmd_context *cmd, const char *old_vg_path, log_verbose("Checking for existing volume group \"%s\"", vg_name_old); /* Avoid duplicates */ - if (!(vgids = get_vgids(cmd, 0, 0)) || dm_list_empty(vgids)) { + if (!(vgids = get_vgids(cmd, 0)) || dm_list_empty(vgids)) { log_error("No complete volume groups found"); return 0; }