[lvm-devel] [PATCH 15/21] Add vg metadata balance parameters with defaults.

Dave Wysochanski dwysocha at redhat.com
Tue Feb 9 22:32:18 UTC 2010


Add 3 parameters that control vg metadata balancing.
1) metadata_balance: enable metadata balancing; default 0 (disable)
2) metadata_balance_min: min # of PVs to contain metadata; default 1
3) metadata_balance_max: max # of PVs to contain metadata; default UINT_MAX
(all PVs contain metadata)

This patch just adds the parameters to the structures with the default
values but does not modify any commands.  Should be no functional change.

Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
---
 lib/config/defaults.h            |    3 +++
 lib/metadata/metadata-exported.h |    9 +++++++++
 lib/metadata/metadata.c          |    3 +++
 tools/toollib.c                  |    6 ++++++
 4 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/lib/config/defaults.h b/lib/config/defaults.h
index 94057e4..3136269 100644
--- a/lib/config/defaults.h
+++ b/lib/config/defaults.h
@@ -74,6 +74,9 @@
 #define DEFAULT_MAX_LV 0
 #define DEFAULT_ALLOC_POLICY ALLOC_NORMAL
 #define DEFAULT_CLUSTERED 0
+#define DEFAULT_METADATA_BALANCE 0
+#define DEFAULT_METADATA_BALANCE_MIN 1
+#define DEFAULT_METADATA_BALANCE_MAX UINT32_MAX
 
 #define DEFAULT_MSG_PREFIX "  "
 #define DEFAULT_CMD_NAME 0
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
index 1ae058e..a40ffe4 100644
--- a/lib/metadata/metadata-exported.h
+++ b/lib/metadata/metadata-exported.h
@@ -263,6 +263,12 @@ struct volume_group {
 	 * 0 for success else appropriate FAILURE_* bits set.
 	 */
 	uint32_t read_status;
+	/*
+	 * Metadata balance parameters
+	 */
+	uint32_t metadata_balance; /* 0 - disable (default); 1 - enable */
+	uint32_t metadata_balance_min; /* min # of mdas in this VG */
+	uint32_t metadata_balance_max; /* max # of mdas in this VG */
 };
 
 /* There will be one area for each stripe */
@@ -767,6 +773,9 @@ struct vgcreate_params {
 	size_t max_lv;
 	alloc_policy_t alloc;
 	int clustered; /* FIXME: put this into a 'status' variable instead? */
+	int metadata_balance;
+	uint32_t metadata_balance_max;
+	uint32_t metadata_balance_min;
 };
 
 int vgcreate_params_validate(struct cmd_context *cmd,
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 95d74b4..6fe8008 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -832,6 +832,9 @@ struct volume_group *vg_create(struct cmd_context *cmd, const char *vg_name)
 	vg->max_pv = DEFAULT_MAX_PV;
 
 	vg->alloc = DEFAULT_ALLOC_POLICY;
+	vg->metadata_balance = DEFAULT_METADATA_BALANCE;
+	vg->metadata_balance_min = DEFAULT_METADATA_BALANCE_MIN;
+	vg->metadata_balance_max = DEFAULT_METADATA_BALANCE_MAX;
 
 	vg->pv_count = 0;
 	dm_list_init(&vg->pvs);
diff --git a/tools/toollib.c b/tools/toollib.c
index e4040f8..c868523 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1189,6 +1189,9 @@ void vgcreate_params_set_defaults(struct vgcreate_params *vp_def,
 		vp_def->max_lv = vg->max_lv;
 		vp_def->alloc = vg->alloc;
 		vp_def->clustered = vg_is_clustered(vg);
+		vp_def->metadata_balance = vg->metadata_balance;
+		vp_def->metadata_balance_min = vg->metadata_balance_min;
+		vp_def->metadata_balance_max = vg->metadata_balance_max;
 	} else {
 		vp_def->vg_name = NULL;
 		vp_def->extent_size = DEFAULT_EXTENT_SIZE * 2;
@@ -1196,6 +1199,9 @@ void vgcreate_params_set_defaults(struct vgcreate_params *vp_def,
 		vp_def->max_lv = DEFAULT_MAX_LV;
 		vp_def->alloc = DEFAULT_ALLOC_POLICY;
 		vp_def->clustered = DEFAULT_CLUSTERED;
+		vp_def->metadata_balance = DEFAULT_METADATA_BALANCE;
+		vp_def->metadata_balance_min = DEFAULT_METADATA_BALANCE_MIN;
+		vp_def->metadata_balance_max = DEFAULT_METADATA_BALANCE_MAX;
 	}
 }
 
-- 
1.6.0.6




More information about the lvm-devel mailing list