[dm-devel] [PATCH 00/19] san_path_err & multipath ANA support

Martin Wilck mwilck at suse.com
Tue Dec 18 23:19:12 UTC 2018


Hi Christophe,

this series consists of 3 parts. The first part improves the documentation on
the current approaches to "shaky" or "marginal" path detection, and
re-introduces the previously removed "san_path_err_xy" approach, which has
been prematurely removed IMO. At the time, I thought that it was superseded by
the "marginal path" algorithm, but I have my issues with latter (hopefully
subject of a follow-up series), and I believe the "medium" complexity of the
san_path_err code actually has its merits. But to be honest, my strongest
reason to re-add it is that I have to continue to support it in SLES for some
time to come.

The second part accumulates a few bug fixes.

The third part introduces NVMe ANA support to multipath-tools, based on the
original patch from Li Jie of Huawei (#14). Instead of copy/pasting some code
from nvme-cli, as Li Jie did, I decided to copy some nvme-cli code unmodified
to our repo, and create a small wrapper around it.  I took care not increase
the generated binaries with code we don't need. I added detect_prio on top of
it, and also added ANA support for the "foreign" code for native NVMe
multipath. BTW: Instead of applying patch #12, it would probably be possible
to simply add https://github.com/linux-nvme/nvme-cli as a submodule to multipath-
tools. I haven't tried that yet.

One thing to note: in dm-multipath mode, multipathd can now read the ANA
properties and derive prio values. But it can't react on updates from the
storage so far, because the kernel doesn't generate events to user space
if this happens. I haven't decided how to tackle this problem yet. Hints
and comments are welcome.

Cheers,
Martin

Kyle Mahlkuch (1):
  libmultipath: Increase SERIAL_SIZE to 128 bytes

lijie (1):
  multipath-tools: add ANA support for NVMe device

Martin Wilck (17):
  multipath.conf.5: explain "shaky" path detection
  libmultipath: propsel: don't print undefined values
  Revert "multipath-tools: discard san_path_err_XXX feature"
  multipathd: marginal_path overrides san_path_err
  multipath.conf.5: man page fixes for san_path_err_xy
  setup_map: wait for pending path checkers to finish
  libmultipath: add ARRAY_SIZE helper
  libmultipath: make close_fd() a common helper
  libmultipath: restore PG prio in update_multipath_strings
  multipathd: don't check foreign paths every tick
  libmultipath: add files from nvme-cli for NVMe support
  libmultipath: add wrapper library for nvme ioctls
  libmultipath: ANA prioritzer: use nvme wrapper library
  libmultipath: detect_prio: try ANA for NVMe
  libmultipath/foreign/nvme: use failover topology
  libmultipath/foreign/nvme: show ANA state
  libmultipath/foreign/nvme: indicate ANA support

 libmultipath/Makefile              |   18 +-
 libmultipath/config.c              |    3 +
 libmultipath/config.h              |    9 +
 libmultipath/configure.c           |   86 +-
 libmultipath/dict.c                |   39 +
 libmultipath/foreign/Makefile      |    2 +-
 libmultipath/foreign/nvme.c        |  180 +++-
 libmultipath/nvme-lib.c            |   49 +
 libmultipath/nvme-lib.h            |   39 +
 libmultipath/nvme/argconfig.h      |   99 ++
 libmultipath/nvme/json.h           |   87 ++
 libmultipath/nvme/linux/nvme.h     | 1450 ++++++++++++++++++++++++++++
 libmultipath/nvme/nvme-ioctl.c     |  869 +++++++++++++++++
 libmultipath/nvme/nvme-ioctl.h     |  139 +++
 libmultipath/nvme/nvme.h           |  163 ++++
 libmultipath/nvme/plugin.h         |   36 +
 libmultipath/prio.h                |    1 +
 libmultipath/prioritizers/Makefile |    5 +
 libmultipath/prioritizers/ana.c    |  201 ++++
 libmultipath/prioritizers/ana.h    |  221 +++++
 libmultipath/propsel.c             |  151 ++-
 libmultipath/propsel.h             |    3 +
 libmultipath/structs.h             |   30 +-
 libmultipath/structs_vec.c         |    8 +
 libmultipath/sysfs.c               |    5 -
 libmultipath/util.c                |    5 +
 libmultipath/util.h                |    3 +
 multipath/main.c                   |    4 -
 multipath/multipath.conf.5         |  141 ++-
 multipathd/main.c                  |  105 +-
 tests/hwtable.c                    |    2 +-
 31 files changed, 4051 insertions(+), 102 deletions(-)
 create mode 100644 libmultipath/nvme-lib.c
 create mode 100644 libmultipath/nvme-lib.h
 create mode 100644 libmultipath/nvme/argconfig.h
 create mode 100644 libmultipath/nvme/json.h
 create mode 100644 libmultipath/nvme/linux/nvme.h
 create mode 100644 libmultipath/nvme/nvme-ioctl.c
 create mode 100644 libmultipath/nvme/nvme-ioctl.h
 create mode 100644 libmultipath/nvme/nvme.h
 create mode 100644 libmultipath/nvme/plugin.h
 create mode 100644 libmultipath/prioritizers/ana.c
 create mode 100644 libmultipath/prioritizers/ana.h

-- 
2.19.2




More information about the dm-devel mailing list