From: Martin Wilck <mwilck@suse.com>
To: dm-devel@redhat.com
Subject: [PATCH 00/33] multipath-tools fixes from SUSE
Date: Tue, 28 Feb 2017 17:22:56 +0100 [thread overview]
Message-ID: <20170228162329.14517-1-mwilck@suse.com> (raw)
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
next reply other threads:[~2017-02-28 16:22 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-28 16:22 Martin Wilck [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170228162329.14517-1-mwilck@suse.com \
--to=mwilck@suse.com \
--cc=dm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox