<div dir="ltr">Merged.<div>Thanks.</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Nov 2, 2018 at 1:23 PM Martin Wilck <<a href="mailto:mwilck@suse.com">mwilck@suse.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Christophe,<br>
<br>
This is v5 of my "checkers overhaul" series. Changed wrt v4<br>
are 03/22, 11/22, and 21/22. I re-post the whole series to<br>
avoid confusion.<br>
<br>
This series starts with a few minor fixes and then attempts<br>
an overhaul of the checker code.<br>
<br>
First, there's a block of patches to get rid of the "message"<br>
char array in struct checker, replacing it with an integer.<br>
This topic had been touched in recent discussion between Ben<br>
and myself. You may want to collaps the patches in this block<br>
(03/21-11/21) into one when commiting; compilation errors will<br>
arise if only part of them is a applied.<br>
<br>
The next larger block fixes problems with checkers that try<br>
to check unsupported devices. It's an interesting experience<br>
to configure wrong checkers for the existing devices and see<br>
what happens. With these patches, paths won't be falsely<br>
teared down any more in such situations.<br>
<br>
The last patch cleans up the checker data structure by splitting<br>
it into a "checker class" and the path "checker instance".<br>
<br>
There's more work to do in this area, but this is a start.<br>
<br>
----<br>
changes v4->v5<br>
 - 03/21: made checker_message() const again, as 22/22 is gone.<br>
   Got rid of the static buffer in checker_message() by simply returning<br>
   the constant message strings, as suggested by Ben in his review of v4.<br>
   This implies printf format changes in callers; changed format in get_state().<br>
 - 11/21: Changed printf format in check_path() (see above).<br>
 - 21/22: rebased, no actual changes (kept Ben's Reviewed-by).<br>
 - 22/22: dropped, obsolete.<br>
<br>
Changes v3->v4:<br>
 - 03/22: renamed CHECKER_LAST_GENERIC_MSGID -> CHECKER_GENERIC_MSGTABLE_SIZE<br>
          (Ben).<br>
 - 12/22: rebased on top of changed 03/22.<br>
<br>
Changes v2->v3:<br>
 - 03/22: fixed one minor issue mentioned by Ben;<br>
          reverted the const-ification of checker_message(),<br>
          as it will be reverted in 22/22 anyway.<br>
 - 13/22: fix clariion checker semantics (Ben).<br>
 - 21/22: rebased on top of updated 03/22.<br>
 - 22/22: fix thread-safety issue from 03/22 (Ben).<br>
<br>
Changes v1->v2:<br>
 - 11/22: rebased on top of "various multipath-tools patches" series<br>
<br>
Martin Wilck (21):<br>
  libmultipath: fix use of uninitialized memory in write()<br>
  libmultipath: fix memory leaks from scandir() use<br>
  libmultipath/checkers: replace message by msgid<br>
  libmultipath/checkers: cciss_tur: use message id<br>
  libmultipath/checkers: directio: use message id<br>
  libmultipath/checkers: emc_clariion: use message id<br>
  libmultipath/checkers: hp_sw: use message id<br>
  libmultipath/checkers: rdac: use message id<br>
  libmultipath/checkers: readsector0: use message id<br>
  libmultipath/checkers: tur: use message id<br>
  multipathd: improve checker message logging<br>
  libmultipath/checkers: support unsupported paths<br>
  libmultipath: clariion checker: leave unsupported paths alone<br>
  libmultipath: hp_sw checker: leave unsupported paths alone<br>
  libmultipath: rdac checker: leave unsupported paths alone<br>
  libmultipath: tur checker: leave unsupported paths alone<br>
  libmultipath: pathinfo: don't blank wwid if checker fails<br>
  multipathd: check_path: improve logging for "unusable path" case<br>
  libmultipath: coalesce_paths: improve logging of orphaned paths<br>
  libmultipath: sync_map_state: log failing paths<br>
  libmultipath/checkers: cleanup class/instance model<br>
<br>
 libmultipath/checkers.c              | 187 +++++++++++++++++----------<br>
 libmultipath/checkers.h              |  69 ++++++----<br>
 libmultipath/checkers/cciss_tur.c    |  13 +-<br>
 libmultipath/checkers/directio.c     |  29 +++--<br>
 libmultipath/checkers/emc_clariion.c | 114 +++++++++++++---<br>
 libmultipath/checkers/hp_sw.c        |  39 +++---<br>
 libmultipath/checkers/rdac.c         |  92 +++++++++----<br>
 libmultipath/checkers/readsector0.c  |   7 +-<br>
 libmultipath/checkers/tur.c          |  60 +++++----<br>
 libmultipath/config.c                |  10 +-<br>
 libmultipath/configure.c             |  10 +-<br>
 libmultipath/discovery.c             |  11 +-<br>
 libmultipath/foreign.c               |   5 +-<br>
 libmultipath/foreign/nvme.c          |   6 +-<br>
 libmultipath/print.c                 |   2 +-<br>
 libmultipath/propsel.c               |  19 +--<br>
 libmultipath/structs_vec.c           |   5 +-<br>
 libmultipath/sysfs.c                 |   5 +-<br>
 libmultipath/util.c                  |   9 ++<br>
 libmultipath/util.h                  |   9 ++<br>
 multipathd/main.c                    |  38 ++++--<br>
 21 files changed, 497 insertions(+), 242 deletions(-)<br>
<br>
-- <br>
2.19.1<br>
<br>
</blockquote></div>