From a45da5f6768e36535340982e1185e9ab234d9d7a Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Thu, 31 Aug 2006 22:21:00 +0000 Subject: [PATCH] lvm.static uses built-in cluster locking instead of external locking. Don't attempt to load shared libraries if built statically. --- WHATS_NEW | 2 ++ lib/commands/toolcontext.c | 10 ++++++---- lib/locking/locking.c | 15 +++++++++------ lib/misc/sharedlib.c | 7 +++++++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index b301c623d..ee8e26361 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,7 @@ Version 2.02.10 - ================================== + lvm.static uses built-in cluster locking instead of external locking. + Don't attempt to load shared libraries if built statically. Change default locking_lib to liblvm2clusterlock.so. Add skip_dev_dir() to process command line VGs. Stop clvmd complaining about nodes that have left the cluster. diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c index 08068571e..df9a259cb 100644 --- a/lib/commands/toolcontext.c +++ b/lib/commands/toolcontext.c @@ -646,8 +646,9 @@ static int _init_formats(struct cmd_context *cmd) #endif #ifdef HAVE_LIBDL - /* Load any formats in shared libs */ - if ((cn = find_config_tree_node(cmd, "global/format_libraries"))) { + /* Load any formats in shared libs if not static */ + if (!cmd->is_static && + (cn = find_config_tree_node(cmd, "global/format_libraries"))) { struct config_value *cv; struct format_type *(*init_format_fn) (struct cmd_context *); @@ -740,8 +741,9 @@ static int _init_segtypes(struct cmd_context *cmd) #endif #ifdef HAVE_LIBDL - /* Load any formats in shared libs */ - if ((cn = find_config_tree_node(cmd, "global/segment_libraries"))) { + /* Load any formats in shared libs unless static */ + if (!cmd->is_static && + (cn = find_config_tree_node(cmd, "global/segment_libraries"))) { struct config_value *cv; struct segment_type *(*init_segtype_fn) (struct cmd_context *); diff --git a/lib/locking/locking.c b/lib/locking/locking.c index b1019baf4..dfe6c6a95 100644 --- a/lib/locking/locking.c +++ b/lib/locking/locking.c @@ -134,24 +134,27 @@ int init_locking(int type, struct cmd_context *cmd) return 1; case 1: + log_very_verbose("File-based locking selected."); if (!init_file_locking(&_locking, cmd)) break; - log_very_verbose("File-based locking enabled."); return 1; #ifdef HAVE_LIBDL case 2: - if (!init_external_locking(&_locking, cmd)) - break; - log_very_verbose("External locking enabled."); - return 1; + if (!cmd->is_static) { + log_very_verbose("External locking selected."); + if (!init_external_locking(&_locking, cmd)) + break; + return 1; + } + /* Fall through */ #endif #ifdef CLUSTER_LOCKING_INTERNAL case 3: + log_very_verbose("Cluster locking selected."); if (!init_cluster_locking(&_locking, cmd)) break; - log_very_verbose("Cluster locking enabled."); return 1; #endif diff --git a/lib/misc/sharedlib.c b/lib/misc/sharedlib.c index 9f382a350..556078e12 100644 --- a/lib/misc/sharedlib.c +++ b/lib/misc/sharedlib.c @@ -17,6 +17,7 @@ #include "config.h" #include "lvm-string.h" #include "sharedlib.h" +#include "toolcontext.h" #include #include @@ -43,6 +44,12 @@ void *load_shared_library(struct cmd_context *cmd, const char *libname, char path[PATH_MAX]; void *library; + if (cmd->is_static) { + log_error("Not loading shared %s library %s in static mode.", + desc, libname); + return NULL; + } + get_shared_library_path(cmd, libname, path, sizeof(path)); log_very_verbose("Opening shared %s library %s", desc, path);