*/
int init_locking(int type, struct cmd_context *cmd)
{
+ int suppress_messages = 0;
+
+ if (ignorelockingfailure() && getenv("LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES"))
+ suppress_messages = 1;
+
if (type < 0)
type = find_config_tree_int(cmd, "global/locking_type", 1);
_blocking_supported ? "" : "Non-blocking ");
if (!init_file_locking(&_locking, cmd)) {
- log_error("File-based locking initialisation failed.");
+ log_error_suppress(suppress_messages,
+ "File-based locking initialisation failed.");
break;
}
return 1;
case 3:
log_very_verbose("Cluster locking selected.");
if (!init_cluster_locking(&_locking, cmd)) {
- log_error("Internal cluster locking initialisation failed.");
+ log_error_suppress(suppress_messages,
+ "Internal cluster locking initialisation failed.");
break;
}
return 1;
find_config_tree_int(cmd, "locking/fallback_to_local_locking",
find_config_tree_int(cmd, "global/fallback_to_local_locking",
DEFAULT_FALLBACK_TO_LOCAL_LOCKING))) {
- log_warn("WARNING: Falling back to local file-based locking.");
- log_warn("Volume Groups with the clustered attribute will "
- "be inaccessible.");
+ log_warn_suppress(suppress_messages,
+ "WARNING: Falling back to local file-based locking.");
+ log_warn_suppress(suppress_messages,
+ "Volume Groups with the clustered attribute will "
+ "be inaccessible.");
if (init_file_locking(&_locking, cmd))
return 1;
else
- log_error("File-based locking initialisation failed.");
+ log_error_suppress(suppress_messages,
+ "File-based locking initialisation failed.");
}
if (!ignorelockingfailure())
#define log_info(x...) LOG_LINE(_LOG_INFO, x)
#define log_notice(x...) LOG_LINE(_LOG_NOTICE, x)
#define log_warn(x...) LOG_LINE(_LOG_WARN | _LOG_STDERR, x)
+#define log_warn_suppress(s, x...) LOG_LINE(s ? _LOG_NOTICE : _LOG_WARN | _LOG_STDERR, x)
#define log_err(x...) LOG_LINE_WITH_ERRNO(_LOG_ERR, EUNCLASSIFIED, x)
+#define log_err_suppress(s, x...) LOG_LINE_WITH_ERRNO(s ? _LOG_NOTICE : _LOG_ERR, EUNCLASSIFIED, x)
#define log_fatal(x...) LOG_LINE_WITH_ERRNO(_LOG_FATAL, EUNCLASSIFIED, x)
#define stack log_debug("<backtrace>") /* Backtrace on error */
#define log_verbose(args...) log_notice(args)
#define log_print(args...) LOG_LINE(_LOG_WARN, args)
#define log_error(args...) log_err(args)
+#define log_error_suppress(s, args...) log_err_suppress(s, args)
#define log_errno(args...) LOG_LINE_WITH_ERRNO(_LOG_ERR, args)
/* System call equivalents */