[lvm-devel] master - config: make global/units and global/si_unit_consistency profilable

Peter Rajnoha prajnoha at fedoraproject.org
Mon Mar 17 15:07:37 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=c1ce2cc86cb1a9bba16b62119829e1e1ddc0ff87
Commit:        c1ce2cc86cb1a9bba16b62119829e1e1ddc0ff87
Parent:        a2c544dc91d8712b49c44aeea2241b37044eedac
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Mon Mar 17 16:03:53 2014 +0100
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Mon Mar 17 16:07:29 2014 +0100

config: make global/units and global/si_unit_consistency profilable

---
 WHATS_NEW                    |    3 ++-
 conf/default.profile.in      |    5 +++++
 lib/commands/toolcontext.c   |   25 ++++++++++++++++---------
 lib/commands/toolcontext.h   |    1 +
 lib/config/config_settings.h |    6 +++---
 tools/lvmcmdline.c           |    2 ++
 6 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 06b8033..f104a0c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,8 +1,9 @@
 Version 2.02.106 - 
 ====================================
+  Make global/units and global/si_unit_consistency lvm.conf setting profilable.
   Validate minimal chunk size for snapshot COW volume in lvconvert.
   Disallow lvconvert of origin to snapshot COW volume.
-  Make report settings profilable.
+  Make report lvm.conf settings profilable.
   Add existing report settings to lvm.conf.
   Use VG read lock during 'pvscan --cache -aay' autoactivation.
   Issue a VG refresh before autoactivation only if the PV has changed/is new.
diff --git a/conf/default.profile.in b/conf/default.profile.in
index 0499aef..2bf2143 100644
--- a/conf/default.profile.in
+++ b/conf/default.profile.in
@@ -20,6 +20,11 @@ activation {
 	thin_pool_autoextend_percent = 20
 }
 
+global {
+	units="h"
+	si_unit_consistency=1
+}
+
 report {
 	aligned=1
 	buffered=1
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 7282592..c616558 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -279,6 +279,19 @@ static int _check_config(struct cmd_context *cmd)
 	return 1;
 }
 
+int process_profilable_config(struct cmd_context *cmd) {
+	if (!(cmd->default_settings.unit_factor =
+	      units_to_bytes(find_config_tree_str(cmd, global_units_CFG, NULL),
+			     &cmd->default_settings.unit_type))) {
+		log_error("Invalid units specification");
+		return 0;
+	}
+
+	cmd->si_unit_consistency = find_config_tree_bool(cmd, global_si_unit_consistency_CFG, NULL);
+
+	return 1;
+}
+
 static int _process_config(struct cmd_context *cmd)
 {
 	mode_t old_umask;
@@ -339,13 +352,6 @@ static int _process_config(struct cmd_context *cmd)
 
 	cmd->default_settings.suffix = find_config_tree_bool(cmd, global_suffix_CFG, NULL);
 
-	if (!(cmd->default_settings.unit_factor =
-	      units_to_bytes(find_config_tree_str(cmd, global_units_CFG, NULL),
-			     &cmd->default_settings.unit_type))) {
-		log_error("Invalid units specification");
-		return 0;
-	}
-
 	read_ahead = find_config_tree_str(cmd, activation_readahead_CFG, NULL);
 	if (!strcasecmp(read_ahead, "auto"))
 		cmd->default_settings.read_ahead = DM_READ_AHEAD_AUTO;
@@ -407,8 +413,6 @@ static int _process_config(struct cmd_context *cmd)
 		}
 	}
 
-	cmd->si_unit_consistency = find_config_tree_bool(cmd, global_si_unit_consistency_CFG, NULL);
-
 	if ((cn = find_config_tree_node(cmd, activation_mlock_filter_CFG, NULL)))
 		for (cv = cn->v; cv; cv = cv->next) 
 			if ((cv->type != DM_CFG_STRING) || !cv->v.str[0]) 
@@ -425,6 +429,9 @@ static int _process_config(struct cmd_context *cmd)
 	/* LVM stores sizes internally in units of 512-byte sectors. */
 	init_pv_min_size((uint64_t)pv_min_kb * (1024 >> SECTOR_SHIFT));
 
+	if (!process_profilable_config(cmd))
+		return_0;
+
 	init_detect_internal_vg_cache_corruption
 		(find_config_tree_bool(cmd, global_detect_internal_vg_cache_corruption_CFG, NULL));
 
diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index 7a50e1e..0cd9a2f 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -138,6 +138,7 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived,
 void destroy_toolcontext(struct cmd_context *cmd);
 int refresh_toolcontext(struct cmd_context *cmd);
 int refresh_filters(struct cmd_context *cmd);
+int process_profilable_config(struct cmd_context *cmd);
 int config_files_changed(struct cmd_context *cmd);
 int init_lvmcache_orphans(struct cmd_context *cmd);
 
diff --git a/lib/config/config_settings.h b/lib/config/config_settings.h
index de6ca1b..77acb45 100644
--- a/lib/config/config_settings.h
+++ b/lib/config/config_settings.h
@@ -74,7 +74,7 @@ cfg_section(allocation_CFG_SECTION, "allocation", root_CFG_SECTION, CFG_PROFILAB
 cfg_section(log_CFG_SECTION, "log", root_CFG_SECTION, 0, vsn(1, 0, 0), NULL)
 cfg_section(backup_CFG_SECTION, "backup", root_CFG_SECTION, 0, vsn(1, 0, 0), NULL)
 cfg_section(shell_CFG_SECTION, "shell", root_CFG_SECTION, 0, vsn(1, 0, 0), NULL)
-cfg_section(global_CFG_SECTION, "global", root_CFG_SECTION, 0, vsn(1, 0, 0), NULL)
+cfg_section(global_CFG_SECTION, "global", root_CFG_SECTION, CFG_PROFILABLE, vsn(1, 0, 0), NULL)
 cfg_section(activation_CFG_SECTION, "activation", root_CFG_SECTION, CFG_PROFILABLE, vsn(1, 0, 0), NULL)
 cfg_section(metadata_CFG_SECTION, "metadata", root_CFG_SECTION, CFG_ADVANCED, vsn(1, 0, 0), NULL)
 cfg_section(report_CFG_SECTION, "report", root_CFG_SECTION, CFG_ADVANCED | CFG_PROFILABLE, vsn(1, 0, 0), NULL)
@@ -150,8 +150,8 @@ cfg(shell_history_size_CFG, "history_size", shell_CFG_SECTION, 0, CFG_TYPE_INT,
 
 cfg(global_umask_CFG, "umask", global_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_UMASK, vsn(1, 0, 0), NULL)
 cfg(global_test_CFG, "test", global_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(1, 0, 0), NULL)
-cfg(global_units_CFG, "units", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_UNITS, vsn(1, 0, 0), NULL)
-cfg(global_si_unit_consistency_CFG, "si_unit_consistency", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_SI_UNIT_CONSISTENCY,  vsn(2, 2, 54), NULL)
+cfg(global_units_CFG, "units", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_UNITS, vsn(1, 0, 0), NULL)
+cfg(global_si_unit_consistency_CFG, "si_unit_consistency", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_SI_UNIT_CONSISTENCY,  vsn(2, 2, 54), NULL)
 cfg(global_activation_CFG, "activation", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION, vsn(1, 0, 0), NULL)
 cfg(global_suffix_CFG, "suffix", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_SUFFIX, vsn(1, 0, 0), NULL)
 cfg(global_fallback_to_lvm1_CFG, "fallback_to_lvm1", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FALLBACK_TO_LVM1, vsn(1, 0, 18), NULL)
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 6fe4670..454bee8 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -1137,6 +1137,8 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv)
 			log_error("Failed to apply configuration profile.");
 			return ECMD_FAILED;
 		}
+		if (!process_profilable_config(cmd))
+			return_ECMD_FAILED;
 	}
 
 	if ((ret = _get_settings(cmd)))




More information about the lvm-devel mailing list