* [PATCH v2 00/21] libmultipath: checkers overhaul
@ 2018-10-23 21:58 Martin Wilck
2018-10-23 21:58 ` [PATCH v2 11/21] multipathd: improve checker message logging Martin Wilck
0 siblings, 1 reply; 2+ messages in thread
From: Martin Wilck @ 2018-10-23 21:58 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: Martin Wilck, dm-devel
Hi Christophe,
As Ben has ack'd v2 of my "various multipath-tools patches"
series now, I'm resending my previously submitted series
"checkers overhaul" rebased on top of that. To spare the
list unnecessary repetition, I resend only this cover letter
and patch 11/21, because all others are exactly the same as
before.
This series starts with a few minor fixes and then attempts
an overhaul of the checker code.
First, there's a block of patches to get rid of the "message"
char array in struct checker, replacing it with an integer.
This topic had been touched in recent discussion between Ben
and myself.
The next larger block fixes problems with checkers that try
to check unsupported devices. It's an interesting experience
to configure wrong checkers for the existing devices and see
what happens. With these patches, paths won't be falsely
teared down any more in such situations.
The last patch cleans up the checker data structure by splitting
it into a "checker class" and the path "checker instance".
There's more work to do in this area, but this is a start.
Regards,
Martin
Martin Wilck (21):
libmultipath: fix use of uninitialized memory in write()
libmultipath: fix memory leaks from scandir() use
libmultipath/checkers: replace message by msgid
libmultipath/checkers: cciss_tur: use message id
libmultipath/checkers: directio: use message id
libmultipath/checkers: emc_clariion: use message id
libmultipath/checkers: hp_sw: use message id
libmultipath/checkers: rdac: use message id
libmultipath/checkers: readsector0: use message id
libmultipath/checkers: tur: use message id
multipathd: improve checker message logging
libmultipath/checkers: support unsupported paths
libmultipath: clariion checker: leave unsupported paths alone
libmultipath: hp_sw checker: leave unsupported paths alone
libmultipath: rdac checker: leave unsupported paths alone
libmultipath: tur checker: leave unsupported paths alone
libmultipath: pathinfo: don't blank wwid if checker fails
multipathd: check_path: improve logging for "unusable path" case
libmultipath: coalesce_paths: improve logging of orphaned paths
libmultipath: sync_map_state: log failing paths
libmultipath/checkers: cleanup class/instance model
libmultipath/checkers.c | 196 +++++++++++++++++----------
libmultipath/checkers.h | 65 ++++++---
libmultipath/checkers/cciss_tur.c | 13 +-
libmultipath/checkers/directio.c | 29 ++--
libmultipath/checkers/emc_clariion.c | 108 ++++++++++++---
libmultipath/checkers/hp_sw.c | 39 ++++--
libmultipath/checkers/rdac.c | 92 +++++++++----
libmultipath/checkers/readsector0.c | 7 +-
libmultipath/checkers/tur.c | 60 ++++----
libmultipath/config.c | 10 +-
libmultipath/configure.c | 10 +-
libmultipath/discovery.c | 7 +-
libmultipath/foreign.c | 5 +-
libmultipath/foreign/nvme.c | 6 +-
libmultipath/print.c | 2 +-
libmultipath/propsel.c | 19 +--
libmultipath/structs_vec.c | 5 +-
libmultipath/sysfs.c | 5 +-
libmultipath/util.c | 9 ++
libmultipath/util.h | 9 ++
multipathd/main.c | 36 +++--
21 files changed, 492 insertions(+), 240 deletions(-)
--
2.19.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH v2 11/21] multipathd: improve checker message logging
2018-10-23 21:58 [PATCH v2 00/21] libmultipath: checkers overhaul Martin Wilck
@ 2018-10-23 21:58 ` Martin Wilck
0 siblings, 0 replies; 2+ messages in thread
From: Martin Wilck @ 2018-10-23 21:58 UTC (permalink / raw)
To: Christophe Varoqui; +Cc: Martin Wilck, dm-devel
Don't rely on any variables being defined in LOG_MSG.
If message log level is low, don't bother to fetch the message.
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
multipathd/main.c | 33 ++++++++++++++++++++++-----------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/multipathd/main.c b/multipathd/main.c
index bf5f12a6..904fc693 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -89,12 +89,22 @@ static int use_watchdog;
#define FILE_NAME_SIZE 256
#define CMDSIZE 160
-#define LOG_MSG(a, b) \
-do { \
- if (pp->offline) \
- condlog(a, "%s: %s - path offline", pp->mpp->alias, pp->dev); \
- else if (strlen(b)) \
- condlog(a, "%s: %s - %s", pp->mpp->alias, pp->dev, b); \
+#define LOG_MSG(lvl, verb, pp) \
+do { \
+ if (lvl <= verb) { \
+ if (pp->offline) \
+ condlog(lvl, "%s: %s - path offline", \
+ pp->mpp->alias, pp->dev); \
+ else { \
+ const char *__m = \
+ checker_message(&pp->checker); \
+ \
+ if (strlen(__m)) \
+ condlog(lvl, "%s: %s - %s", \
+ pp->mpp->alias, \
+ pp->dev, __m); \
+ } \
+ } \
} while(0)
struct mpath_event_param
@@ -1811,7 +1821,7 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
int add_active;
int disable_reinstate = 0;
int oldchkrstate = pp->chkrstate;
- int retrigger_tries, checkint, max_checkint;
+ int retrigger_tries, checkint, max_checkint, verbosity;
struct config *conf;
int ret;
@@ -1828,6 +1838,7 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
retrigger_tries = conf->retrigger_tries;
checkint = conf->checkint;
max_checkint = conf->max_checkint;
+ verbosity = conf->verbosity;
put_multipath_config(conf);
if (!pp->mpp && pp->initialized == INIT_MISSING_UDEV) {
if (pp->retriggers < retrigger_tries) {
@@ -1970,7 +1981,7 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
int oldstate = pp->state;
pp->state = newstate;
- LOG_MSG(1, checker_message(&pp->checker));
+ LOG_MSG(1, verbosity, pp);
/*
* upon state change, reset the checkint
@@ -2058,7 +2069,7 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
return 0;
}
} else {
- LOG_MSG(4, checker_message(&pp->checker));
+ LOG_MSG(4, verbosity, pp);
if (pp->checkint != max_checkint) {
/*
* double the next check delay.
@@ -2088,9 +2099,9 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
log_checker_err = conf->log_checker_err;
put_multipath_config(conf);
if (log_checker_err == LOG_CHKR_ERR_ONCE)
- LOG_MSG(3, checker_message(&pp->checker));
+ LOG_MSG(3, verbosity, pp);
else
- LOG_MSG(2, checker_message(&pp->checker));
+ LOG_MSG(2, verbosity, pp);
}
}
--
2.19.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-10-23 21:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-23 21:58 [PATCH v2 00/21] libmultipath: checkers overhaul Martin Wilck
2018-10-23 21:58 ` [PATCH v2 11/21] multipathd: improve checker message logging Martin Wilck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox