diff options
author | Mike Snitzer <snitzer@redhat.com> | 2010-03-23 22:30:18 +0000 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2010-03-23 22:30:18 +0000 |
commit | a6bc975a2449fd3a1013acb77cb02600a087c2b7 (patch) | |
tree | 1c7f1b7d7eeb577cd923549f6e239307ca7c0216 /tools | |
parent | a2b6bbdfb28dbb760b5df76c7c1c75c96e40ea38 (diff) | |
download | lvm2-a6bc975a2449fd3a1013acb77cb02600a087c2b7.tar.gz lvm2-a6bc975a2449fd3a1013acb77cb02600a087c2b7.tar.xz lvm2-a6bc975a2449fd3a1013acb77cb02600a087c2b7.zip |
Improve activation monitoring option processing
. Add "monitoring" option to "activation" section of lvm.conf
. Have clvmd consult the lvm.conf "activation/monitoring" too.
. Introduce toollib.c:get_activation_monitoring_mode().
. Error out when both --monitor and --ignoremonitoring are provided.
. Add --monitor and --ignoremonitoring support to lvcreate. Update
lvcreate man page accordingly.
. Clarify that '--monitor' controls the start and stop of monitoring in
the {vg,lv}change man pages.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/commands.h | 14 | ||||
-rw-r--r-- | tools/lvchange.c | 9 | ||||
-rw-r--r-- | tools/lvcreate.c | 3 | ||||
-rw-r--r-- | tools/toollib.c | 21 | ||||
-rw-r--r-- | tools/toollib.h | 3 | ||||
-rw-r--r-- | tools/vgchange.c | 9 |
6 files changed, 46 insertions, 13 deletions
diff --git a/tools/commands.h b/tools/commands.h index ad0b385e..58d6d7b9 100644 --- a/tools/commands.h +++ b/tools/commands.h @@ -150,6 +150,8 @@ xx(lvcreate, "\t[-C|--contiguous {y|n}]\n" "\t[-d|--debug]\n" "\t[-h|-?|--help]\n" + "\t[--ignoremonitoring]\n" + "\t[--monitor {y|n}]\n" "\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n" "\t{-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |\n" "\t -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n" @@ -177,6 +179,8 @@ xx(lvcreate, "\t[-C|--contiguous {y|n}]\n" "\t[-d|--debug]\n" "\t[-h|-?|--help]\n" + "\t[--ignoremonitoring]\n" + "\t[--monitor {y|n}]\n" "\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n" "\t{-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] |\n" "\t -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n" @@ -192,11 +196,11 @@ xx(lvcreate, "\t[PhysicalVolumePath...]\n\n", addtag_ARG, alloc_ARG, autobackup_ARG, chunksize_ARG, contiguous_ARG, - corelog_ARG, extents_ARG, major_ARG, minor_ARG, mirrorlog_ARG, mirrors_ARG, - name_ARG, nosync_ARG, noudevsync_ARG, permission_ARG, persistent_ARG, - readahead_ARG, regionsize_ARG, size_ARG, snapshot_ARG, stripes_ARG, - stripesize_ARG, test_ARG, type_ARG, virtualoriginsize_ARG, virtualsize_ARG, - zero_ARG) + corelog_ARG, extents_ARG, ignoremonitoring_ARG, major_ARG, minor_ARG, + mirrorlog_ARG, mirrors_ARG, monitor_ARG, name_ARG, nosync_ARG, noudevsync_ARG, + permission_ARG, persistent_ARG, readahead_ARG, regionsize_ARG, size_ARG, + snapshot_ARG, stripes_ARG, stripesize_ARG, test_ARG, type_ARG, + virtualoriginsize_ARG, virtualsize_ARG, zero_ARG) xx(lvdisplay, "Display information about a logical volume", diff --git a/tools/lvchange.c b/tools/lvchange.c index 2d7955e8..534c9930 100644 --- a/tools/lvchange.c +++ b/tools/lvchange.c @@ -518,7 +518,7 @@ static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv, void *handle __attribute((unused))) { int doit = 0, docmds = 0; - int archived = 0; + int dmeventd_mode, archived = 0; struct logical_volume *origin; if (!(lv->vg->status & LVM_WRITE) && @@ -575,9 +575,10 @@ static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv, return ECMD_FAILED; } - init_dmeventd_monitor(arg_int_value(cmd, monitor_ARG, - (is_static() || arg_count(cmd, ignoremonitoring_ARG)) ? - DMEVENTD_MONITOR_IGNORE : DEFAULT_DMEVENTD_MONITOR)); + if (!get_activation_monitoring_mode(cmd, &dmeventd_mode)) + return ECMD_FAILED; + + init_dmeventd_monitor(dmeventd_mode); /* * FIXME: DEFAULT_BACKGROUND_POLLING should be "unspecified". diff --git a/tools/lvcreate.c b/tools/lvcreate.c index 211cfebb..10b5aa59 100644 --- a/tools/lvcreate.c +++ b/tools/lvcreate.c @@ -482,6 +482,9 @@ static int _lvcreate_params(struct lvcreate_params *lp, return 0; } + if (!get_activation_monitoring_mode(cmd, &lp->activation_monitoring)) + return_0; + if (!_lvcreate_name_params(lp, cmd, &argc, &argv) || !_read_size_params(lp, lcp, cmd) || !_read_stripe_params(lp, cmd) || diff --git a/tools/toollib.c b/tools/toollib.c index 54701692..b1528e25 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -1423,3 +1423,24 @@ int pvcreate_params_validate(struct cmd_context *cmd, return 1; } +int get_activation_monitoring_mode(struct cmd_context *cmd, + int *monitoring_mode) +{ + *monitoring_mode = DEFAULT_DMEVENTD_MONITOR; + + if (arg_count(cmd, monitor_ARG) && + arg_count(cmd, ignoremonitoring_ARG)) { + log_error("Conflicting monitor and ignoremonitoring options"); + return 0; + } + + if (arg_count(cmd, monitor_ARG)) + *monitoring_mode = arg_int_value(cmd, monitor_ARG, + DEFAULT_DMEVENTD_MONITOR); + else if (is_static() || arg_count(cmd, ignoremonitoring_ARG) || + !find_config_tree_bool(cmd, "activation/monitoring", + DEFAULT_DMEVENTD_MONITOR)) + *monitoring_mode = DMEVENTD_MONITOR_IGNORE; + + return 1; +} diff --git a/tools/toollib.h b/tools/toollib.h index d284de41..987814ed 100644 --- a/tools/toollib.h +++ b/tools/toollib.h @@ -112,4 +112,7 @@ int pvcreate_params_validate(struct cmd_context *cmd, int argc, char **argv, struct pvcreate_params *pp); +int get_activation_monitoring_mode(struct cmd_context *cmd, + int *monitoring_mode); + #endif diff --git a/tools/vgchange.c b/tools/vgchange.c index 6d869f96..e013bdec 100644 --- a/tools/vgchange.c +++ b/tools/vgchange.c @@ -522,16 +522,17 @@ static int vgchange_single(struct cmd_context *cmd, const char *vg_name, struct volume_group *vg, void *handle __attribute((unused))) { - int r = ECMD_FAILED; + int dmeventd_mode, r = ECMD_FAILED; if (vg_is_exported(vg)) { log_error("Volume group \"%s\" is exported", vg_name); return ECMD_FAILED; } - init_dmeventd_monitor(arg_int_value(cmd, monitor_ARG, - (is_static() || arg_count(cmd, ignoremonitoring_ARG)) ? - DMEVENTD_MONITOR_IGNORE : DEFAULT_DMEVENTD_MONITOR)); + if (!get_activation_monitoring_mode(cmd, &dmeventd_mode)) + return ECMD_FAILED; + + init_dmeventd_monitor(dmeventd_mode); /* * FIXME: DEFAULT_BACKGROUND_POLLING should be "unspecified". |