New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bump version #27
Bump version #27
Conversation
This would normally be set by general system policy. According to systemd-system.conf(5), it is set to infinity by default anyway in systemd. If a user changes this in systemd-system.conf, the setting should also apply to multipathd. Users who don't wont this can still use drop-ins to change the specific settings. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
The kernel has had an autoloading mechanism for SCSI device handlers since v4.3. No need to force loading them here again. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
This is necessary in the initramfs. With this added, almost no differences between our shipped multipathd.service and the one shipped in dracut remain. The rest should be fixed in dracut. It would be nice to be able to use the original service file from multipath-tools in dracut, in particular for future changes. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
We've had "Before=" dependencies on iscsi.service and iscsid.service since this unit was first created. I'm not sure if we ever needed them. Since c9689b6 ("multipathd: Remove dependency on systemd-udev-settle.service"), we definitely don't. iscsi and iscsid sort themselves after network.target, and multipathd does not, thus these Before= dependencies are redundant. Note: Before c9689b6, iSCSI was actually treated differently than other transports - we forced multipathd to be started after FC device detection, but before iSCSI device detection. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Instead of having multipath allocate its dm_info structure, it should just embed it to save on the extra allocations. This also lets us have only one function that all callers use to fill a dm_info structure. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
When multipathd gets a change event for a multipath device, the dm info may have changed, so update it. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
A mulitpath device can only be reloaded read/write when all paths are read/write. Also, whenever a read-only scsi device is rescanned, the scsi subsystem will first unconditionally issue a uevent with DISK_RO=0 before checking the read-only status, and if it the device is still read-only, issuing another uevent with DISK_RO=1. These uevents cause pointless reloads when read-only paths are rescanned. To avoid this, first check if the path is being changed to the existing multipath read-only state. If the state is the same, do nothing. If it's different, check to see if all paths are read/write before changing a multipath device from read-only to read/write. If the multipath device read-only state is unknown, assume that it needs to be reloaded. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
The libmpathpersist library exports symbols that are not part of the public API. Move the respective code into a separate source file. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
We shouldn't define function prototypes in more than a single place. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
... of FILE_NAME_SIZE. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
This has no effect. If at all, it should have been included before inttypes.h. See https://stackoverflow.com/questions/8132399/how-to-printf-uint64-t-fails-with-spurious-trailing-in-format/8132440#8132440 Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
From now on this header contains only symbols that need to be accessed from multiple sources of libmpathpersist, but not from libmultipath or other source files (those go into libmpathpersist_int.h). Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM-DEVEL ML <dm-devel@redhat.com> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
pp->state should only be set to PATH_PENDING if it is currently in the PATH_UNCHECKED or PATH_WILD states. Otherwise, it should retain its current state. Fix this in pathinfo() calls with DI_NOIO, to match with the rest of the code. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martinn Wilck <mwilck@suse.com>
The only caller of __set_no_path_retry() is set_no_path_retry(), so remove the define and the unneeded arguments from the function. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martinn Wilck <mwilck@suse.com>
set_no_path_retry() could make a multipath device enter recovery mode simply because its paths were still in the PATH_PENDING state. This is possible when a multipath device is first created. After commit 2e61b8f [libmultipath (coverity): Revert "setup_map: wait for pending path checkers to finish"] it has become much more likely. To avoid this, don't enter recovery mode as long as there are some paths in PATH_PENDING. Since path's can only be in this state if they've never had their state checker finish, this change will only effect recently created devices, whose checker hasn't completed yet. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martinn Wilck <mwilck@suse.com>
cc18bab ("libmultipath: embed dm_info in multipath structure") requires a major version bump. Signed-off-by: Martin Wilck <mwilck@suse.com>
This tends to complicate packaging for downstreams as we may choose to not compress man pages at all, use a different tool, or use different options. Most projects don't therefore bother compressing, so this change brings multipath-tool in line with others. Signed-off-by: Sam James <sam@gentoo.org> Reviewed-by: Martin Wilck <mwilck@suse.com>
Minimal clean up done with scripts/checkincludes.pl Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM-DEVEL ML <dm-devel@redhat.com> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
On gcc-12 build failed as:
devmapper.c: In function 'dm_simplecmd':
devmapper.c:61:13: error: unused variable 'udev_wait_flag' [-Werror=unused-variable]
61 | int udev_wait_flag = (task == DM_DEVICE_RESUME ||
| ^~~~~~~~~~~~~~
Fix error by hiding it's declaration under #ifdef that uses it.
CC: Martin Wilck <mwilck@suse.com>
CC: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Without the change the build fails as:
devmapper.c:58:69: error: unused parameter 'udev_flags' [-Werror=unused-parameter]
58 | int dm_simplecmd(int task, const char *name, int no_flush, uint16_t udev_flags)
| ~~~~~~~~~^~~~~~~~~~
The change adds __attribute__((used)) annotation to unused function parameter.
CC: Martin Wilck <mwilck@suse.com>
CC: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>Reviewed-by: Martin Wilck <mwilck@suse.com>
On NixOS nothing is installed in /usr/include and instead lives
in it's own prefix. pkg-config variables are expected to be used
for installation discovery:
$ pkg-config --variable=includedir devmapper
/nix/store/c30fr0ahpa285sjkjgiinc2rr68ysmid-lvm2-2.03.14-dev/include
The change switches libdevmapper.h discovery to pkg-config provided path.
CC: Martin Wilck <mwilck@suse.com>
CC: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
On NixOS nothing is installed in /usr/include and instead lives
in it's own prefix. pkg-config variables are expected to be used
for installation discovery:
$ pkg-config --variable=includedir libudev
/nix/store/27mwkz5zhzw0gip8y7pvjyma5r0hzzaw-systemd-249.7-dev/include
The change switches libudev.h discovery to pkg-config provided path.
CC: Martin Wilck <mwilck@suse.com>
CC: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
On NixOS nothing is installed in /usr/include and instead lives in it's own prefix. The change switches linux/nvme_ioctl.h discovery to user provided path. CC: Martin Wilck <mwilck@suse.com> CC: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Sergei Trofimovich <slyich@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
`gzip` supports (deprecated) `GZIP` environment variable. If it's
already present Makefile would override it and pass it through causing
thre breakage:
$ dev>GZIP=-n make
gzip -9 -c mpath_persistent_reserve_in.3 > mpath_persistent_reserve_in.3.gz
gzip: -c: option not valid in GZIP environment variable
Try `gzip --help' for more information.
Fix build by renaming GZIP variable to GZIP_PROG to avoid collision.
mwilck: most of this is obsoleted by a220dd1 ("build: don't compress man pages")
CC: Martin Wilck <mwilck@suse.com>
CC: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
The historical-service-time path selector prints out 2 path group status arguments. This is the only path selector that uses the group status arguments. All the others only have path status arguments. disassemble_status() was expecting the number of group status arguments to always be zero, causing it to fail at disassembling the status of devices that use historical-service-time path selector. Now multipath actually checks the number of group arguments, and skips them. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
Pull the code that checks if a path needs to trigger a uevent, and triggers, out of trigger_paths_udev_change() and into a new function, trigger_path_udev_change(). This function will be used separately by a future patch. No functional changes. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
When a multipath device is created for the first time, there is a window where some path devices way be added to the multipath device, but never claimed in udev. This can allow other device owners, like lvm, to think they can use the device. When a multipath device is first created, all the existing paths that are not claimed by multipath have a uevent triggered so that they can get claimed. After that, multipath assumes all future paths added to the multipath device will have been claimed by multipath, since the device's WWID is now in the wwids file. This doesn't work for any paths that have already been processed by the multipath.rules udev rules before the multipath device was created. To close this window, when path device is added, and a matching multipath device already exists, multipathd now checks if the device is claimed by multipath, and if not, triggers a uevent to claim it. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
gcc 12.0.1 failed building libmultipath due to a format-overflow false
positive on 32-bit architectures. This isn't so surprising as
format-overflow=2 is very aggressive in the assumptions it makes about
the arguments. Here, it assumes that mpp->wwid could take up all the
space that a pointer could point to, even if I add code to this function
to explicitly null terminate mpp->wwid to fit in WWID_SIZE.
To avoid this and simplify the function, switch from using calloc() and
sprintf() to just using asprintf().
For reference, the gcc build error that this fixes is:
devmapper.c: In function 'dm_addmap.constprop.0':
devmapper.h:27:21: error: '%s' directive writing up to 2147483644 bytes into a region of size 2147483641 [-Werror=format-overflow=]
27 | #define UUID_PREFIX "mpath-"
| ^~~~~~~~
devmapper.c:484:53: note: format string is defined here
484 | sprintf(prefixed_uuid, UUID_PREFIX "%s", mpp->wwid);
| ^~
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
We haven't used the options since 0.4.5. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If multipath-tools is installed, we want to load the dm-multipath module early on, because multipath -u might spit out irritating error messages in syslog otherwise. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
As we install a modules-load.d file now, no need to call modprobe in ExecStartPre any more. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
The kernel's autoload mechanism for SCSI device handlers doesn't work during SCSI device probing. While it's possible to load and attach device handlers after probing, it has disadvantages: the handlers are useful for error handling even before multipathd has started, and at least up to kernel 5.17, the sysfs "access_state" attribute will remain invisible for already probed devices. Distributions will therefore want to make sure the handlers are either built-in in the kernel, or loaded early. Add functionality to create and install a modules-load.d file with a list of handlers to load. By default, the list is empty, and no file will be generated. The list can be specified at install-time like this: make SCSI_DH_MODULES_PRELOAD="scsi_dh_rdac scsi_dh_emc" install dracut automatically adds modules-load.d files and the modules they reference to the initramfs. Note: distributions that compile scsi_mod as a module may rather want to use a modprobe.d file with a statement like this: softdep scsi_mod post: scsi_dh_alua scsi_dh_rdac Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
LIO supports ALUA for all backends. Use it by default. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
With the mdadm metadata format v1.0 (and DDF), the MD superblock is at the end of the device, keeping the partition table at the beginning. This may cause wrong partition mappings to be created by kpartx on RAID component devices. So far I've only seen ugly error messages, but at least in principle it can happen that kpartx wins a race with MD, and prevents correct setup of the MD device. Sample error messages: [ 4.029490] systemd-udevd[445]: dm-0: '/sbin/kpartx -un -p -part /dev/dm-0'(err) 'device-mapper: reload ioctl on 3600140508dbcf02acb448188d73ec97d-part1 failed: Device or resource busy' [ 4.075666] kernel: device-mapper: table: 254:1: linear: Device lookup failed [ 4.075945] kernel: device-mapper: ioctl: error adding target to table Skip creating partition mappings on MD components. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
This patch incorporates the functionality to handle FPIN ELS events present as part of FCTransport daemon (available in EPEL8) into the multipathd. This helps us to reduce the response time to react and take the necessary actions on receiving the FPIN events. This patch currently support FPIN-Li Events. It adds a new thread to listen for ELS frames from driver and on receiving the frame payload, push the payload to a list and notify the fpin_els_li_consumer thread to process it.Once consumer thread is notified, it returns to listen for more ELS frames from driver. The consumer thread process the ELS frames and moves the devices paths which are affected due to link integrity to marginal path groups. This also sets the associated portstate to marginal. The paths which are set to marginal path group will be unset on receiving the RSCN events [ MW: minor fixup for 32bit compilation ] Signed-off-by: Muneendra Kumar <muneendra.kumar@broadcom.com> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
Setting marginal_pathgroups to fpin causes two new threads to be created when multipathd starts. Turning it on after multipathd starts up won't cause the theads to start, and turing it off won't keep the threads from working. So disallow changing marginal_pathgroups to/from "fpin" on reconfigure. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Cc: Muneendra Kumar <muneendra.kumar@broadcom.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
There are also (FCP) HBAs that appear on a bus different from PCI. Complements v0.6.0 commit 01ab2a4 ("libmultipath: Add additional path wildcards"). With that we can easily get the full FCP addressing triplet (HBA, WWPN, LUN) from multipath tools without additional tools and correlation: $ multipathd -k'show paths format "%w|%i|%a|%r"' uuid |hcil |host adapter|target WWPN 36005076400820293e8000000000000a0|1:0:3:160 |0.0.5080 |0x500507680b25c449 36005076400820293e8000000000000a0|1:0:4:160 |0.0.5080 |0x500507680b25c448 36005076400820293e8000000000000a0|58:0:3:160 |0.0.50c0 |0x500507680b26c449 36005076400820293e8000000000000a0|58:0:4:160 |0.0.50c0 |0x500507680b26c448 ^^^^^^^^ instead of [undef] Make helper function static and generalize it to also cover CCW bus in addition to the already supported PCI bus. Had to move now static helper in front of its only user. While at it, use string functions that are safe against buffer overflows. As a side effect this patch theoretically also enables group by host adapter for s390x based on v0.6.0 commit a28e61e ("Crafted ordering of child paths for round robin path selector"). Reviewed-by: Benjamin Block <bblock@linux.ibm.com> Reviewed-by: Martin Wilck <mwilck@suse.com> Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Complements v0.6.0 commit 01ab2a4 ("libmultipath: Add additional path wildcards") as well as ("libmultipath: support host adapter name lookup for s390x ccw bus"). With that we can easily get the full FCP addressing triplet (HBA, WWPN, FCPLUN) from multipath tools without additional tools and correlation: $ multipathd -k'show paths format "%w|%a|%r|%L"' uuid |host adapter|target WWPN |LUN hex 36005076400820293e8000000000000a0|0.0.5080 |0x500507680b25c449|0x00a0000000000000 36005076400820293e8000000000000a0|0.0.5080 |0x500507680b25c448|0x00a0000000000000 36005076400820293e8000000000000a0|0.0.50c0 |0x500507680b26c449|0x00a0000000000000 36005076400820293e8000000000000a0|0.0.50c0 |0x500507680b26c448|0x00a0000000000000 Likewise, add a field lun_hex for JSON path output. Reviewed-by: Benjamin Block <bblock@linux.ibm.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com> Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Since commit 2f05df4 ("libmultipath: use strbuf in print.c"), when multipath prints the topology of native nvme devices, instead of printing the multipath device information, it prints "w [G]:d s". This is because nvme_style() switched from calling snprintf(), which supports format specifiers, to append_strbuf_str(), which doesn't, while still keeping the same string, "%%w [%%G]:%%d %%s". Remove the extra percent signs, since they don't need to be escaped in append_strbuf_str(). Fixes: 2f05df4 ("libmultipath: use strbuf in print.c") Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
checkers.c: In function 'start_checker_thread':
checkers.c:392:9: error: implicit declaration of function 'assert' [-Werror=implicit-function-declaration]
392 | assert(ctx && ctx->cls && ctx->cls->thread);
| ^~~~~~
checkers.c:13:1: note: 'assert' is defined in header '<assert.h>'; did you forget to '#include <assert.h>'?
Signed-off-by: Sietse van Zanen <uglymotha@wizdom.nu>
Reviewed-by: Martin Wilck <mwilck@suse.com>
We categorized protocols by bus/proto_id, while we only differentiate protocol IDs for SCSI. Allow transforming this into a linear sequence of bus/protocol IDs by having non-SCSI first, and follwing up with the different SCSI protocols. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Simplify bus_protocol_id() by using the linear ordering. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
The STATIC_BITFIELD macro allows defining a static variable holding a bitfield of constant length. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
On systems with many devices, the warning that setting dev_loss_tmo is unsupported for certain protocols is printed many times, cluttering the logs. Only print this message once per unsupported protocol. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
Hello, thank you for preparing this PR. What about the ABI test in error ? |
This failure means that the ABI has changed wrt the "master" branch. This is normal, and it's reflected in the PR by the changes in IOW, if the "check_abi" fails, we need to verify that these changes are reflected by changes in the Once you merge these changes, the reference ABI in the "master" branch will be updated, and future PRs will fail this test only if they introduce new ABI changes. |
|
Thank for taking the time to explain. |
|
Tagged now. Thank you for the reminder Xose. |
Hi Christophe,
here is another multipath-tools update. I've taken the liberty to bump the version to 0.8.9 already. It's mostly a bug fix release. The most important new feature is the support for FC Fibre Performance Impact Notifications (FPIN) contributed by Muneendra Kumar.
Regards
Martin
@bmarzins (12):
libmultipath: embed dm_info in multipath structure
multipathd: update dm_info on multipath change events
multipathd: avoid unnecessary path read-only reloads
libmultipath: fix DI_NOIO pathinfo PATH_PENDING handling
libmultipath: simplify out __set_no_path_retry()
libmultipath: don't enter recovery mode with pending paths
libmultipath: fix disassemble status for historical-service-time PS
libmultipath: make helper function to trigger path uevents
multipathd: trigger udev change on path addition
libmultipath: use asprintf() to allocate prefixed_uuid
multipathd: disallow changing to/from fpin marginal paths on reconfig
libmultipath: fix printing native nvme multipath topology.
@mwilck (23):
multipathd.service: remove LimitCORE=infinity directive
multipathd.service: don't load SCSI device handler modules
multipathd.service: add dependency on initrd-cleanup.service
multipathd.service: drop dependencies on iscsi and iscsid
libmpathpersist: split public and internal API
multipathd: remove duplicate definitions from main.h
libmpathpersist/multipathd: remove duplicate definition
libmpathpersist: remove __STDC_FORMAT_MACROS
libmpathpersist: cleanup mpathpr.h
libmultipath.version: bump major version
multipath/Makefile: use $(udevrulesdir)
multipath-tools: Makefile.inc: delete obsolete comment
multipath-tools: install modules-load.d/multipath.conf
multipathd.service: drop ExecStartPre for loading dm-multipath
multipath: Makefile: modules-load.d file for SCSI device handlers
README.md: add basic information about building multipath-tools
libmultipath: hwtable: use ALUA for all LIO targets
kpartx.rules: skip MD devices
libmultipath: enable linear ordering of bus/proto tuple
libmultipath: use bus_protocol_id() in snprint_path_protocol()
libmultipath: enable defining a static bitfield
libmultipath: only warn once about unsupported dev_loss_tmo
Bump version to 0.8.9
@muneendramandala (1):
multipathd: handle fpin events
@thesamesam (1):
build: don't compress man pages (fixes #24)
@trofi (6):
kpartx/devmapper.c: fix unused-but-set variable error
kpartx/devmapper.c: fix unused variable error
multipath-tools: autodiscover libdevmapper.h headers
multipath-tools: autodiscover libudev.h headers
multipath-tools: allow passing non-standard linux-headers location
multipath-tools: avoid using GZIP Makefile variable
(fixes #23)
@steffen-maier (2):
libmultipath: support host adapter name lookup for s390x ccw bus
libmultipath: add %L path wildcard for 64-bit hex LUN
@Uglymotha (1):
Add missing include <assert.h> (fixes #25)
@xosevp (2):
multipath-tools: fix misspellings
multipath-tools: remove duplicate headers