Skip to content
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

Merged
merged 48 commits into from Feb 22, 2022
Merged

Bump version #27

merged 48 commits into from Feb 22, 2022

Conversation

mwilck
Copy link
Contributor

@mwilck mwilck commented Feb 21, 2022

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

mwilck and others added 30 commits December 7, 2021 20:57
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>
mwilck and others added 18 commits February 1, 2022 20:50
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>
@cvaroqui
Copy link
Member

Hello, thank you for preparing this PR. What about the ABI test in error ?

@mwilck
Copy link
Contributor Author

mwilck commented Feb 22, 2022

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 libmultipath.version (major version bump) and libmpathpersist.version (minor version bump), respectively. It would be a bug if this was not the case (linking of an executable with non-matching ABI wouldn't be prevented), but as these changes are part of the PR, it's ok.

IOW, if the "check_abi" fails, we need to verify that these changes are reflected by changes in the .version files. I'd love to automate this, but it's very difficult to get right the way libabigail currently works, and I prefer to be "on the safe side" with a manual check for every PR for now.

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.

@cvaroqui
Copy link
Member

Thank for taking the time to explain.

@cvaroqui cvaroqui merged commit 5d6fecb into opensvc:master Feb 22, 2022
21 of 22 checks passed
@xosevp
Copy link
Contributor

xosevp commented Feb 23, 2022 via email

@cvaroqui
Copy link
Member

Tagged now. Thank you for the reminder Xose.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants