Skip to content
Merged
Show file tree
Hide file tree
Changes from 107 commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
da8f783
libmultipath: export udev pthread cleanup functions
bmarzins Jan 16, 2025
30fc3e9
multipathd: set rport port_state to marginal for NVMe devices
bmarzins Jan 16, 2025
cd912cf
libmultipath: fix handling of pp->pgindex
mwilck Nov 25, 2024
9a2f173
libmpathutil: change STATIC_BITFIELD to BITFIELD
mwilck Nov 27, 2024
8d68d0e
libmpathutil: add cleanup_bitfield()
mwilck Nov 27, 2024
b401129
libmultipath: move pathcmp() to configure.c
mwilck Nov 25, 2024
d4b35f6
libmultipath: re-implement pgcmp without the pathgroup id
mwilck Nov 25, 2024
98b3a7b
libmultipath: trigger uevents upon map creation in domap()
mwilck Nov 26, 2024
ad3ea47
multipathd: trigger uevents upon map removal in coalesce_maps()
mwilck Nov 27, 2024
680fde1
multipathd: improve a log message in coalesce_maps()
mwilck Nov 27, 2024
f5c0c4b
libmultipath: Don't skip set_path_max_sectors_kb()
bmarzins Dec 5, 2024
340e74d
multipathd: reload maps in checkerloop() if necessary.
bmarzins Dec 5, 2024
8f79472
multipathd: Don't call select_action in reload_map
bmarzins Dec 5, 2024
0ff1191
multipathd: don't reload map in update_mpp_prio()
mwilck Dec 6, 2024
e1d3a94
multipathd: remove dm_get_info() call from refresh_multipath()
mwilck Dec 5, 2024
77f7254
multipathd: sync maps at end of checkerloop
mwilck Dec 10, 2024
d9a7596
multipathd: emit a warning if a map remains inconsistent after reload
mwilck Dec 2, 2024
1dd1051
multipathd: move yielding for waiters to start of checkerloop
mwilck Dec 6, 2024
2515047
multipathd: add checker_finished()
mwilck Dec 6, 2024
ad8749e
multipathd: move "tick" calls into checker_finished()
mwilck Dec 6, 2024
a9e6327
multipathd: don't call reload_and_sync_map() from deferred_failback_t…
mwilck Dec 6, 2024
fb236d9
multipathd: move retry_count_tick() into existing mpvec loop
mwilck Dec 6, 2024
44dfc72
multipathd: don't call update_map() from missing_uev_wait_tick()
mwilck Dec 6, 2024
46c2d57
multipathd: don't call udpate_map() from ghost_delay_tick()
mwilck Dec 6, 2024
c37ec2b
multipathd: only call reload_and_sync_map() when ghost delay expires
mwilck Dec 11, 2024
1834446
multipathd: remove non-existent maps in checkerloop
mwilck Dec 11, 2024
24a0f6e
multipathd: remove mpvec_garbage_collector()
mwilck Dec 6, 2024
3045bee
multipathd: enable pathgroups in checker_finished()
mwilck Jan 17, 2025
c389663
multipathd: use symbolic values for wait_for_udev
bmarzins Jan 23, 2025
0f833b8
multipathd: don't reload the map when waiting for udev
bmarzins Jan 23, 2025
644bc11
libmultipath: don't set need_reload in adopt_paths
bmarzins Jan 23, 2025
65c8213
libmultipath: remove need_reload check from select_action
bmarzins Jan 23, 2025
894ac05
libmultipath: drop return value from update_pathvec_from_dm
bmarzins Jan 23, 2025
73a98aa
libmultipath: Dont scan pointless sysfs parents
bmarzins Jan 23, 2025
6b91bfb
libmultipath: move sysfs checks out of scsi_ioctl_pathinfo
bmarzins Jan 23, 2025
1e10674
libmultipath: rename DI_SERIAL to DI_IOCTL
bmarzins Jan 23, 2025
19474ec
libmultipath: retry DI_IOCTL functions if they were skipped
bmarzins Jan 23, 2025
c20fb70
libmultipath: set need_reload when pp->serial gets set
bmarzins Jan 23, 2025
70c1724
libmultipath: set need_reload when the tpg_id gets set
bmarzins Jan 23, 2025
85ec51e
libmultipath: stop static analyzer complaint in init_foreign
bmarzins Jan 23, 2025
b47a577
libmultipath: be lenient in allowing the alua-based pgpolicies
bmarzins Jan 23, 2025
728603f
libmultipath: bump ABI version to 29.0.0
mwilck Jan 24, 2025
6b9e2c2
multipath-tools: update NEWS.md
mwilck Jan 24, 2025
d9c6133
multipathd: trigger uevents for blacklisted paths in reconfigure
mwilck Jan 23, 2025
c056533
multipath-tools: fix compilation with latest userspace-rcu code
bmarzins Feb 3, 2025
439044b
libmultipath: include urcu.h before urcu/atomic.h
bmarzins Feb 11, 2025
f421a43
multipath-tools: move DEFAULT_SOCKET definition into Makefile.inc
mwilck Feb 11, 2025
c7d0c66
multipath-tools: add helper mpath_fill_sockaddr__()
mwilck Feb 14, 2025
88de02a
libmpathutil: add support for Unix pathname sockets
mwilck Feb 14, 2025
270da8e
libmpathutil: move systemd_listen_fds() support into multipathd
mwilck Feb 12, 2025
be9131b
multipathd: make uxsock_listen() take a pointer to fd
mwilck Feb 12, 2025
80a5585
multipathd: allow receiving two socket fds from systemd
mwilck Feb 12, 2025
b7b1f00
multipathd: listen on pathname and abstract socket by default
mwilck Feb 12, 2025
1dd149a
libmpathcmd: try both abstract and pathname sockets
mwilck Feb 12, 2025
4304d17
libmpathcmd: honor MULTIPATH_SOCKET_NAME environment variable
mwilck Feb 12, 2025
420fb26
multipathd: honor MULTIPATH_SOCKET_NAME environment variable
mwilck Feb 14, 2025
ee062a0
multipathd: fix hang during shutdown with queuing maps
mwilck Feb 27, 2025
581f823
libmultipath: remove buggy reinstate_paths function
bmarzins Mar 3, 2025
1ffe130
GitHub workflows: use docker/setup-qemu-action@v2 instead of dbhi/qus
mwilck Mar 4, 2025
6102eb4
multipathd: add multipathd-queueing.service to gitignore
bmarzins Mar 6, 2025
15848a7
multipath-tools: delete unreachable maintainers
xosevp Mar 6, 2025
d776522
multipath: clean up find_multipaths documentation
bmarzins Mar 7, 2025
20a56e8
multipathd: Add multipathd man page section about sockets
bmarzins Mar 7, 2025
9858b5e
GitHub workflows: use docker/setup-qemu-action@v2 in foreign.yaml
mwilck Mar 18, 2025
b8dd6b3
multipath-tools: identify more arrays under IBM/2145 ID
xosevp Mar 13, 2025
9038d25
multipathd: monitor new multipath dev even if we can't update it
bmarzins Apr 2, 2025
dfe8f7b
libmultipath: add helper function check_path_wwid_change
bmarzins Apr 2, 2025
db9963c
multipathd: re-add paths skipped because they were offline
bmarzins Apr 2, 2025
aa2f5f0
multipathd: don't update paths in INIT_MISSING_UDEV
bmarzins Apr 2, 2025
a987082
libdmmp: update time stamp of man pages
mwilck Apr 7, 2025
272808c
libmultipath: handle blacklisted paths on map_discovery
bmarzins Apr 28, 2025
97cb10c
multipathd: disable queueing on invalid multipath devices
bmarzins Apr 28, 2025
ad4471f
multipath-tools: add Quantum devices to hwtable
xosevp Apr 25, 2025
ae0b522
multipath-tools: replace dead url
xosevp Apr 27, 2025
4a3a4d2
GitHub workflows: retire Ubuntu 20.04
mwilck Apr 30, 2025
9972ebb
multipath-tools: hwtable: remove .pgfailback from QUANTUM/F1
xosevp Apr 30, 2025
c8a3e50
multipath-tools: hwtable: change AStor/NeoSapphire to work also with …
xosevp Apr 30, 2025
9a05536
libdmmp/Makefile: Fix KBUILD_BUILD_TIMESTAMP usage
Apr 4, 2025
e9e3ee1
multipath-tools: update Path Selector descriptions on the man page
xosevp May 9, 2025
419e9e8
kpartx_id: fix shellcheck reported errors
mwilck May 5, 2025
1757dbb
kpartx: fix file descriptor leak
mwilck May 5, 2025
b7fd205
libmpathpersist: fix memory leak in mpath_prout_rel()
mwilck May 5, 2025
2480d57
libmpathutil: vector_del_slot: modify v->allocated if realloc fails
mwilck May 7, 2025
68d2481
libmultipath: fix undefined behavior in 31-bit shift
mwilck May 5, 2025
01996d5
libmultipath: prioritizers/iet: fix possible NULL dereference
mwilck May 5, 2025
bbff3da
libmpathutil: remove vector_repack()
mwilck May 7, 2025
d87f4b2
libmpathutil: remove VECTOR_DEFAULT_SIZE macro
mwilck May 7, 2025
21c21bf
multipathd: always reset checker interval for failed paths
bmarzins May 22, 2025
d1106c8
libmpathpersist: retry commands on other paths in mpath_prout_common
bmarzins Jun 4, 2025
8d5f4a5
libmpathpersist: check released key against the reservation key
bmarzins Jun 4, 2025
f9fb65f
multipath-tools: remove extra hyphen from GCC std option
xosevp Jun 23, 2025
c78cf64
multipath-tools: replace FSF licences boilerplate with a SPDX-License…
xosevp Jun 24, 2025
f1c5200
multipathd: cli_reinstate(): avoid reinstated paths being failed again
mwilck Jul 1, 2025
c50fe04
multipath-tools: fix default blacklist of s390 devices
xosevp Jul 12, 2025
af9f444
multipath-tools: fix licence identifier
xosevp Jun 30, 2025
e6903d8
multipath-tools: add a comment about DASD arrays vendors
xosevp Jul 17, 2025
6686b8f
tests: fix tests when built against cmocka 1.1.8 or newer
DimStar77 Jul 18, 2025
9b1d721
libmultipath: fix crash in print_foreign_topology
bmarzins Aug 20, 2025
1c11ad2
multipath-tools: standardize NVME vendor_id in hwtable
xosevp Aug 19, 2025
d7a56ed
multipath-tools: fix hwtable comments
xosevp Jul 28, 2025
f5033fd
multipath-tools: add HITACHI VSP One SDS Block to hwtable
xosevp Aug 4, 2025
e7eb0ef
multipath-tools: add Seagate Lyve to hwtable
xosevp Aug 5, 2025
3e74d8b
multipath-tools: update NFINIDAT/InfiniBox config in hwtable
xosevp Aug 16, 2025
01d6ce4
Update NEWS.md
mwilck Aug 26, 2025
2f40d6d
GitHub workflows: Add commit SHA pattern to spelling action
mwilck Aug 26, 2025
3dc7b1b
GitHub workflows: enable Debian trixie and Fedora 42
mwilck Aug 25, 2025
2174a2e
libmultipath: bump version to 0.12.0
mwilck Aug 26, 2025
4f0f43f
libmultipath: fix missing return value check in snprint_devices()
mwilck Sep 5, 2025
66408f1
libmultipath/foreign/nvme: fix return value check in get_ctrl_blkdev()
mwilck Sep 5, 2025
5c59d5d
libmultipath: fix error return in snprint_devices()
bmarzins Sep 9, 2025
474afbd
Update NEWS.md with info about latest fixes
mwilck Sep 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ ifdef
ifndef
igroup
img
Infini
inotify
inttypes
ioctls
Expand Down Expand Up @@ -122,7 +123,9 @@ lpthread
Lun
lvm
lvmteam
Lyve
Marzinski
misdetection
mpath
mpathb
mpathpersist
Expand All @@ -140,7 +143,9 @@ nompath
NOSCAN
Nosync
nvme
NFINIDAT
OBJDEPS
oneshot
ontap
OOM
opensvc
Expand All @@ -152,6 +157,7 @@ petabytes
pgpolicy
plugindir
PNR
ppc
preferredip
preferredsds
prefixdir
Expand All @@ -174,6 +180,7 @@ reconfig
redhat
restorequeueing
retrigger
RETRYABLE
rhabarber
rootprefix
rootprefixdir
Expand All @@ -187,6 +194,7 @@ scsi
SCST
sda
sdc
Seagate
setmarginal
setprkey
setprstatus
Expand Down
3 changes: 3 additions & 0 deletions .github/actions/spelling/patterns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
# uuid:
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b

#commit
\b[0-9a-f]{7}\b

# WWNN/WWPN (NAA identifiers)
\b(?:0x)?10[0-9a-f]{14}\b
\b(?:0x|3)?[25][0-9a-f]{15}\b
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/abi-stable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ on:

jobs:
reference-abi:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: get parent tag
run: >
Expand Down Expand Up @@ -45,7 +45,7 @@ jobs:
path: abi

check-abi:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
needs: reference-abi
steps:
- name: get parent tag
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/abi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ env:

jobs:
save-and-test-ABI:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: set ABI branch
if: ${{ env.ABI_BRANCH == '' }}
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/build-and-unittest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ jobs:
run: rm -f tests/dmevents.out tests/directio.out
- name: root-test
run: sudo make DIO_TEST_DEV=/dev/zram$ZRAM test
focal:
runs-on: ubuntu-20.04
noble:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand All @@ -88,6 +88,7 @@ jobs:
make pkg-config valgrind
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
libmount-dev linux-modules-extra-$(uname -r)
- name: set CC
run: echo CC=${{ matrix.cc }} >> $GITHUB_ENV
- name: build
Expand Down
29 changes: 24 additions & 5 deletions .github/workflows/foreign.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [bookworm, sid]
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
container: ghcr.io/mwilck/multipath-cross-debian_cross-${{ matrix.os }}-${{ matrix.arch }}
steps:
- name: checkout
Expand All @@ -52,8 +57,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [bookworm, sid]
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
steps:
- name: set container arch
run: echo CONTAINER_ARCH="${{ matrix.arch }}" >> $GITHUB_ENV
Expand All @@ -68,7 +78,9 @@ jobs:
- name: unpack binary archive
run: tar xfv test-progs.tar
- name: enable foreign arch
uses: dbhi/qus/action@main
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: run tests
uses: mosteo-actions/docker-run@v1
with:
Expand All @@ -87,8 +99,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [bookworm, sid]
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
steps:
- name: mpath
run: sudo modprobe dm_multipath
Expand All @@ -107,7 +124,9 @@ jobs:
- name: unpack binary archive
run: tar xfv test-progs.tar
- name: enable foreign arch
uses: dbhi/qus/action@main
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: run tests
uses: mosteo-actions/docker-run@v1
with:
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/multiarch-stable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,18 @@ jobs:
fail-fast: false
matrix:
os:
- debian-trixie
- debian-bookworm
- debian-buster
- ubuntu-trusty
arch: [386, arm/v7]
include:
- os: debian-trixie
arch: aarch64
- os: debian-trixie
arch: s390x
- os: debian-trixie
arch: ppc64le
- os: debian-bookworm
arch: aarch64
- os: debian-bookworm
Expand All @@ -46,7 +53,9 @@ jobs:
- name: checkout
uses: actions/checkout@v4
- name: enable foreign arch
uses: dbhi/qus/action@main
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: compile and run unit tests
uses: mosteo-actions/docker-run@v1
with:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/multiarch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ jobs:
- name: checkout
uses: actions/checkout@v4
- name: enable foreign arch
uses: dbhi/qus/action@main
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: compile and run unit tests
uses: mosteo-actions/docker-run@v1
with:
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/native.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ jobs:
- debian-buster
- debian-bullseye
- debian-bookworm
- fedora-40
- debian-trixie
- fedora-42
- opensuse-leap
steps:
- name: checkout
Expand Down Expand Up @@ -93,7 +94,8 @@ jobs:
- debian-buster
- debian-bullseye
- debian-bookworm
- fedora-40
- debian-trixie
- fedora-42
- opensuse-leap
steps:
- name: checkout
Expand Down Expand Up @@ -125,7 +127,8 @@ jobs:
- debian-buster
- debian-bullseye
- debian-bookworm
- fedora-40
- debian-trixie
- fedora-42
- opensuse-leap
steps:
- name: mpath
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ multipathd/multipathd
multipathd/multipathd.8
multipathd/multipathc
multipathd/multipathd.service
multipathd/multipathd.socket
multipathd/multipathd-queueing.service
mpathpersist/mpathpersist
mpathpersist/mpathpersist.8
abi.tar.gz
Expand Down
12 changes: 10 additions & 2 deletions Makefile.inc
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ libudev_incdir := $(or $(shell $(PKG_CONFIG) --variable=includedir libudev),/usr
kernel_incdir := /usr/include
sysdir_bin := $(sys_execprefix)bin

abstract_socket := @/org/kernel/linux/storage/multipathd
pathname_socket := /run/multipathd.socket

ifeq ($(V),)
Q := @
# make's "Entering directory" messages are confusing in parallel mode
Expand Down Expand Up @@ -114,8 +117,11 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \
-DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(TGTDIR)$(plugindir)\" \
-DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \
-DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \
-DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP
CFLAGS := -std=gnu99 $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
-DEXTRAVERSION=\"$(EXTRAVERSION)\" \
-DABSTRACT_SOCKET=\"$(abstract_socket)\" -DPATHNAME_SOCKET=\"$(pathname_socket)\" \
-DWSTRINGOP_TRUNCATION=$(if $(WSTRINGOP_TRUNCATION),1,0) \
-MMD -MP
CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \
-fexceptions
BIN_CFLAGS := -fPIE -DPIE
LIB_CFLAGS := -fPIC
Expand Down Expand Up @@ -167,4 +173,6 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
-e 's:@SYSDIR_BIN@:'$(sysdir_bin)': g' \
-e 's:@RUNTIME_DIR@:'$(runtimedir)':g' \
-e 's/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g' \
-e 's,@ABSTRACT_SOCKET@,'$(abstract_socket)',g' \
-e 's,@PATHNAME_SOCKET@,'$(pathname_socket)',g' \
$< >$@
Loading
Loading