[lvm-devel] master - conf: add activation/auto_set_activation_skip
Peter Rajnoha
prajnoha at fedoraproject.org
Fri Jul 12 19:39:08 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8d1e5113638dbca6a32166bb2d6691b11c37f0d4
Commit: 8d1e5113638dbca6a32166bb2d6691b11c37f0d4
Parent: 283c93a85878cfb67e1c9f0045065dbc0d63bca6
Author: Peter Rajnoha <prajnoha at redhat.com>
AuthorDate: Fri Jul 12 09:27:17 2013 +0200
Committer: Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Fri Jul 12 20:54:17 2013 +0200
conf: add activation/auto_set_activation_skip
The activation/auto_set_activation_skip enables/disables automatic
adding of the ACTIVATION_SKIP LV flag. By default thin snapshots
are flagged to be skipped during activation.
And by default, the auto_set_activation_skip is enabled.
---
conf/example.conf.in | 7 +++++++
lib/commands/toolcontext.c | 2 ++
lib/commands/toolcontext.h | 1 +
lib/config/config_settings.h | 1 +
lib/config/defaults.h | 1 +
lib/metadata/lv_manip.c | 11 ++++++-----
6 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/conf/example.conf.in b/conf/example.conf.in
index cb4d3e5..2032a81 100644
--- a/conf/example.conf.in
+++ b/conf/example.conf.in
@@ -697,6 +697,13 @@ activation {
#
# read_only_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+ # Each LV can have an 'activation skip' flag stored persistently against it.
+ # During activation, this flag is used to decide whether such an LV is skipped.
+ # The 'activation skip' flag can be set during LV creation and by default it
+ # is automatically set for thin snapshot LVs. The 'auto_set_activation_skip'
+ # enables or disables this automatic setting of the flag while LVs are created.
+ # auto_set_activation_skip = 1
+
# For RAID or 'mirror' segment types, 'raid_region_size' is the
# size (in kiB) of each:
# - synchronization operation when initializing
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 2c4a698..b284ce5 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -342,6 +342,8 @@ static int _process_config(struct cmd_context *cmd)
cmd->default_settings.activation = find_config_tree_bool(cmd, global_activation_CFG, NULL);
set_activation(cmd->default_settings.activation);
+ cmd->auto_set_activation_skip = find_config_tree_bool(cmd, activation_auto_set_activation_skip_CFG, NULL);
+
cmd->default_settings.suffix = find_config_tree_bool(cmd, global_suffix_CFG, NULL);
if (!(cmd->default_settings.unit_factor =
diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index 2d90138..cd91605 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -87,6 +87,7 @@ struct cmd_context {
unsigned handles_unknown_segments:1;
unsigned use_linear_target:1;
unsigned partial_activation:1;
+ unsigned auto_set_activation_skip:1;
unsigned si_unit_consistency:1;
unsigned metadata_read_only:1;
unsigned threaded:1; /* Set if running within a thread e.g. clvmd */
diff --git a/lib/config/config_settings.h b/lib/config/config_settings.h
index d9112f5..d2a6765 100644
--- a/lib/config/config_settings.h
+++ b/lib/config/config_settings.h
@@ -185,6 +185,7 @@ cfg_array(activation_mlock_filter_CFG, "mlock_filter", activation_CFG_SECTION, 0
cfg(activation_use_mlockall_CFG, "use_mlockall", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_USE_MLOCKALL, vsn(2, 2, 62), NULL)
cfg(activation_monitoring_CFG, "monitoring", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DMEVENTD_MONITOR, vsn(2, 2, 63), NULL)
cfg(activation_polling_interval_CFG, "polling_interval", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_INTERVAL, vsn(2, 2, 63), NULL)
+cfg(activation_auto_set_activation_skip_CFG, "auto_set_activation_skip", activation_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_AUTO_SET_ACTIVATION_SKIP, vsn(2,2,99), NULL)
cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_PVMETADATACOPIES, vsn(1, 0, 0), NULL)
cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_VGMETADATACOPIES, vsn(2, 2, 69), NULL)
diff --git a/lib/config/defaults.h b/lib/config/defaults.h
index 7ee89ec..a789a9c 100644
--- a/lib/config/defaults.h
+++ b/lib/config/defaults.h
@@ -140,6 +140,7 @@
# define DEFAULT_ACTIVATION 0
#endif
+#define DEFAULT_AUTO_SET_ACTIVATION_SKIP 1
#define DEFAULT_USE_LINEAR_TARGET 1
#define DEFAULT_STRIPE_FILLER "error"
#define DEFAULT_RAID_REGION_SIZE 512 /* KB */
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 1dc1529..ee65332 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -5286,16 +5286,17 @@ static struct logical_volume *_create_virtual_origin(struct cmd_context *cmd,
void lv_set_activation_skip(struct logical_volume *lv, int override_default,
int add_skip)
{
- int skip;
+ int skip = 0;
/* override default behaviour */
if (override_default)
skip = add_skip;
/* default behaviour */
- else if (lv_is_thin_volume(lv) && first_seg(lv)->origin)
- skip = 1; /* skip activation for thin snapshots by default */
- else
- skip = 0;
+ else if (lv->vg->cmd->auto_set_activation_skip) {
+ /* skip activation for thin snapshots by default */
+ if (lv_is_thin_volume(lv) && first_seg(lv)->origin)
+ skip = 1;
+ }
if (skip)
lv->status |= LV_ACTIVATION_SKIP;
More information about the lvm-devel
mailing list