All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/33] multipath-tools fixes from SUSE
@ 2017-02-28 16:22 Martin Wilck
  2017-02-28 16:22 ` [PATCH 01/33] multipathd.service: fixup Wants= and Before= statements Martin Wilck
                   ` (34 more replies)
  0 siblings, 35 replies; 57+ messages in thread
From: Martin Wilck @ 2017-02-28 16:22 UTC (permalink / raw)
  To: dm-devel

As announced previously, here comes a collection of multipath-tools patches
that SUSE is using for SLES12 SP2.

The whole series can be roughly broken down into the following logical
parts. Details can be found in the indvidual patches.

A) Modified boot sequence (01, 02, 04):

Under SLES12, the systemd service startup sequence has been changed such that
multipathd is now started after "udev settle" has finished. This has solved a
variety of sporadic, hard-to-track boot-time problems for us. The bottom line is
that until "udev settle" finishes, the udev db is incomplete when multipathd
tries to derive device information from it. That may cause multipathd to infer
incorrectly that a certain map is degraded, causing all kinds of problems.

B) Changed command line option semantices with find_multipaths (16, 17):

SUSE uses "multipath -i" in udev rules during device detection, as discussed
by Hannes on this list previously. This doesn't work well with the
"find_multipaths" option. We worked around this by relying on WWID for the
"find_multipaths" case, as other distributions do.

C) Avoid unnecessary domap() calls in configure() (18-28):

This patch series fixes another group of boot-time problems we encountered
in reboot tests. In many cases, multipathd has already set up valid maps
during initrd processing. When multipathd is restarted after switching to the
root FS, more often than not, no configuration changes are necessary. Yet
domap() is called for every map again. This call may race with other boot-time
operations such as LVM pvscan or mount commands and cause sporadic boot failures.

The idea of this series of patches is to detect this situation and avoid calling
making device mapper calls if the multipath internal representation of the map
already matches the kernel state. The logic of this series works only if the
udev db is in a sane state after switching root, thus it's closely related to
A).

Side note: This modified logic was also the background of my earlier remarks
about the possible processing of uevent batches using configure(). Based on
this series, further changes for configure could be written that would make
this possible.

D) Misc bug fixes (all except those mentioned so far).

For those who prefer github, the whole series is also available on
https://github.com/mwilck/multipath-tools/commits/upstream_170228

Best Regards,
Martin

Hannes Reinecke (15):
  multipathd.service: fixup Wants= and Before= statements
  multipathd: start daemon after udev trigger
  multipath: do not check daemon from udev rules
  Invalid error code when using multipathd CLI
  multipathd: set timeout for CLI commands correctly
  libmultipath: fall back to search paths by devt
  libmultipath: Do not crash on empty features
  multipathd: Set CLI timeout correctly
  multipath: avoid crash when using modified configuration
  multipathd: issue systemd READY after initial configuration
  libmultipath/discovery: do not cache 'access_state' sysfs attribute
  libmultipath: use existing alias from bindings file
  kpartx: sanitize delete partitions
  tur: Add pthread_testcancel()
  multipathd: fixup check for new path states

Martin Wilck (18):
  Add support for "multipath=off" and "nompath" on kernel cmdline
  multipath -ll: set DI_SERIAL
  libmultipath: move suspend logic to _dm_flush_map
  multipath: ignore -i if find_multipaths is set
  multipathd: imply -n if find_multipaths is set
  multipathd: use weaker "force_reload" at startup
  libmultipath: setup_features: log msg if queue_if_no_path is ignored
  libmultipath: setup_feature: print log msg if no_path_retry cant be
    set
  libmultipath: setup_feature: handle "retain_attached_hw_handler"
  libmultipath: disassemble_map: skip no_path_retry check
  libmultipath: disassemble_map: treat minio like assemble_map does
  libmultipath: select_action: check special features separately
  libmultipath: sysfs_attr_set_value: use const char*
  libmultipath: reload map if not known to udev
  libmultipath: differentiate ACT_NOTHING and ACT_IMPOSSIBLE
  libmultipath: coalesce_paths: trigger uevent if nothing done
  libmultipath/checkers: make RADOS checker optional
  Make libdmmp build optional

 Makefile                       |   6 +-
 Makefile.inc                   |   6 ++
 kpartx/devmapper.c             | 229 +++++++++++++++++++++++++++++++++++++++--
 kpartx/devmapper.h             |   7 +-
 kpartx/kpartx.c                |  44 ++------
 libmpathcmd/mpath_cmd.c        |   4 +
 libmpathcmd/mpath_cmd.h        |   2 +-
 libmultipath/alias.c           |   8 ++
 libmultipath/checkers/Makefile |   6 +-
 libmultipath/checkers/tur.c    |   1 +
 libmultipath/config.h          |   6 ++
 libmultipath/configure.c       | 117 +++++++++++++++++++--
 libmultipath/configure.h       |   1 +
 libmultipath/devmapper.c       | 102 ++++++++----------
 libmultipath/devmapper.h       |   9 +-
 libmultipath/discovery.c       |  19 ++--
 libmultipath/dmparser.c        |  26 +++--
 libmultipath/print.c           |   2 +-
 libmultipath/propsel.c         |   4 +-
 libmultipath/structs.c         |  39 ++++---
 libmultipath/sysfs.c           |   2 +-
 libmultipath/sysfs.h           |   2 +-
 libmultipath/util.c            |  59 +++++++++++
 libmultipath/util.h            |   1 +
 libmultipath/uxsock.c          |   9 +-
 multipath/main.c               |  37 ++++---
 multipath/multipath.rules      |   5 +
 multipathd/cli_handlers.c      |   3 +-
 multipathd/main.c              |  31 ++++--
 multipathd/multipathd.service  |  10 +-
 30 files changed, 603 insertions(+), 194 deletions(-)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 57+ messages in thread

end of thread, other threads:[~2017-04-14  8:42 UTC | newest]

Thread overview: 57+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-28 16:22 [PATCH 00/33] multipath-tools fixes from SUSE Martin Wilck
2017-02-28 16:22 ` [PATCH 01/33] multipathd.service: fixup Wants= and Before= statements Martin Wilck
2017-03-13 23:06   ` Benjamin Marzinski
2017-03-14  7:36     ` Martin Wilck
2017-02-28 16:22 ` [PATCH 02/33] multipathd: start daemon after udev trigger Martin Wilck
2017-02-28 16:22 ` [PATCH 03/33] Add support for "multipath=off" and "nompath" on kernel cmdline Martin Wilck
2017-02-28 16:23 ` [PATCH 04/33] multipath: do not check daemon from udev rules Martin Wilck
2017-04-05 21:54   ` Benjamin Marzinski
2017-04-06 12:10     ` Martin Wilck
2017-02-28 16:23 ` [PATCH 05/33] Invalid error code when using multipathd CLI Martin Wilck
2017-02-28 16:23 ` [PATCH 06/33] multipathd: set timeout for CLI commands correctly Martin Wilck
2017-04-05 22:07   ` Benjamin Marzinski
2017-04-12 20:26     ` Martin Wilck
2017-04-13 13:11     ` [PATCH] Revert "multipathd: set timeout for CLI commands correctly" Martin Wilck
2017-02-28 16:23 ` [PATCH 07/33] libmultipath: fall back to search paths by devt Martin Wilck
2017-02-28 16:23 ` [PATCH 08/33] libmultipath: Do not crash on empty features Martin Wilck
2017-02-28 16:23 ` [PATCH 09/33] multipathd: Set CLI timeout correctly Martin Wilck
2017-02-28 16:23 ` [PATCH 10/33] multipath: avoid crash when using modified configuration Martin Wilck
2017-02-28 16:23 ` [PATCH 11/33] multipathd: issue systemd READY after initial configuration Martin Wilck
2017-02-28 16:23 ` [PATCH 12/33] libmultipath/discovery: do not cache 'access_state' sysfs attribute Martin Wilck
2017-02-28 16:23 ` [PATCH 13/33] libmultipath: use existing alias from bindings file Martin Wilck
2017-02-28 16:23 ` [PATCH 14/33] multipath -ll: set DI_SERIAL Martin Wilck
2017-02-28 16:23 ` [PATCH 15/33] libmultipath: move suspend logic to _dm_flush_map Martin Wilck
2017-04-05 22:44   ` Benjamin Marzinski
2017-04-12 20:54     ` Martin Wilck
2017-04-13 13:05     ` [PATCH] libmultipath: fix skip_kpartx support for removing maps Martin Wilck
2017-04-14  8:42       ` Christophe Varoqui
2017-02-28 16:23 ` [PATCH 16/33] multipath: ignore -i if find_multipaths is set Martin Wilck
2017-02-28 16:23 ` [PATCH 17/33] multipathd: imply -n " Martin Wilck
2017-04-05 23:03   ` Benjamin Marzinski
2017-04-12 21:36     ` Martin Wilck
2017-04-13 21:54       ` Benjamin Marzinski
2017-02-28 16:23 ` [PATCH 18/33] multipathd: use weaker "force_reload" at startup Martin Wilck
2017-02-28 16:23 ` [PATCH 19/33] libmultipath: setup_features: log msg if queue_if_no_path is ignored Martin Wilck
2017-02-28 16:23 ` [PATCH 20/33] libmultipath: setup_feature: print log msg if no_path_retry cant be set Martin Wilck
2017-02-28 16:23 ` [PATCH 21/33] libmultipath: setup_feature: handle "retain_attached_hw_handler" Martin Wilck
2017-02-28 16:23 ` [PATCH 22/33] libmultipath: disassemble_map: skip no_path_retry check Martin Wilck
2017-02-28 16:23 ` [PATCH 23/33] libmultipath: disassemble_map: treat minio like assemble_map does Martin Wilck
2017-02-28 16:23 ` [PATCH 24/33] libmultipath: select_action: check special features separately Martin Wilck
2017-02-28 16:23 ` [PATCH 25/33] libmultipath: sysfs_attr_set_value: use const char* Martin Wilck
2017-02-28 16:23 ` [PATCH 26/33] libmultipath: reload map if not known to udev Martin Wilck
2017-02-28 16:23 ` [PATCH 27/33] libmultipath: differentiate ACT_NOTHING and ACT_IMPOSSIBLE Martin Wilck
2017-02-28 16:23 ` [PATCH 28/33] libmultipath: coalesce_paths: trigger uevent if nothing done Martin Wilck
2017-02-28 16:23 ` [PATCH 29/33] kpartx: sanitize delete partitions Martin Wilck
2017-02-28 16:23 ` [PATCH 30/33] tur: Add pthread_testcancel() Martin Wilck
2017-02-28 16:23 ` [PATCH 31/33] multipathd: fixup check for new path states Martin Wilck
2017-02-28 16:23 ` [PATCH 32/33] libmultipath/checkers: make RADOS checker optional Martin Wilck
2017-02-28 16:23 ` [PATCH 33/33] Make libdmmp build optional Martin Wilck
2017-02-28 22:44 ` [PATCH 00/33] multipath-tools fixes from SUSE Xose Vazquez Perez
2017-03-01  8:12   ` Martin Wilck
2017-03-23 18:43     ` multipath-tools (patch): Do not select sysfs prioritizer for RDAC arrays (was Re: [PATCH 00/33] multipath-tools fixes from SUSE) Xose Vazquez Perez
2017-03-23 20:40       ` Stewart, Sean
2017-03-22 19:02 ` [PATCH 00/33] multipath-tools fixes from SUSE Xose Vazquez Perez
2017-03-22 21:29   ` Christophe Varoqui
2017-03-23  8:30     ` Christophe Varoqui
2017-03-24  7:44       ` Martin Wilck
2017-04-12  7:38         ` Christophe Varoqui

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.