Skip to content

Commit bc50147

Browse files
committed
Merge tag '0.12.0' into next
Signed-off-by: Martin Wilck <mwilck@suse.com>
2 parents 9bca786 + f885001 commit bc50147

118 files changed

Lines changed: 531 additions & 848 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/spelling/expect.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ ifdef
9191
ifndef
9292
igroup
9393
img
94+
Infini
9495
inotify
9596
inttypes
9697
ioctls
@@ -122,6 +123,7 @@ lpthread
122123
Lun
123124
lvm
124125
lvmteam
126+
Lyve
125127
Marzinski
126128
misdetection
127129
mpath
@@ -141,6 +143,7 @@ nompath
141143
NOSCAN
142144
Nosync
143145
nvme
146+
NFINIDAT
144147
OBJDEPS
145148
oneshot
146149
ontap
@@ -154,6 +157,7 @@ petabytes
154157
pgpolicy
155158
plugindir
156159
PNR
160+
ppc
157161
preferredip
158162
preferredsds
159163
prefixdir
@@ -176,6 +180,7 @@ reconfig
176180
redhat
177181
restorequeueing
178182
retrigger
183+
RETRYABLE
179184
rhabarber
180185
rootprefix
181186
rootprefixdir
@@ -189,6 +194,7 @@ scsi
189194
SCST
190195
sda
191196
sdc
197+
Seagate
192198
setmarginal
193199
setprkey
194200
setprstatus

.github/actions/spelling/patterns.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
# uuid:
88
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
99

10+
#commit
11+
\b[0-9a-f]{7}\b
12+
1013
# WWNN/WWPN (NAA identifiers)
1114
\b(?:0x)?10[0-9a-f]{14}\b
1215
\b(?:0x|3)?[25][0-9a-f]{15}\b

.github/workflows/abi-stable.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ on:
1515

1616
jobs:
1717
reference-abi:
18-
runs-on: ubuntu-20.04
18+
runs-on: ubuntu-22.04
1919
steps:
2020
- name: get parent tag
2121
run: >
@@ -45,7 +45,7 @@ jobs:
4545
path: abi
4646

4747
check-abi:
48-
runs-on: ubuntu-20.04
48+
runs-on: ubuntu-22.04
4949
needs: reference-abi
5050
steps:
5151
- name: get parent tag

.github/workflows/abi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ env:
1818

1919
jobs:
2020
save-and-test-ABI:
21-
runs-on: ubuntu-20.04
21+
runs-on: ubuntu-22.04
2222
steps:
2323
- name: set ABI branch
2424
if: ${{ env.ABI_BRANCH == '' }}

.github/workflows/build-and-unittest.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ jobs:
7070
run: rm -f tests/dmevents.out tests/directio.out
7171
- name: root-test
7272
run: sudo make DIO_TEST_DEV=/dev/zram$ZRAM test
73-
focal:
74-
runs-on: ubuntu-20.04
73+
noble:
74+
runs-on: ubuntu-24.04
7575
strategy:
7676
fail-fast: false
7777
matrix:
@@ -91,6 +91,7 @@ jobs:
9191
make pkg-config valgrind
9292
libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
9393
libudev-dev libjson-c-dev liburcu-dev libcmocka-dev libedit-dev
94+
libmount-dev linux-modules-extra-$(uname -r)
9495
- name: set CC
9596
run: echo CC=${{ matrix.cc }} >> $GITHUB_ENV
9697
- name: build

.github/workflows/foreign.yaml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,13 @@ jobs:
3434
strategy:
3535
fail-fast: false
3636
matrix:
37-
os: [bookworm, sid]
37+
os: [bullseye, bookworm, trixie, sid]
3838
arch: [ppc64le, arm64, s390x]
39+
exclude:
40+
- os: bullseye
41+
arch: ppc64le
42+
- os: bullseye
43+
arch: s390x
3944
container: ghcr.io/mwilck/multipath-cross-debian_cross-${{ matrix.os }}-${{ matrix.arch }}
4045
steps:
4146
- name: checkout
@@ -55,8 +60,13 @@ jobs:
5560
strategy:
5661
fail-fast: false
5762
matrix:
58-
os: [bookworm, sid]
63+
os: [bullseye, bookworm, trixie, sid]
5964
arch: [ppc64le, arm64, s390x]
65+
exclude:
66+
- os: bullseye
67+
arch: ppc64le
68+
- os: bullseye
69+
arch: s390x
6070
steps:
6171
- name: set container arch
6272
run: echo CONTAINER_ARCH="${{ matrix.arch }}" >> $GITHUB_ENV
@@ -71,7 +81,9 @@ jobs:
7181
- name: unpack binary archive
7282
run: tar xfv test-progs.tar
7383
- name: enable foreign arch
74-
uses: dbhi/qus/action@main
84+
uses: docker/setup-qemu-action@v2
85+
with:
86+
image: tonistiigi/binfmt:latest
7587
- name: run tests
7688
uses: mosteo-actions/docker-run@v1
7789
with:
@@ -90,8 +102,13 @@ jobs:
90102
strategy:
91103
fail-fast: false
92104
matrix:
93-
os: [bookworm, sid]
105+
os: [bullseye, bookworm, trixie, sid]
94106
arch: [ppc64le, arm64, s390x]
107+
exclude:
108+
- os: bullseye
109+
arch: ppc64le
110+
- os: bullseye
111+
arch: s390x
95112
steps:
96113
- name: mpath
97114
run: sudo modprobe dm_multipath
@@ -110,7 +127,9 @@ jobs:
110127
- name: unpack binary archive
111128
run: tar xfv test-progs.tar
112129
- name: enable foreign arch
113-
uses: dbhi/qus/action@main
130+
uses: docker/setup-qemu-action@v2
131+
with:
132+
image: tonistiigi/binfmt:latest
114133
- name: run tests
115134
uses: mosteo-actions/docker-run@v1
116135
with:

.github/workflows/multiarch-stable.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,18 @@ jobs:
3131
fail-fast: false
3232
matrix:
3333
os:
34+
- debian-trixie
3435
- debian-bookworm
3536
- debian-buster
3637
- ubuntu-trusty
3738
arch: [386, arm/v7]
3839
include:
40+
- os: debian-trixie
41+
arch: aarch64
42+
- os: debian-trixie
43+
arch: s390x
44+
- os: debian-trixie
45+
arch: ppc64le
3946
- os: debian-bookworm
4047
arch: aarch64
4148
- os: debian-bookworm

.github/workflows/native.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ jobs:
3838
- debian-buster
3939
- debian-bullseye
4040
- debian-bookworm
41-
- fedora-40
41+
- debian-trixie
42+
- fedora-42
4243
- opensuse-leap
4344
steps:
4445
- name: checkout
@@ -96,7 +97,8 @@ jobs:
9697
- debian-buster
9798
- debian-bullseye
9899
- debian-bookworm
99-
- fedora-40
100+
- debian-trixie
101+
- fedora-42
100102
- opensuse-leap
101103
steps:
102104
- name: checkout
@@ -128,7 +130,8 @@ jobs:
128130
- debian-buster
129131
- debian-bullseye
130132
- debian-bookworm
131-
- fedora-40
133+
- debian-trixie
134+
- fedora-42
132135
- opensuse-leap
133136
steps:
134137
- name: mpath

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ multipathd/multipathd.8
2525
multipathd/multipathc
2626
multipathd/multipathd.service
2727
multipathd/multipathd.socket
28+
multipathd/multipathd-queueing.service
2829
mpathpersist/mpathpersist
2930
mpathpersist/mpathpersist.8
3031
abi.tar.gz

NEWS.md

Lines changed: 70 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,39 @@ release. These bug fixes will be tracked in stable branches.
99

1010
See [README.md](README.md) for additional information.
1111

12-
## multipath-tools 0.12.0, work in progress
12+
## multipath-tools 0.12.0, 2025/08
1313

1414
### User-visible changes
1515

16+
* Besides the abstract unix socket (default:
17+
`@/org/kernel/linux/storage/multipathd`), multipathd now also listens
18+
on a unix pathname socket (default: `/run/multipathd.socket`). This makes it
19+
possible to communicate with multipathd from a container in which the
20+
named socket is bind-mounted. See **multipathd.8** for details.
21+
Both sockets can also be received from systemd if socket activation is used
22+
(not recommended for multipathd).
23+
Fixes [#111](https://github.com/opensvc/multipath-tools/issues/111).
24+
Commits f421a43 ff.
1625
* multipathd now sets the `port_state` of Fibre Channel remote ports to
1726
"marginal" for NVMe devices, too. Note that unlike SCSI, this will not
1827
directly affect the kernel NVMe driver's behavior. Marginal state will
1928
affect path grouping on multipathd's part, though.
2029
This change is only effective if dm-multipath is used for NVMe devices
2130
(i.e. the kernel parameter `nvme_core.multipath=N` is in use).
31+
Commit 30fc3e9.
2232
* Improved the communication with **udev** and **systemd** by triggering
23-
uevents when path devices are added to or removed from multipath maps.
24-
33+
uevents when path devices are added to or removed from multipath maps,
34+
or when `multipathd reconfigure` is executed after changing blacklist
35+
directives in `multipath.conf`.
36+
Fixes [#103](https://github.com/opensvc/multipath-tools/issues/103).
37+
Commits 98b3a7b, ad3ea47, d9c6133, 272808c f.
38+
* Maps that were added outside of multipathd (e.g. using the **multipath**
39+
command) and that couldn't be reloaded by multipathd used to be ignored
40+
by multipathd. multipathd will now monitor them. If some paths were
41+
offline while the map was created, multipathd will now add them to the
42+
map when they go online again. Commit 9038d25 ff.
43+
* multipathd retries persistent reservation commands that have failed on one
44+
path on another one. Commit d1106c8.
2545

2646
### Other major changes
2747

@@ -30,37 +50,77 @@ See [README.md](README.md) for additional information.
3050
function `checker_finished()`. Map deletions don't happen any more
3151
inside the checker loop, simplifying the code flow. `checker_finished()`
3252
now also takes care of all actions that multipath was doing in scheduled
33-
intervals ("ticks").
53+
intervals ("ticks"). Commit 0ff1191 ff.
3454

3555
### Bug fixes
3656

3757
* Fix multipathd crash because of invalid path group index value, for example
3858
if an invalid path device was removed from a map.
3959
Fixes [#105](https://github.com/opensvc/multipath-tools/issues/105).
40-
This issue existed since 0.4.5.
60+
This issue existed since 0.4.5. Commit cd912cf.
4161
* Make sure maps are reloaded in the path checker loop after detecting an
4262
inconsistent or wrong kernel state (e.g. missing or falsely mapped path
4363
device). Wrongly mapped paths will be unmapped and released to the system.
4464
Fixes another issue reported in
4565
[#105](https://github.com/opensvc/multipath-tools/issues/105).
66+
Commit 340e74d.
4667
* Fix the problem that, if a path device is added while offline, path grouping
4768
may be wrong if `path_grouping_policy` is set to `group_by_serial` or
4869
`group_by_tpg`, even if the path comes online later.
4970
Fixes [#108](https://github.com/opensvc/multipath-tools/issues/108).
50-
This problem has existed since 0.4.5
71+
This problem has existed since 0.4.5. Commits c20fb70, 70c1724.
72+
* Fix compilation issue with musl libc on ppc64le and s390x. Fixes #112.
73+
Commit 439044b
5174
* Fix the problem that `group_by_tpg` might be disabled if one or more
5275
paths were offline during initial configuration.
53-
This problem exists since 0.9.6.
54-
* Fix possible misdetection of changed pathgroups in a map.
55-
This (minor) problem was introduced in 0.5.0.
76+
This problem exists since 0.9.6. Commit b47a577.
5677
* Fix the problem that if a map was scheduled to be reloaded already,
5778
`max_sectors_kb` might not be set on a path device that
5879
was being added to a multipath map. This problem was introduced in 0.9.9.
80+
Commit f5c0c4b.
81+
* Fix possible misdetection of changed pathgroups in a map.
82+
This (minor) problem was introduced in 0.5.0. Commit d4b35f6.
83+
* Avoid a possible system hang during shutdown with queueing multipath maps,
84+
which was introduced in 0.8.8. Commit ee062a0.
85+
* Failed paths should be checked every `polling_interval`. In certain cases,
86+
this wouldn't happen, because the check interval wasn't reset by multipathd.
87+
Commit 21c21bf.
88+
* It could happen that multipathd would accidentally release a SCSI persistent
89+
reservation held by another node. Fix it. Commit 8d5f4a5.
90+
* After manually failing some paths and then reinstating them, sometimes
91+
the reinstated paths were immediately failed again by multipathd.
92+
Commit f1c5200.
93+
* Fix crash in foreign (nvme native multipath) code, present since 0.8.8.
94+
Commit 9b1d721.
95+
* Fix file descriptor leak in kpartx. This problem existed since 0.4.5.
96+
Commit 1757dbb.
97+
* Fix memory leak in error code path in libmpathpersist which existed
98+
since 0.4.9. Commit b7fd205.
99+
* Fix possible out-of-bounds memory access in vector code that existed
100+
since 0.4.9. Commit 2480d57.
101+
* Fix a possible NULL dereference in the iet prioritizer, existing since
102+
0.4.9. Commit 01996d5.
103+
* Fix misspelled gcc option "-std". Commit f9fb65f.
104+
* Fix error code path for "multipathd show devices".
105+
Problem existed since 0.8.5. Commits 4f0f43f, 5c59d5d.
106+
* Fix an error check in the nvme foreign library, problem introduced in 0.7.8.
107+
Commit 66408f1.
59108

60109
### Other changes
61110

62111
* Cleanup and improvement of the path discovery code that uses ioctls to
63-
detect device properties.
112+
detect device properties. Commits 6b91bfb ff.
113+
* Fix CI with cmocka 1.1.8 and newer. Fixes #117. Commit 6686b8f.
114+
* Updates to the built-in hardware table:
115+
- Add Quantum devices
116+
- Enable ALUA for AStor/NeoSapphire
117+
- Update NFINIDAT/InfiniBox config
118+
- Fix product blacklist of S/390 devices
119+
- Add Seagate Lyve
120+
- Add HITACHI VSP One SDS Block
121+
* Man page updates.
122+
* Updates to GitHub workflows.
123+
* Replace FSF licenses with SPDX-License-Identifier.
64124

65125
## multipath-tools 0.11.0, 2024/11
66126

0 commit comments

Comments
 (0)