Skip to content

Commit 28c1134

Browse files
authored
Release 0.13.0
multipath-tools 0.13.0
2 parents f885001 + 13f2b3e commit 28c1134

25 files changed

Lines changed: 1122 additions & 534 deletions

.clang-format

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# -*- yaml -*-
2+
---
3+
BasedOnStyle: LLVM
4+
IndentWidth: 8
5+
ContinuationIndentWidth: 8
6+
UseTab: Always
7+
TabWidth: 8
8+
BreakBeforeBraces: Linux
9+
BreakStringLiterals: false
10+
AllowShortFunctionsOnASingleLine: Empty
11+
AlignAfterOpenBracket: Align
12+
PointerAlignment: Right
13+
ColumnLimit: 79
14+
PenaltyBreakAssignment: 50
15+
PenaltyBreakBeforeFirstCallParameter: 200
16+
#PenaltyBreakBeforeMemberAccess: 250
17+
PenaltyBreakComment: 50
18+
PenaltyBreakOpenParenthesis: 200
19+
PenaltyBreakString: 300
20+
PenaltyExcessCharacter: 5
21+
PenaltyIndentedWhitespace: 2
22+
PenaltyReturnTypeOnItsOwnLine: 50
23+
SortIncludes: Never
24+
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
25+
AlignConsecutiveAssignments: None
26+
AlignConsecutiveDeclarations: None
27+
SkipMacroDefinitionBody: true
28+
ForEachMacros:
29+
- vector_foreach_slot
30+
- vector_foreach_slot_backwards
31+
- vector_foreach_slot_after
32+
---

.clang-format-ignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Makefile*
2+
libmultipath/hwtable.c
3+
multipathd/cli.h

.github/actions/spelling/expect.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ dmraid
5555
dmsetup
5656
dracut
5757
EAGAIN
58+
ECKD
5859
emc
5960
Engenio
61+
Equal
6062
EVPD
6163
failback
6264
failover
@@ -92,6 +94,7 @@ ifndef
9294
igroup
9395
img
9496
Infini
97+
Infinidat
9598
inotify
9699
inttypes
97100
ioctls
@@ -142,6 +145,7 @@ NOLOG
142145
nompath
143146
NOSCAN
144147
Nosync
148+
NVMe
145149
nvme
146150
NFINIDAT
147151
OBJDEPS
@@ -167,6 +171,7 @@ prioritizer
167171
prkeys
168172
PROUT
169173
pthreads
174+
QSAN
170175
rdac
171176
rdma
172177
readcap
@@ -180,7 +185,7 @@ reconfig
180185
redhat
181186
restorequeueing
182187
retrigger
183-
RETRYABLE
188+
retryable
184189
rhabarber
185190
rootprefix
186191
rootprefixdir
@@ -193,7 +198,6 @@ sbp
193198
scsi
194199
SCST
195200
sda
196-
sdc
197201
Seagate
198202
setmarginal
199203
setprkey
@@ -217,7 +221,6 @@ switchgroup
217221
sys
218222
sysfs
219223
sysinit
220-
systemd
221224
tcp
222225
terabytes
223226
SYSDIR
@@ -237,6 +240,7 @@ udevd
237240
uevent
238241
uid
239242
unitdir
243+
unregistering
240244
unsetmarginal
241245
unsetprkey
242246
unsetprstatus
@@ -255,7 +259,6 @@ VNX
255259
vpd
256260
VSN
257261
wakka
258-
watchdogsec
259262
weightedpath
260263
wholedisk
261264
Wilck

.github/workflows/codingstyle.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Check coding style
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- queue
8+
- tip
9+
- 'stable-*'
10+
paths:
11+
- '.clang-format'
12+
- '.github/workflows/codingstyle.yaml'
13+
- '**.h'
14+
- '**.c'
15+
pull_request:
16+
branches:
17+
- master
18+
- queue
19+
- 'stable-*'
20+
paths:
21+
- '.clang-format'
22+
- '.github/workflows/codingstyle.yaml'
23+
- '**.h'
24+
- '**.c'
25+
26+
permissions:
27+
contents: read
28+
29+
jobs:
30+
stylecheck:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- uses: actions/checkout@v4
34+
- run: >-
35+
echo "BASEREF=${{ github.event.pull_request.base.sha }}" >>$GITHUB_ENV
36+
if: ${{ github.event_name == 'pull_request' }}
37+
- run: >-
38+
echo "BASEREF=${{ github.event.before }}" >>$GITHUB_ENV
39+
if: ${{ github.event_name == 'push' }}
40+
- run: git fetch --depth=1 origin ${{ env.BASEREF }}
41+
- uses: yshui/git-clang-format-lint@master
42+
with:
43+
base: ${{ env.BASEREF }}

NEWS.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,52 @@ 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.13.0, 2025/10
13+
14+
### Major rework of the SCSI Persistent Reservation code
15+
16+
The mpathpersist code had many areas where it did a poor job of
17+
mimicking the behavior of setting up persistent reservations on an
18+
individual device, especially if some paths to the multipath device
19+
were missing or unusable.
20+
21+
Issues improved in this release:
22+
23+
* Persistent reservation operations in cases where the reservation
24+
is held held by an unavailable path. For example, when such a key
25+
is unregistered, libmpathpersist now preempts the old key
26+
after verifying that the multipath device is holding the reservation.
27+
* Releasing a reservation held by an unavailable path. This has always
28+
had code to handle it, but it relied on optional Persistent
29+
Reservation features. The new code preempts the key and then restores
30+
the removed registered keys while the device is suspended.
31+
* Handling removal of keys from paths that were down when the multipath
32+
device was unregistered.
33+
* Changing how conflicts on key registration are handled. Instead of
34+
the old rollback method (which was broken anyway),
35+
libmpathpersist now retries with REGISTER AND IGNORE as long as the
36+
REGISTER command completed successfully down some of the paths.
37+
* Changing when the reservation key is set to fix corner cases on
38+
failure and registration while paths are coming up.
39+
* Retrying to fix corner cases when a path is coming up while doing a
40+
reserve, preempt or clear.
41+
* Allowing registrations to succeed when there are retryable errors,
42+
if the paths are actually down.
43+
* Fixing the reservation key validation in some commands.
44+
* Handling a race condition that may occur while changing the reservation key
45+
of a multipath map.
46+
* Handling preemption of registrations of type "all registrants".
47+
48+
In the course of making these changes, a number of corner cases were fixed,
49+
too. Please consult the commit messages for details.
50+
51+
### Other changes
52+
53+
* Updates to the built-in hardware table:
54+
- add some NVMe storage array (VASTData, Infinidat, HITACHI VSP)
55+
- add QSAN
56+
- add EqualLogic PS
57+
1258
## multipath-tools 0.12.0, 2025/08
1359

1460
### User-visible changes

libmpathpersist/libmpathpersist.version

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,10 @@ global:
3434
mpath_persistent_reserve_out__;
3535
} LIBMPATHPERSIST_2.1.0;
3636

37-
__LIBMPATHPERSIST_INT_1.1.0 {
37+
__LIBMPATHPERSIST_INT_2.1.0 {
3838
/* Internal use by multipath-tools */
3939
dumpHex;
4040
mpath_alloc_prin_response;
4141
prin_do_scsi_ioctl;
4242
prout_do_scsi_ioctl;
43-
update_map_pr;
4443
};

libmpathpersist/mpath_persist.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ extern "C" {
6565
#define MPATH_PR_RETRYABLE_ERROR 16 /* error that might be succeed
6666
down another path. Internal
6767
only. */
68+
#define MPATH_PR_SUCCESS_UNREGISTER 17 /* Success, and additionally, all
69+
paths were unregistered.
70+
Internal only. */
6871

6972
/* PR MASK */
7073
#define MPATH_F_APTPL_MASK 0x01 /* APTPL MASK*/

0 commit comments

Comments
 (0)