2cf40b2f98
- Add 0073-libmultipath-util-constify-function-arguments.patch - Add 0074-libmultipath-constify-file-argument-in-config-parser.patch - Add 0075-libmultipath-provide-defaults-for-get-put-_multipath.patch - Add 0076-libmpathpersist-allow-using-libmultipath-get-put-_mu.patch - Add 0077-multipath-use-get_put-_multipath_config-from-libmult.patch - Add 0078-mpathpersist-use-get-put-_multipath_config-from-libm.patch - Add 0079-libmultipath-add-udev-and-logsink-symbols.patch - Add 0080-multipath-remove-logsink-and-udev.patch - Add 0081-libmpathpersist-call-libmultipath_-init-exit.patch - Add 0082-mpathpersist-remove-logsink-and-udev.patch - Add 0083-multipathd-remove-logsink-and-udev.patch * Pull in upsteam library changes - Add 0084-libmpathvalid-use-default-_multipath_config-udev-and.patch - Add 0085-Revert-libmultipath-add-ignore_udev_uid-option.patch - Add 0086-libmultipath-change-log-level-for-null-uid_attribute.patch - Add 0087-libmultipath-orphan_paths-avoid-BUG-message.patch * update libmpathvalid to use upstream library changes. changes submitted upstream
181 lines
4.4 KiB
Diff
181 lines
4.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Date: Sat, 26 Sep 2020 23:25:46 -0500
|
|
Subject: [PATCH] libmpathvalid: use default *_multipath_config, udev, and
|
|
logsink
|
|
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmpathvalid/libmpathvalid.version | 2 +-
|
|
libmpathvalid/mpath_valid.c | 73 ++++++++++++++++++++---------
|
|
libmpathvalid/mpath_valid.h | 12 +++--
|
|
3 files changed, 61 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/libmpathvalid/libmpathvalid.version b/libmpathvalid/libmpathvalid.version
|
|
index 4d8a8ba4..3bd0d3c5 100644
|
|
--- a/libmpathvalid/libmpathvalid.version
|
|
+++ b/libmpathvalid/libmpathvalid.version
|
|
@@ -1,7 +1,7 @@
|
|
MPATH_1.0 {
|
|
global:
|
|
- mpathvalid_conf;
|
|
mpathvalid_init;
|
|
+ mpathvalid_reload_config;
|
|
mpathvalid_exit;
|
|
mpathvalid_is_path;
|
|
mpathvalid_get_mode;
|
|
diff --git a/libmpathvalid/mpath_valid.c b/libmpathvalid/mpath_valid.c
|
|
index 6153e8b7..d839dbac 100644
|
|
--- a/libmpathvalid/mpath_valid.c
|
|
+++ b/libmpathvalid/mpath_valid.c
|
|
@@ -15,9 +15,7 @@
|
|
#include "mpath_cmd.h"
|
|
#include "valid.h"
|
|
#include "mpath_valid.h"
|
|
-
|
|
-static struct config default_config = { .verbosity = -1 };
|
|
-struct config *mpathvalid_conf = &default_config;
|
|
+#include "debug.h"
|
|
|
|
static unsigned int get_conf_mode(struct config *conf)
|
|
{
|
|
@@ -68,38 +66,70 @@ static int convert_result(int result) {
|
|
}
|
|
|
|
int
|
|
-mpathvalid_init(int verbosity)
|
|
+mpathvalid_init(int verbosity, int log_style)
|
|
{
|
|
unsigned int version[3];
|
|
struct config *conf;
|
|
|
|
- default_config.verbosity = verbosity;
|
|
- skip_libmp_dm_init();
|
|
- conf = load_config(DEFAULT_CONFIGFILE);
|
|
- if (!conf)
|
|
+ logsink = log_style;
|
|
+ if (libmultipath_init())
|
|
return -1;
|
|
+ conf = get_multipath_config();
|
|
conf->verbosity = verbosity;
|
|
- if (dm_prereq(version))
|
|
+ put_multipath_config(conf);
|
|
+
|
|
+ skip_libmp_dm_init();
|
|
+ if (init_config(DEFAULT_CONFIGFILE))
|
|
goto fail;
|
|
- memcpy(conf->version, version, sizeof(version));
|
|
+ if (dm_prereq(version))
|
|
+ goto fail_config;
|
|
|
|
- mpathvalid_conf = conf;
|
|
+ conf = get_multipath_config();
|
|
+ conf->verbosity = verbosity;
|
|
+ memcpy(conf->version, version, sizeof(version));
|
|
+ put_multipath_config(conf);
|
|
return 0;
|
|
+
|
|
+fail_config:
|
|
+ uninit_config();
|
|
fail:
|
|
- free_config(conf);
|
|
+ libmultipath_exit();
|
|
return -1;
|
|
}
|
|
|
|
int
|
|
-mpathvalid_exit(void)
|
|
+mpathvalid_reload_config(void)
|
|
{
|
|
- struct config *conf = mpathvalid_conf;
|
|
+ int verbosity;
|
|
+ unsigned int version[3];
|
|
+ struct config *conf;
|
|
+
|
|
+ conf = get_multipath_config();
|
|
+ memcpy(version, conf->version, sizeof(version));
|
|
+ verbosity = conf->verbosity;
|
|
+ put_multipath_config(conf);
|
|
|
|
- default_config.verbosity = -1;
|
|
- if (mpathvalid_conf == &default_config)
|
|
- return 0;
|
|
- mpathvalid_conf = &default_config;
|
|
- free_config(conf);
|
|
+ uninit_config();
|
|
+
|
|
+ conf = get_multipath_config();
|
|
+ conf->verbosity = verbosity;
|
|
+ put_multipath_config(conf);
|
|
+
|
|
+ if (init_config(DEFAULT_CONFIGFILE))
|
|
+ return -1;
|
|
+
|
|
+ conf = get_multipath_config();
|
|
+ conf->verbosity = verbosity;
|
|
+ memcpy(conf->version, version, sizeof(version));
|
|
+ put_multipath_config(conf);
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+int
|
|
+mpathvalid_exit(void)
|
|
+{
|
|
+ uninit_config();
|
|
+ libmultipath_exit();
|
|
return 0;
|
|
}
|
|
|
|
@@ -121,9 +151,10 @@ mpathvalid_is_path(const char *name, unsigned int mode, char **wwid,
|
|
|
|
if (!name || mode >= MPATH_MAX_MODE)
|
|
return r;
|
|
-
|
|
if (nr_paths > 0 && !path_wwids)
|
|
return r;
|
|
+ if (!udev)
|
|
+ return r;
|
|
|
|
pp = alloc_path();
|
|
if (!pp)
|
|
@@ -136,7 +167,7 @@ mpathvalid_is_path(const char *name, unsigned int mode, char **wwid,
|
|
}
|
|
|
|
conf = get_multipath_config();
|
|
- if (!conf || conf == &default_config)
|
|
+ if (!conf)
|
|
goto out_wwid;
|
|
if (mode != MPATH_DEFAULT)
|
|
set_conf_mode(conf, mode);
|
|
diff --git a/libmpathvalid/mpath_valid.h b/libmpathvalid/mpath_valid.h
|
|
index 7fd8aa47..c83b8da5 100644
|
|
--- a/libmpathvalid/mpath_valid.h
|
|
+++ b/libmpathvalid/mpath_valid.h
|
|
@@ -42,15 +42,19 @@ enum mpath_valid_result {
|
|
MPATH_IS_MAYBE_VALID,
|
|
};
|
|
|
|
-struct config;
|
|
-extern struct config *mpathvalid_conf;
|
|
-int mpathvalid_init(int verbosity);
|
|
+enum mpath_valid_log_style {
|
|
+ MPATH_LOG_STDIO = -1,
|
|
+ MPATH_LOG_STDIO_TIMESTAMP,
|
|
+ MPATH_LOG_SYSLOG,
|
|
+};
|
|
+
|
|
+int mpathvalid_init(int verbosity, int log_style);
|
|
+int mpathvalid_reload_config(void);
|
|
int mpathvalid_exit(void);
|
|
unsigned int mpathvalid_get_mode(void);
|
|
int mpathvalid_is_path(const char *name, unsigned int mode, char **wwid,
|
|
const char **path_wwids, unsigned int nr_paths);
|
|
|
|
-
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
--
|
|
2.17.2
|
|
|