mbox series

[V3,00/11] multipath: Add a group_by_tgp pgpolicy

Message ID 1686170873-5754-1-git-send-email-bmarzins@redhat.com (mailing list archive)
Headers show
Series multipath: Add a group_by_tgp pgpolicy | expand

Message

Benjamin Marzinski June 7, 2023, 8:47 p.m. UTC
The first part adds a new path grouping policy that can be used with
ALUA devices. The goal is to avoid the temporary incorrect path
groupings that can happen when paths change priorities.

The second part is changes that mostly effect how multipathd handles
switching or reordering pathgroups for devices where group_by_prio isn't
set.

Differences from V2 (based on suggestions from Martin Wilck):
[01/11]: set loglevel in get_alua_info based on whether or not we're
         changing pp->tpg_id
[06/11]: fixed default detect_pgpolicy_use_tpg in template
[08/11]: fixed typo in patch header
[10/11]: fixed logic in path_groups_in_order()

Benjamin Marzinski (11):
  libmultipath: add group_by_tpg path_grouping_policy
  libmultipath: don't copy pgpolicy string in get_pgpolicy_name
  libmultipath: add ALUA tpg path wildcard
  multipath-tools tests: add tests for group_by_tpg policy
  libmultipath: add "detect_pgpolicy" config option
  libmultipath: add "detect_pgpolicy_use_tpg" config option
  libmultipath: don't count PRIO_UNDEF paths for pathgroup priority
  multipath-tools tests: add tests to verify PRIO_UNDEF changes
  multipathd: only refresh priorities in update_prio()
  multipathd: reload map if the path groups are out of order
  multipathd: don't assume mpp->paths will exist in
    need_switch_pathgroup

 libmultipath/config.c             |   4 +
 libmultipath/config.h             |   4 +
 libmultipath/configure.c          |   2 +
 libmultipath/defaults.h           |   2 +
 libmultipath/dict.c               |  28 +++-
 libmultipath/discovery.c          |   1 +
 libmultipath/hwtable.c            |   2 +
 libmultipath/libmultipath.version |  10 +-
 libmultipath/pgpolicies.c         |  42 +++---
 libmultipath/pgpolicies.h         |   6 +-
 libmultipath/print.c              |   9 ++
 libmultipath/prioritizers/alua.c  |   6 +-
 libmultipath/propsel.c            |  69 ++++++++-
 libmultipath/propsel.h            |   2 +
 libmultipath/structs.c            |   1 +
 libmultipath/structs.h            |  17 +++
 libmultipath/switchgroup.c        |  12 +-
 multipath/main.c                  |   1 +
 multipath/multipath.conf.5        |  29 ++++
 multipathd/cli_handlers.c         |   8 +-
 multipathd/fpin_handlers.c        |   4 +-
 multipathd/main.c                 | 175 +++++++++++----------
 multipathd/main.h                 |   3 +-
 tests/pgpolicy.c                  | 243 ++++++++++++++++++++++++++++++
 24 files changed, 552 insertions(+), 128 deletions(-)