[dm-devel] [PATCH v2 00/14] multipath marginal pathgroups

Benjamin Marzinski bmarzins at redhat.com
Fri Aug 23 17:48:44 UTC 2019


The first patch in this series is simply a resend of my previous patch
to fix vector_foreach_slot_backwards(). The rest of the patches are
related to adding support for an alternative way to deal with marginal
paths. Instead of delaying their reinstatement, which can cause problems
if multipath isn't set to queue IO when there are no usable paths, this
patchset adds a marginal_pathgroups option. If this is set, marginal
paths will be reinstated, but added to seperate marginal pathgroups.
They will remain there until the time when they would normally be
reinstated, at which point they will be returned to their regular
pathgroups. Marginal pathgroups will have a priority lower than all
regular pathgroups. This has the advantage of continuing to track
marginal paths, even if all the other paths go down temporarily, so that
multipath can switch back to the normal paths as soon as they come back
up.  This code also allows users to manually move paths between marginal
and regular pathgroups. This is especially important for Broadcom's
Fiber Channel Transport Daemon, since it doesn't use the multipathd
marginal path detectors, and thus will not automatically reinstate
marginal paths when all other paths have failed.

https://www.mail-archive.com/dm-devel@redhat.com/msg12956.html

Changes in v2:
- patch 04/14 is a combination of the old 04/16, 06/16, and 07/16
  patches, based on Martin's suggestion. Since all the code is the same
  as the previous patches, I have kept Martin's Reviewed-by

- old patch 09/16 has been moved up to 05/14 based on Martin's
  suggestion. There are no code changes

- patch 09/14 (old patch 11/16) moves path_group_prio_update()
  earlier in select_path_group() to make sure the pgp->marginal check
  uses a current value.

- patch 12/14 (old patch 14/16) changes how delay_checks is selected,
  to ignore the delay_checks values if any san_path_err options are
  set, based on Martin's suggestions. It also changes the man page
  wording.

Benjamin Marzinski (14):
  libmultipath: make vector_foreach_slot_backwards work as expected
  libmultipath: add marginal paths and groups infrastructure
  tests: add path grouping policy unit tests.
  libmultipath: add wrapper function around pgpolicyfn
  tests: update pgpolicy tests to work with group_paths()
  libmultipath: fix double free in pgpolicyfn error paths
  libmultipath: consolidate group_by_* functions
  libmultipath: make pgpolicyfn take a paths vector
  libmultipath: make group_paths handle marginal paths
  tests: add tests for grouping marginal paths.
  libmultipath: add marginal_pathgroups config option
  libmutipath: deprecate delay_*_checks
  multipathd: use marginal_pathgroups
  multipath: update man pages

 libmultipath/config.h      |    1 +
 libmultipath/configure.c   |   23 +-
 libmultipath/dict.c        |    3 +
 libmultipath/pgpolicies.c  |  346 +++++-------
 libmultipath/pgpolicies.h  |   12 +-
 libmultipath/print.c       |   18 +
 libmultipath/print.h       |    6 +-
 libmultipath/propsel.c     |   89 +++-
 libmultipath/propsel.h     |    3 +-
 libmultipath/structs.c     |   16 +-
 libmultipath/structs.h     |   15 +-
 libmultipath/switchgroup.c |   15 +-
 libmultipath/vector.h      |    2 +-
 multipath/multipath.conf.5 |   74 ++-
 multipathd/cli.c           |    5 +
 multipathd/cli.h           |    4 +
 multipathd/cli_handlers.c  |   91 ++++
 multipathd/cli_handlers.h  |    3 +
 multipathd/main.c          |   90 ++--
 multipathd/multipathd.8    |   19 +
 tests/Makefile             |    2 +-
 tests/pgpolicy.c           | 1036 ++++++++++++++++++++++++++++++++++++
 22 files changed, 1523 insertions(+), 350 deletions(-)
 create mode 100644 tests/pgpolicy.c

-- 
2.17.2




More information about the dm-devel mailing list