summaryrefslogtreecommitdiff
path: root/tools/vgscan.c
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2018-07-10 13:39:29 -0500
committerDavid Teigland <teigland@redhat.com>2018-07-11 11:26:42 -0500
commit117160b27e510dceb1ed6acf995115c040acd88d (patch)
treeae459f189f4202cb78ef3c9f8196a559b2398801 /tools/vgscan.c
parentedf3f86184a380994e383b9884364e702e4ac647 (diff)
downloadlvm2-117160b27e510dceb1ed6acf995115c040acd88d.tar.gz
Remove lvmetad
Native disk scanning is now both reduced and async/parallel, which makes it comparable in performance (and often faster) when compared to lvm using lvmetad. Autoactivation now uses local temp files to record online PVs, and no longer requires lvmetad. There should be no apparent command-level change in behavior.
Diffstat (limited to 'tools/vgscan.c')
-rw-r--r--tools/vgscan.c66
1 files changed, 4 insertions, 62 deletions
diff --git a/tools/vgscan.c b/tools/vgscan.c
index f9fa3821c..470e3d85f 100644
--- a/tools/vgscan.c
+++ b/tools/vgscan.c
@@ -28,51 +28,10 @@ static int _vgscan_single(struct cmd_context *cmd, const char *vg_name,
return ECMD_PROCESSED;
}
-/*
- * Two main vgscan cases related to lvmetad usage:
- * 1. vgscan
- * 2. vgscan --cache
- *
- * 1. The 'vgscan' command (without --cache) may or may not attempt to
- * repopulate the lvmetad cache, and may or may not use the lvmetad
- * cache to display VG info:
- *
- * i. If lvmetad is being used and is in a normal state, then 'vgscan'
- * will simply read and display VG info from the lvmetad cache.
- *
- * ii. If lvmetad is not being used, 'vgscan' will read all devices to
- * display the VG info.
- *
- * iii. If lvmetad is being used, but has been disabled (because of
- * duplicate devs), or has a non-matching token
- * (because the device filter is different from the device filter last
- * used to populate lvmetad), then 'vgscan' will begin by rescanning
- * devices to repopulate lvmetad. If lvmetad is enabled after the
- * rescan, then 'vgscan' will simply read and display VG info from the
- * lvmetad cache (like case i). If lvmetad is disabled after the
- * rescan, then 'vgscan' will read all devices to display VG info
- * (like case ii).
- *
- * 2. The 'vgscan --cache' command will always attempt to repopulate
- * the lvmetad cache by rescanning all devs (regardless of whether
- * lvmetad was previously disabled or had an unmatching token.)
- * lvmetad may be enabled or disabled after the rescan (depending
- * on whether duplicate devs were found).
- * If enabled, then it will simply read and display VG info from the
- * lvmetad cache (like case 1.i.). If disabled, then it will
- * read all devices to display VG info (like case 1.ii.)
- */
-
int vgscan(struct cmd_context *cmd, int argc, char **argv)
{
- const char *reason = NULL;
int maxret, ret;
- if (argc) {
- log_error("Too many parameters on command line");
- return EINVALID_CMD_LINE;
- }
-
if (arg_is_set(cmd, notifydbus_ARG)) {
if (!lvmnotify_is_supported()) {
log_error("Cannot notify dbus: lvm is not built with dbus support.");
@@ -93,29 +52,12 @@ int vgscan(struct cmd_context *cmd, int argc, char **argv)
return ECMD_FAILED;
}
- if (cmd->filter->wipe)
- cmd->filter->wipe(cmd->filter);
- lvmcache_destroy(cmd, 1, 0);
-
- if (!lvmetad_used() && arg_is_set(cmd, cache_long_ARG))
- log_verbose("Ignoring vgscan --cache command because lvmetad is not in use.");
-
- if (lvmetad_used() && (arg_is_set(cmd, cache_long_ARG) || !lvmetad_token_matches(cmd) || lvmetad_is_disabled(cmd, &reason))) {
- if (lvmetad_used() && !lvmetad_pvscan_all_devs(cmd, arg_is_set(cmd, cache_long_ARG))) {
- log_warn("WARNING: Not using lvmetad because cache update failed.");
- lvmetad_make_unused(cmd);
- }
-
- if (lvmetad_used() && lvmetad_is_disabled(cmd, &reason)) {
- log_warn("WARNING: Not using lvmetad because %s.", reason);
- lvmetad_make_unused(cmd);
- }
+ if (arg_is_set(cmd, cache_long_ARG)) {
+ log_warn("Ignoring vgscan --cache command because lvmetad is no longer used.");
+ return ECMD_PROCESSED;
}
- if (!lvmetad_used())
- log_print_unless_silent("Reading all physical volumes. This may take a while...");
- else
- log_print_unless_silent("Reading volume groups from cache.");
+ log_print_unless_silent("Reading all physical volumes. This may take a while...");
maxret = process_each_vg(cmd, argc, argv, NULL, NULL, 0, 0, NULL, &_vgscan_single);