[dm-devel] [PATCH v3 00/18] Multipath patch dump

Benjamin Marzinski bmarzins at redhat.com
Wed Feb 19 06:48:22 UTC 2020


This patch set is has multiple parts.

patch 01 is just a resubmit of my previous patch, with Martin's
corrections added.

Patches 02 - 06 are miscellaneous fixes and cleanups

Patches 07 - 09 are related to adding a new format wildcard, at the
	request of HPE, that allows multipath to get and display
	information from the vendor specific VPD pages

Patches 10 - 18 are the part that needs the most review, patch 14
	especially. It turns out that on machines with a large number
	of cores, io_destroy(), which is used by the directio checker,
	can take a long time to complete. Talking to some kernel people
	at Red Hat, I was told that this isn't a bug. It's working as
	expected, and multipath shouldn't be issuing so many
	io_destroy() calls (1 per path, when multipath or multipathd
	stops). Cutting out the io_destroy calls involved a major change
	to the directio checker. It's pretty hard to test a lot of the
	corner cases on actual hardware, so I've written a bunch of
	unit tests for this (patches 16 & 17).

Changes in v3:
This removes the conflicts with Martin's earlier patches, specifically

0003-libmultipath-fix-leak-in-foreign-code.patch
	removed in favor of Martin's
	"libmultipath: _init_foreign(): fix possible memory leak"
	patch

0016-fixup-libmultipath-add-code-to-get-vendor-specific-v.patch
0017-fixup-libmultipath-make-directio-checker-share-io-co.patch
	New patches to fix compile-time errors resulting from the
	rebase

0018-tests-make-directio-tests-able-to-work-on-a-real-dev.patch
	Fix conflicts between with Martin's earlier patches

Changes in v2:
0001-multipathd-warn-when-configuration-has-been-changed.patch
	Changed to reflect Martin Wilck's comments

0002-multipathd-staticify-uxlsnr-variables-functions.patch
	New patch

0008-libmultipath-fix-sgio_get_vpd-looping.patch
	Test has been changed to keep create_vpd83 the same, and
	overwrite the length in the actual test, as suggested by
	Martin Wilck

0010-libmultipath-add-code-to-get-vendor-specific-vpd-dat.patch
	The information to find the vpd page and how to decode it is
	now simply the index in a table of name -> page_nr mappings

0012-libmultipath-change-failed-path-prio-timeout.patch
	The timeout argument has been renamed to avoid confusion,
	as suggested by Martin Wilck

0015-libmultipath-make-directio-checker-share-io-contexts.patch
	Minor changes to print more useful messages, and avoid
	printing anything when we get a non-zero io_cancel()
	result, as suggested by Martin Wilck

0016-tests-add-directio-unit-tests.patch
	Minor change to improve readability, as suggested by
	Martin Wilck

0017-tests-make-directio-tests-able-to-work-on-a-real-dev.patch
	New patch. This adds the ability to set a testing device, so
	you can run the directio tests on an actual device



Benjamin Marzinski (16):
  multipathd: warn when configuration has been changed.
  multipathd: staticify uxlsnr variables/functions
  Fix leak in mpathpersist
  libmultipath: remove unused path->prio_args
  libmultipath: constify get_unaligned_be*
  libmultipath: add missing hwe mpe variable merges
  libmultipath: fix sgio_get_vpd looping
  libmultipath: add vend_id to get_vpd_sgio
  libmultipath: add code to get vendor specific vpd data
  libmultipath: change how the checker async is set
  libmultipath: change failed path prio timeout
  multipathd: add new paths under vecs lock
  libmultipath: add new checker class functions
  libmultipath: make directio checker share io contexts
  tests: add directio unit tests
  tests: make directio tests able to work on a real device

Martin Wilck (2):
  fixup! libmultipath: add code to get vendor specific vpd data
  fixup! libmultipath: make directio checker share io contexts

 libmpathpersist/mpath_persist.c  |   2 +-
 libmultipath/checkers.c          |  29 +-
 libmultipath/checkers.h          |   1 +
 libmultipath/checkers/directio.c | 336 ++++++++++---
 libmultipath/config.c            |  10 +
 libmultipath/config.h            |   2 +
 libmultipath/dict.c              |  38 ++
 libmultipath/discovery.c         |  80 ++-
 libmultipath/discovery.h         |   2 +-
 libmultipath/hwtable.c           |   1 +
 libmultipath/print.c             |  25 +
 libmultipath/prio.c              |   6 +-
 libmultipath/propsel.c           |  20 +-
 libmultipath/propsel.h           |   1 +
 libmultipath/structs.h           |  16 +-
 libmultipath/unaligned.h         |   4 +-
 mpathpersist/main.c              |   1 +
 multipath/main.c                 |   1 +
 multipath/multipath.conf.5       |  15 +-
 multipathd/main.c                |  18 +-
 multipathd/uxlsnr.c              | 150 +++++-
 tests/Makefile                   |  19 +-
 tests/directio.c                 | 812 +++++++++++++++++++++++++++++++
 tests/directio_test_dev          |   4 +
 tests/vpd.c                      |  87 ++--
 25 files changed, 1527 insertions(+), 153 deletions(-)
 create mode 100644 tests/directio.c
 create mode 100644 tests/directio_test_dev

-- 
2.17.2




More information about the dm-devel mailing list