]> sourceware.org Git - lvm2.git/commitdiff
Only use built-in stack size in clvmd - ignore lvm.conf.
authorAlasdair Kergon <agk@redhat.com>
Thu, 8 Dec 2011 21:24:08 +0000 (21:24 +0000)
committerAlasdair Kergon <agk@redhat.com>
Thu, 8 Dec 2011 21:24:08 +0000 (21:24 +0000)
WHATS_NEW
daemons/clvmd/lvm-functions.c
daemons/lvmetad/testclient.c
lib/commands/toolcontext.c
lib/commands/toolcontext.h
lib/mm/memlock.c
liblvm/lvm_base.c
tools/lvmcmdline.c

index 670865705e234cbf413d1b027ab09c5fc84c6b09..10011f58a8deacd3bb76b685455d2e9a249e4c44 100644 (file)
--- 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.
index 273245fed3ae5d01e5ce60113cbbd8de1af1c456..9f11d22a7ad9f954e19377877f67bc4f82280aef 100644 (file)
@@ -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;
        }
index f5b5cf3975e65a903e31d476c13a84a6b555e677..c4cf7c5824daac5247c38c05abeef82b2fccaea5 100644 (file)
@@ -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]);
index 0bbbc35859f1c05cc92d14dc14ce8d877ab767b9..c64df84b752996afe54def2b5c130eb917d23124 100644 (file)
@@ -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;
index 143a9a0e6e107d46e44284f28bf20fac6d0a3ef5..6fba686922b3c9438bc0acdcc1acc4c06228a5ee 100644 (file)
@@ -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);
index 8bf9f22d884d89b6ad2fffd63f77552df7439e61..3ef407b75e5438197f50615846c5c377b6a07e0b 100644 (file)
@@ -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;
index 998444897affe4bae2aefec6d3bf84390abda856..599c859a3a166f8992311e34f8ae2c01cfb9f441 100644 (file)
@@ -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;
 
index 1dab59d5c28c683180023c085560ced986e139a1..4bcf7bbafe10be2deddbb68b566698e291ee7359 100644 (file)
@@ -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];
This page took 0.048913 seconds and 5 git commands to generate.