summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2011-12-08 21:24:08 +0000
committerAlasdair Kergon <agk@redhat.com>2011-12-08 21:24:08 +0000
commit594753751a2a306e6391b2f2bf82e043c86224ff (patch)
tree1df4ac017c31673317ec9c35205946767bf94851
parent585aaa922fed9e74ca44a06d4055d0b85a980106 (diff)
downloadlvm2-594753751a2a306e6391b2f2bf82e043c86224ff.tar.gz
lvm2-594753751a2a306e6391b2f2bf82e043c86224ff.tar.xz
lvm2-594753751a2a306e6391b2f2bf82e043c86224ff.zip
Only use built-in stack size in clvmd - ignore lvm.conf.
-rw-r--r--WHATS_NEW2
-rw-r--r--daemons/clvmd/lvm-functions.c2
-rw-r--r--daemons/lvmetad/testclient.c2
-rw-r--r--lib/commands/toolcontext.c4
-rw-r--r--lib/commands/toolcontext.h4
-rw-r--r--lib/mm/memlock.c7
-rw-r--r--liblvm/lvm_base.c2
-rw-r--r--tools/lvmcmdline.c2
8 files changed, 15 insertions, 10 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 67086570..10011f58 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -47,7 +47,7 @@ Version 2.02.89 -
Fix lv_info open_count test for disabled verify_udev_operations (2.02.86).
Simplify code for lvm worker thread in clvmd.
Use pthread_barrier to synchronize clvmd threads at startup.
- Limit clvmd's thread size to 128KiB.
+ Limit clvmd's thread size to 128KiB and ignore activation/reserved_stack.
Reduce default preallocated stack size to 64KiB.
Add check for access through NULL pointer when refresh_filter() fails.
Use pthread condition for SINGLENODE lock implementation.
diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c
index 273245fe..9f11d22a 100644
--- a/daemons/clvmd/lvm-functions.c
+++ b/daemons/clvmd/lvm-functions.c
@@ -880,7 +880,7 @@ int init_clvm(struct dm_hash_table *excl_uuid)
if (!get_initial_state(excl_uuid))
log_error("Cannot load initial lock states.");
- if (!(cmd = create_toolcontext(1, NULL, 0))) {
+ if (!(cmd = create_toolcontext(1, NULL, 0, 1))) {
log_error("Failed to allocate command context");
return 0;
}
diff --git a/daemons/lvmetad/testclient.c b/daemons/lvmetad/testclient.c
index f5b5cf39..c4cf7c58 100644
--- a/daemons/lvmetad/testclient.c
+++ b/daemons/lvmetad/testclient.c
@@ -108,7 +108,7 @@ int main(int argc, char **argv) {
if (argc > 1) {
int i;
- struct cmd_context *cmd = create_toolcontext(0, NULL, 0);
+ struct cmd_context *cmd = create_toolcontext(0, NULL, 0, 0);
for (i = 1; i < argc; ++i) {
const char *uuid = NULL;
scan(h, argv[i]);
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 0bbbc358..c64df84b 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -1224,7 +1224,8 @@ static void _init_globals(struct cmd_context *cmd)
/* Entry point */
struct cmd_context *create_toolcontext(unsigned is_long_lived,
const char *system_dir,
- unsigned set_buffering)
+ unsigned set_buffering,
+ unsigned threaded)
{
struct cmd_context *cmd;
@@ -1246,6 +1247,7 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived,
return NULL;
}
cmd->is_long_lived = is_long_lived;
+ cmd->threaded = threaded ? 1 : 0;
cmd->handles_missing_pvs = 0;
cmd->handles_unknown_segments = 0;
cmd->independent_metadata_areas = 0;
diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index 143a9a0e..6fba6869 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -85,6 +85,7 @@ struct cmd_context {
unsigned partial_activation:1;
unsigned si_unit_consistency:1;
unsigned metadata_read_only:1;
+ unsigned threaded:1; /* Set if running within a thread e.g. clvmd */
unsigned independent_metadata_areas:1; /* Active formats have MDAs outside PVs */
@@ -117,7 +118,8 @@ struct cmd_context {
*/
struct cmd_context *create_toolcontext(unsigned is_long_lived,
const char *system_dir,
- unsigned set_buffering);
+ unsigned set_buffering,
+ unsigned threaded);
void destroy_toolcontext(struct cmd_context *cmd);
int refresh_toolcontext(struct cmd_context *cmd);
int refresh_filters(struct cmd_context *cmd);
diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c
index 8bf9f22d..3ef407b7 100644
--- a/lib/mm/memlock.c
+++ b/lib/mm/memlock.c
@@ -445,9 +445,10 @@ void memlock_dec_daemon(struct cmd_context *cmd)
void memlock_init(struct cmd_context *cmd)
{
- _size_stack = find_config_tree_int(cmd,
- "activation/reserved_stack",
- DEFAULT_RESERVED_STACK) * 1024;
+ /* When threaded, caller already limited stack size so just use the default. */
+ _size_stack = 1024 * (cmd->threaded ? DEFAULT_RESERVED_STACK :
+ find_config_tree_int(cmd, "activation/reserved_stack",
+ DEFAULT_RESERVED_STACK));
_size_malloc_tmp = find_config_tree_int(cmd,
"activation/reserved_memory",
DEFAULT_RESERVED_MEMORY) * 1024;
diff --git a/liblvm/lvm_base.c b/liblvm/lvm_base.c
index 99844489..599c859a 100644
--- a/liblvm/lvm_base.c
+++ b/liblvm/lvm_base.c
@@ -37,7 +37,7 @@ lvm_t lvm_init(const char *system_dir)
/* create context */
/* FIXME: split create_toolcontext */
/* FIXME: make all globals configurable */
- cmd = create_toolcontext(0, system_dir, 1);
+ cmd = create_toolcontext(0, system_dir, 1, 0);
if (!cmd)
return NULL;
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 1dab59d5..4bcf7bba 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -1237,7 +1237,7 @@ struct cmd_context *init_lvm(void)
if (!udev_init_library_context())
stack;
- if (!(cmd = create_toolcontext(0, NULL, 1)))
+ if (!(cmd = create_toolcontext(0, NULL, 1, 0)))
return_NULL;
_cmdline.arg_props = &_arg_props[0];