mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-02 01:18:26 +03:00
Do not allow {vg|lv}change --ignoremonitoring if on clustered VG.
clvmd does not propagate DMEVENTD_MONITOR_IGNORE. Update get_activation_monitoring_mode() to check if the VG that the LV is being activated in is clustered. If so, skip it. Any get_activation_monitoring_mode() error will cause the associated LV (or VG) to be skipped during activation. Both vgchange_single() and lvchange_single(), which call get_activation_monitoring_mode(), are called by their respective process_each_..() method.
This commit is contained in:
parent
c9895ac01e
commit
b73c18242e
@ -1,5 +1,6 @@
|
||||
Version 2.02.63 -
|
||||
================================
|
||||
Do not allow {vg|lv}change --ignoremonitoring if on clustered VG.
|
||||
Improved dependency tracking for dmeventd and liblvm2cmd sources.
|
||||
Improved Makefile rules for distclean and cflow targets.
|
||||
Add ability to create mirrored logs for mirror LVs.
|
||||
|
@ -575,7 +575,7 @@ static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||
return ECMD_FAILED;
|
||||
}
|
||||
|
||||
if (!get_activation_monitoring_mode(cmd, &dmeventd_mode))
|
||||
if (!get_activation_monitoring_mode(cmd, lv->vg, &dmeventd_mode))
|
||||
return ECMD_FAILED;
|
||||
|
||||
init_dmeventd_monitor(dmeventd_mode);
|
||||
|
@ -484,7 +484,8 @@ static int _lvcreate_params(struct lvcreate_params *lp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!get_activation_monitoring_mode(cmd, &lp->activation_monitoring))
|
||||
if (!get_activation_monitoring_mode(cmd, NULL,
|
||||
&lp->activation_monitoring))
|
||||
return_0;
|
||||
|
||||
if (!_lvcreate_name_params(lp, cmd, &argc, &argv) ||
|
||||
|
@ -1424,6 +1424,7 @@ int pvcreate_params_validate(struct cmd_context *cmd,
|
||||
}
|
||||
|
||||
int get_activation_monitoring_mode(struct cmd_context *cmd,
|
||||
struct volume_group *vg,
|
||||
int *monitoring_mode)
|
||||
{
|
||||
*monitoring_mode = DEFAULT_DMEVENTD_MONITOR;
|
||||
@ -1442,5 +1443,15 @@ int get_activation_monitoring_mode(struct cmd_context *cmd,
|
||||
DEFAULT_DMEVENTD_MONITOR))
|
||||
*monitoring_mode = DMEVENTD_MONITOR_IGNORE;
|
||||
|
||||
if (vg && vg_is_clustered(vg) &&
|
||||
*monitoring_mode == DMEVENTD_MONITOR_IGNORE) {
|
||||
log_error("%s is incompatible with clustered Volume Group "
|
||||
"\"%s\": Skipping.",
|
||||
(arg_count(cmd, ignoremonitoring_ARG) ?
|
||||
"--ignoremonitoring" : "activation/monitoring=0"),
|
||||
vg->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -113,6 +113,7 @@ int pvcreate_params_validate(struct cmd_context *cmd,
|
||||
struct pvcreate_params *pp);
|
||||
|
||||
int get_activation_monitoring_mode(struct cmd_context *cmd,
|
||||
struct volume_group *vg,
|
||||
int *monitoring_mode);
|
||||
|
||||
#endif
|
||||
|
@ -529,7 +529,7 @@ static int vgchange_single(struct cmd_context *cmd, const char *vg_name,
|
||||
return ECMD_FAILED;
|
||||
}
|
||||
|
||||
if (!get_activation_monitoring_mode(cmd, &dmeventd_mode))
|
||||
if (!get_activation_monitoring_mode(cmd, vg, &dmeventd_mode))
|
||||
return ECMD_FAILED;
|
||||
|
||||
init_dmeventd_monitor(dmeventd_mode);
|
||||
|
Loading…
Reference in New Issue
Block a user