Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
f7d6cd1
multipathd: Fix race while registering PR key
bmarzins Nov 7, 2025
c8ed5e6
mpathpersist: Fix REPORT CAPABILITIES output
bmarzins Nov 11, 2025
866f343
GitHub Workflows: abi-stable: fix PARENT_TAG logic for pull request
mwilck Oct 27, 2025
541e36e
GitHub workflows: Update runners to ubuntu-24.04
mwilck Nov 14, 2025
1dbc6ff
GitHub workflows: native.yaml: add fedora-43
mwilck Nov 14, 2025
6e09ca1
GitHub workflows: native.yaml: add openSUSE Leap 16.0 and 15.6
mwilck Nov 14, 2025
00cdcbc
GitHub workflows: run arm64 tests on native runner
mwilck Nov 14, 2025
aee2310
GitHub workflows: rolling: upload binaries on error
mwilck Nov 17, 2025
34746cd
GitHub workflows: multiarch-stable: upload binaries on error
mwilck Nov 17, 2025
f3bdfef
GitHub workflows: native: upload binaries on error
mwilck Nov 17, 2025
b854c7b
GitHub workflows: multiarch: upload binaries on error
mwilck Nov 17, 2025
f24aca3
GitHub workflows: use -j$(nproc) consistently
mwilck Nov 17, 2025
2c872a7
GitHub workflows: install libmount-dev on Ubuntu
mwilck Nov 17, 2025
196b3d1
libdmmp: update man page time stamps
mwilck Nov 21, 2025
7ef482e
GitHub actions: spelling: ignore generic hex number patterns
mwilck Nov 21, 2025
2bf5284
GitHub actions: spelling: fix warning about ignore expect variant
mwilck Nov 21, 2025
9889fae
multipath-tools: add Seagate Exos and Nytro series to hwtable
xosevp Nov 15, 2025
5bdafa5
multipath-tools: identify more Storwize models
xosevp Nov 16, 2025
5835dca
multipathd: Dont pthread_join twice
Itxaka Dec 5, 2025
c971036
libmpathpersist: fix register retry status checking
bmarzins Dec 2, 2025
f3ba2e7
multipath-tools man pages: fix multipathd commands keyword ordering
bmarzins Dec 2, 2025
c46a4f2
multipathd: remember number of registered keys when ioctl fails
bmarzins Dec 2, 2025
4f3036b
libmpathpersist: fix code for skipping multipathd path registration
bmarzins Dec 15, 2025
df6a2c4
NEWS.md: describe post-0.13.0 changes
mwilck Dec 18, 2025
a298603
libmultipath: Remove the undefined symbol from the linker script
vadorovsky Jan 7, 2026
9f611e2
multipath-tools: Fix ISO C23 errors with strchr()
mwilck Dec 8, 2025
d643951
libmultipath: drop drop_multipath
mwilck Nov 26, 2025
7a07023
libmultipath: don't access path members in free_pgvec()
mwilck Nov 26, 2025
8108aaa
libmpathutil: constify find_slot()
mwilck Dec 13, 2024
fe559a7
libmultipath: don't touch mpvec in remove_map()
mwilck Dec 13, 2024
1e518ef
libmultipath: export cleanup_multipath()
mwilck Dec 19, 2025
dcaaec4
libmultipath: add cleanup_pathvec_and_free_paths()
mwilck Dec 19, 2025
cce7b72
libmultipath: don't free paths in orphan_paths()
mwilck Nov 28, 2025
afb7797
multipathd: free orphaned paths in checker_finished()
mwilck Dec 12, 2024
a5a5cae
libmultipath: remove free_paths argument from free_pathgroup()
mwilck Nov 28, 2025
ddb354d
libmultipath: remove free_paths argument from free_pgvec()
mwilck Nov 28, 2025
e3e4bb9
libmultipath: remove free_paths argument from free_multipathvec()
mwilck Nov 28, 2025
628289e
libmultipath: remove free_paths argument from free_multipath()
mwilck Nov 28, 2025
f72590a
libmultipath: don't free mpp->pg and mpp->paths in remove_map()
mwilck Jan 6, 2026
ea366ea
multipath: free paths through pathvec in check_usable_paths()
mwilck Dec 19, 2025
373da51
multipathd: add_map_without_path(): don't free paths
mwilck Dec 19, 2025
a3812bf
libmultipath: remove cleanup_multipath_and_paths()
mwilck Dec 19, 2025
edf2bac
libmultipath: annotate functions that may free paths
mwilck Dec 19, 2025
e57e40f
libmultipath: simplify sysfs_get_target_nodename()
mwilck Dec 10, 2025
29f262b
multipathd: join the init_unwinder dummy thread
mwilck Dec 10, 2025
8c39e60
kpartx: fix some memory leaks
mwilck Dec 10, 2025
f1299f2
libmpathutil: use union for bitfield
mwilck Dec 17, 2025
692e448
libmpathutil: add wrapper code for libudev
mwilck Dec 15, 2025
2dafe7f
multipath-tools: use the libudev wrapper functions
mwilck Dec 15, 2025
b15b3d4
Makefile: add functionality to determine cmocka version
mwilck Dec 16, 2025
8109b9c
multipath-tools tests: adaptations for cmocka 2.0
mwilck Dec 16, 2025
f6d2abe
libmpathutil, libmultipath: bump library versions
mwilck Jan 9, 2026
0b9afeb
Update NEWS.md
mwilck Jan 9, 2026
e9f764c
libmultipath: reset pgindex in uninitialize_path()
mwilck Jan 6, 2026
6ca1b64
libmultipath: clarify code in set_path_removed()
mwilck Jan 6, 2026
d480184
libmultipath: nullify pp->mpp before calling free_path()
mwilck Jan 6, 2026
a00f1cc
libmultipath: log error when freeing path that refers to a map
mwilck Jan 6, 2026
dc20e3c
libmultipath: sync_paths(): print message when fixing pp->mpp
mwilck Jan 7, 2026
7ab0caa
libmultipath: don't free mpp->paths in group_paths()
mwilck Jan 7, 2026
958c826
libmultipath: warn only once in scsi_tmo_error_msg()
mwilck Jan 9, 2026
24c0112
libmultipath: find_hwe(): fix gcc errors at high optimization levels
mwilck Jan 9, 2026
1ef540a
multipath-tools: compile with -fno-strict-aliasing
mwilck Jan 9, 2026
f3ce36e
libmultipath: add purge_disconnected configuration option
brianatpurestorage Jan 10, 2026
690550a
multipathd: implement purge functionality for disconnected paths
brianatpurestorage Jan 10, 2026
b4cde6b
multipath-tools: move SPDX-License-Identifier to the top of the file
xosevp Jan 12, 2026
02e0933
kpartx: avoid double-free of mapname
mwilck Jan 15, 2026
ebf55fb
kpartx: remove "hotplug" mode
mwilck Jan 15, 2026
c032ba1
multipathd: fix an uninitialized variable warning
mwilck Jan 16, 2026
5e5d210
Makefiles: add "ASAN=1" make parameter for AddressSanitizer
mwilck Jan 16, 2026
c94c65c
Makefiles: add "OPT=" make parameter
mwilck Jan 16, 2026
888187e
multipath-tools tests: suppress a compiler warning for vpd.c
mwilck Jan 19, 2026
6356feb
.clang-format-ignore: add dict.c
mwilck Jan 19, 2026
cdf08fb
Spelling: Remove unneeded entries in expect.txt
mwilck Jan 19, 2026
8ab0710
Update NEWS.md
mwilck Jan 9, 2026
b826985
libmultipath: bump library version
mwilck Jan 15, 2026
5e308b8
libmultipath: bump version to 0.14.0
mwilck Jan 15, 2026
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
1 change: 1 addition & 0 deletions .clang-format-ignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Makefile*
libmultipath/dict.c
libmultipath/hwtable.c
multipathd/cli.h
17 changes: 12 additions & 5 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ alloc
alltgpt
alua
aptpl
ASAN
ascq
ata
autoconfig
autodetected
autoresize
barbie
BINDIR
bitfield
blkid
bmarzins
Bsymbolic
Expand Down Expand Up @@ -58,14 +60,15 @@ EAGAIN
ECKD
emc
Engenio
Equal
EVPD
Exos
failback
failover
fds
fexceptions
FFFFFFFF
fge
fno
followover
forcequeueing
fpin
Expand All @@ -77,6 +80,7 @@ getrlimit
getuid
github
gitlab
google
GPT
hbtl
hds
Expand Down Expand Up @@ -122,6 +126,7 @@ libudevdir
liburcu
linux
LIO
lld
lpthread
Lun
lvm
Expand All @@ -141,13 +146,13 @@ multipathing
multipaths
multiqueue
mwilck
NFINIDAT
NOLOG
nompath
NOSCAN
Nosync
NVMe
nvme
NFINIDAT
Nytro
OBJDEPS
oneshot
ontap
Expand All @@ -157,8 +162,10 @@ OPTFLAGS
paramp
partx
pathgroup
pathlist
petabytes
pgpolicy
pgvec
plugindir
PNR
ppc
Expand Down Expand Up @@ -193,6 +200,7 @@ rpmbuild
rport
rtpi
rtprio
sanitizers
sas
sbp
scsi
Expand All @@ -219,11 +227,11 @@ suse
svg
switchgroup
sys
SYSDIR
sysfs
sysinit
tcp
terabytes
SYSDIR
TESTDEPS
testname
tgill
Expand All @@ -240,7 +248,6 @@ udevd
uevent
uid
unitdir
unregistering
unsetmarginal
unsetprkey
unsetprstatus
Expand Down
5 changes: 5 additions & 0 deletions .github/actions/spelling/patterns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
#commit
\b[0-9a-f]{7}\b

# Generic Hex numbers
\b0x[0-9a-f]{4}\b
\b0x[0-9a-f]{8}\b
\b0x[0-9a-f]{16}\b

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

jobs:
reference-abi:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: get parent tag
- name: get parent tag (push)
run: >
echo ${{ github.ref }} |
sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
if: ${{ github.event_name == 'push' }}
- name: get parent tag (PR)
run: >
echo ${{ github.base_ref }} |
sed -E 's,stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
if: ${{ github.event_name == 'pull_request' }}
- name: assert parent tag
run: /bin/false
if: ${{ env.PARENT_TAG == '' }}
Expand All @@ -32,33 +38,40 @@ jobs:
gcc make pkg-config abigail-tools
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
libmount-dev
- name: checkout ${{ env.PARENT_TAG }}
uses: actions/checkout@v4
with:
ref: ${{ env.PARENT_TAG }}
- name: build ABI for ${{ env.PARENT_TAG }}
run: make -j$(grep -c ^processor /proc/cpuinfo) -Orecurse abi
run: make -j$(nproc) -Orecurse abi
- name: save ABI
uses: actions/upload-artifact@v4
with:
name: multipath-abi-${{ env.PARENT_TAG }}
path: abi

check-abi:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: reference-abi
steps:
- name: get parent tag
- name: get parent tag (push)
run: >
echo ${{ github.ref }} |
sed -E 's,refs/heads/stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
if: ${{ github.event_name == 'push' }}
- name: get parent tag (PR)
run: >
echo ${{ github.base_ref }} |
sed -E 's,stable-([0-9]\.[0-9]*)\.y,PARENT_TAG=\1.0,' >> $GITHUB_ENV
if: ${{ github.event_name == 'pull_request' }}
- name: assert parent tag
run: /bin/false
if: ${{ env.PARENT_TAG == '' }}
- name: checkout ${{ env.PARENT_TAG }}
- name: checkout ${{ github.ref }}
uses: actions/checkout@v4
with:
ref: ${{ env.PARENT_TAG }}
ref: ${{ github.ref }}
- name: download ABI for ${{ env.PARENT_TAG }}
id: download_abi
uses: actions/download-artifact@v4
Expand All @@ -74,9 +87,10 @@ jobs:
gcc make pkg-config abigail-tools
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
libmount-dev
- name: check ABI of ${{ github.ref }} against ${{ env.PARENT_TAG }}
id: check_abi
run: make -j$(grep -c ^processor /proc/cpuinfo) -Orecurse abi-test
run: make -j$(nproc) -Orecurse abi-test
continue-on-error: true
- name: save differences
if: ${{ steps.check_abi.outcome != 'success' }}
Expand Down
5 changes: 3 additions & 2 deletions .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-22.04
runs-on: ubuntu-24.04
steps:
- name: set ABI branch
if: ${{ env.ABI_BRANCH == '' }}
Expand All @@ -42,8 +42,9 @@ jobs:
gcc make pkg-config abigail-tools
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
libmount-dev
- name: create ABI
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) abi.tar.gz
run: make -Orecurse -j$(nproc) abi.tar.gz
- name: save ABI
uses: actions/upload-artifact@v4
with:
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/build-and-unittest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
- 'stable-*'
jobs:
jammy:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -46,16 +46,16 @@ jobs:
if: ${{ matrix.cc == 'clang' }}
- name: build
run: >
make -Orecurse -j$(grep -c ^processor /proc/cpuinfo)
make -Orecurse -j$(nproc)
READLINE=${{ matrix.rl }} OPTFLAGS="$OPT"
- name: test
run: >
make -Orecurse -j$(grep -c ^processor /proc/cpuinfo)
make -Orecurse -j$(nproc)
OPTFLAGS="$OPT" test
- name: valgrind-test
id: valgrind
run: >
make -Orecurse -j$(grep -c ^processor /proc/cpuinfo)
make -Orecurse -j$(nproc)
OPTFLAGS="$OPT" valgrind-test
continue-on-error: true
- name: valgrind-results
Expand Down Expand Up @@ -92,12 +92,12 @@ jobs:
- name: set CC
run: echo CC=${{ matrix.cc }} >> $GITHUB_ENV
- name: build
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) READLINE=${{ matrix.rl }}
run: make -Orecurse -j$(nproc) READLINE=${{ matrix.rl }}
- name: test
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) test
run: make -Orecurse -j$(nproc) test
- name: valgrind-test
id: valgrind
run: make -Orecurse -j$(grep -c ^processor /proc/cpuinfo) valgrind-test
run: make -Orecurse -j$(nproc) valgrind-test
continue-on-error: true
- name: valgrind-results
run: cat tests/*.vgr
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/coverity.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:

jobs:
upload-coverity-scan:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v4
Expand All @@ -16,6 +16,7 @@ jobs:
gcc make pkg-config
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
libmount-dev
- name: download coverity
run: >
curl -o cov-analysis-linux64.tar.gz
Expand All @@ -32,7 +33,7 @@ jobs:
- name: build with cov-build
run: >
PATH="$PWD/coverity/bin:$PATH"
cov-build --dir cov-int make -Orecurse -j"$(grep -c ^processor /proc/cpuinfo)"
cov-build --dir cov-int make -Orecurse -j"$(nproc)"
- name: pack results
run: tar cfz multipath-tools.tgz cov-int
- name: submit results
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/foreign.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ on:
jobs:

cross-build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand All @@ -43,7 +43,7 @@ jobs:
- name: checkout
uses: actions/checkout@v4
- name: build
run: make -j -Orecurse test-progs.tar
run: make -j$(nproc) -Orecurse test-progs.tar
- name: upload binary archive
uses: actions/upload-artifact@v4
with:
Expand All @@ -52,7 +52,7 @@ jobs:
overwrite: true

test:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: cross-build
strategy:
fail-fast: false
Expand Down Expand Up @@ -94,7 +94,7 @@ jobs:
pull-params: "--platform linux/${{ env.CONTAINER_ARCH }}"

root-test:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: cross-build
strategy:
fail-fast: false
Expand Down
27 changes: 22 additions & 5 deletions .github/workflows/multiarch-stable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ on:
jobs:

build-old:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
Expand All @@ -37,14 +37,10 @@ jobs:
- 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
arch: s390x
- os: debian-bookworm
Expand All @@ -57,6 +53,7 @@ jobs:
with:
image: tonistiigi/binfmt:latest
- name: compile and run unit tests
id: test
uses: mosteo-actions/docker-run@v1
with:
image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
Expand All @@ -65,3 +62,23 @@ jobs:
command: test
params: "--platform linux/${{ matrix.arch }}"
pull-params: "--platform linux/${{ matrix.arch }}"
continue-on-error: true
- name: create binary archive
uses: mosteo-actions/docker-run@v1
with:
image: ghcr.io/mwilck/multipath-build-${{ matrix.os }}
guest-dir: /build
host-dir: ${{ github.workspace }}
command: test-progs.tar
params: "--platform linux/${{ matrix.arch }}"
pull-params: "--platform linux/${{ matrix.arch }}"
if: steps.test.outcome != 'success'
- name: upload binary archive
uses: actions/upload-artifact@v4
with:
name: binaries-${{ matrix.os }}-${{ matrix.arch }}
path: test-progs.tar
if: steps.test.outcome != 'success'
- name: fail
run: /bin/false
if: steps.test.outcome != 'success'
Loading
Loading