summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2019-01-04 11:11:13 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2019-01-08 13:11:46 +0100
commit6298eaeca50e32cdff3adefdb57b09c3250547a2 (patch)
tree9021a1921d4eb5e568d6da27d2350939f5eb37f4 /scripts
parentbc40391b7de93334c815565240848d5297f7a6c8 (diff)
downloadlvm2-6298eaeca50e32cdff3adefdb57b09c3250547a2.tar.gz
scripts: lvm2-activation-generator fix lvmconfig call
Fix a scenario where global/event_activation setting is not found. In this case we need to take default value just like lvm tools do when executed. So use "lvmconfig --type full". Also, if we fail to execute lvmconfig for whatever reason, fallback to generating the activation units as failsafe action. Reported by: Bastian Blank <waldi debian org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/generator-internals.c3
-rw-r--r--scripts/lvm2_activation_generator_systemd_red_hat.c15
2 files changed, 12 insertions, 6 deletions
diff --git a/scripts/generator-internals.c b/scripts/generator-internals.c
index 0929b780d..839206563 100644
--- a/scripts/generator-internals.c
+++ b/scripts/generator-internals.c
@@ -186,7 +186,8 @@ static bool _parse_line(const char *line, struct config *cfg)
static bool _get_config(struct config *cfg, const char *lvmconfig_path)
{
static const char *_argv[] = {
- "lvmconfig", LVM_CONF_EVENT_ACTIVATION, LVM_CONF_USE_LVMPOLLD, NULL
+ "lvmconfig", "--type", "full",
+ LVM_CONF_EVENT_ACTIVATION, LVM_CONF_USE_LVMPOLLD, NULL
};
bool r = true;
diff --git a/scripts/lvm2_activation_generator_systemd_red_hat.c b/scripts/lvm2_activation_generator_systemd_red_hat.c
index a3a3e88ae..f906f082f 100644
--- a/scripts/lvm2_activation_generator_systemd_red_hat.c
+++ b/scripts/lvm2_activation_generator_systemd_red_hat.c
@@ -194,12 +194,17 @@ static bool _run(int argc, const char **argv)
if (!_parse_command_line(&gen, argc, argv))
return false;
- if (!_get_config(&gen.cfg, LVMCONFIG_PATH))
- return false;
+ if (_get_config(&gen.cfg, LVMCONFIG_PATH)) {
+ if (gen.cfg.event_activation)
+ // If event_activation=1, pvscan --cache -aay does activation.
+ return true;
+ }
- if (gen.cfg.event_activation)
- // If event_activation=1, pvscan --cache -aay does activation.
- return true;
+ /*
+ * Create the activation units if:
+ * - _get_config succeeded and event_activation=0
+ * - _get_config failed, then this is a failsafe fallback
+ */
/* mark lvm2-activation.*.service as world-accessible */
old_mask = umask(0022);