diff options
author | Alasdair Kergon <agk@redhat.com> | 2011-12-08 21:24:08 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2011-12-08 21:24:08 +0000 |
commit | 594753751a2a306e6391b2f2bf82e043c86224ff (patch) | |
tree | 1df4ac017c31673317ec9c35205946767bf94851 | |
parent | 585aaa922fed9e74ca44a06d4055d0b85a980106 (diff) | |
download | lvm2-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_NEW | 2 | ||||
-rw-r--r-- | daemons/clvmd/lvm-functions.c | 2 | ||||
-rw-r--r-- | daemons/lvmetad/testclient.c | 2 | ||||
-rw-r--r-- | lib/commands/toolcontext.c | 4 | ||||
-rw-r--r-- | lib/commands/toolcontext.h | 4 | ||||
-rw-r--r-- | lib/mm/memlock.c | 7 | ||||
-rw-r--r-- | liblvm/lvm_base.c | 2 | ||||
-rw-r--r-- | tools/lvmcmdline.c | 2 |
8 files changed, 15 insertions, 10 deletions
@@ -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]; |