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

multipath-tools 0.10.1 and 0.10.2 #17

Closed
wants to merge 32 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
43ef161
GitHub workflows: use {upload,download}-artifact@v4
mwilck Sep 13, 2024
2e552e3
GitHub workflows: update dawidd6/action-download-artifact
mwilck Sep 13, 2024
978f2cb
Github workflows: native.yml: use mosteo-actions/docker-run
mwilck Sep 13, 2024
1d44836
GitHub workflows: native.yml: use extra job for clang
mwilck Sep 13, 2024
01ced67
GitHub workflows: native.yaml: make test and archive separately
mwilck Sep 13, 2024
6c6330d
GitHub workflows: enable unit tests for stable branches
mwilck Nov 14, 2024
c90c971
GitHub Workflows: add abi check for stable branches
mwilck Nov 14, 2024
e886480
libmultipath: dm_get_maps(): don't bail out for single-map failures
mwilck Nov 12, 2024
1a9ad29
11-dm-mpath.rules.in: import DM_COLDPLUG_SUSPENDED only once
mwilck Oct 31, 2024
ce38572
11-dm-mpath.rules.in: handle inactive suspended devices correctly
mwilck Oct 31, 2024
1183dc5
11-dm-mpath.rules.in: clarify DM_ACTIVATION logic
mwilck Oct 31, 2024
be50c2f
11-dm-mpath-rules.in: skip one .DM_NOSCAN check
mwilck Nov 3, 2024
1548380
11-dm-mpath.rules.in: set .DM_NOSCAN if MPATH_UNCHANGED is set
mwilck Nov 3, 2024
d40acc4
libmultipath: don't set dev_loss_tmo to 0 for NO_PATH_RETRY_FAIL
mwilck Nov 7, 2024
5ca938a
multipathd: fix deferred_failback_tick for reload removes
bmarzins Oct 15, 2024
444530d
multipathd: fix an unsigned int ovwerflow
mwilck Nov 13, 2024
62f5fac
libmpathutil: avoid -Wcast-function-type-mismatch error with clang 19
mwilck Nov 6, 2024
c994e84
Update NEWS.md for 0.10.1
mwilck Nov 14, 2024
84a4dcc
libmultipath: don't print error message if WATCHDOG_USEC is 0
mwilck Nov 14, 2024
b2642d2
libmultipath: reduce log level of "map X has multiple targets"
mwilck Nov 25, 2024
3dc6a89
libmultipath/foreign: fix memory leak in nvme foreign handler
bmarzins Jan 9, 2025
b3d82d8
libmultipath: add condition for enqueueing path to io error check
chenrenhui-hw Jan 10, 2025
f793a9e
Additional NEWS.md updates for 0.10.1
mwilck Jan 17, 2025
e860ef5
libmultipath: fix handling of pp->pgindex
mwilck Nov 25, 2024
8c62ec3
libmultipath: make pgcmp detect if map is missing a path group
mwilck Nov 25, 2024
1eb0719
libmultipath: trigger uevents upon map creation in domap()
mwilck Nov 26, 2024
6de0c88
multipathd: trigger uevents upon map removal in coalesce_maps()
mwilck Nov 27, 2024
70d8a40
libmultipath: Don't skip set_path_max_sectors_kb()
bmarzins Dec 5, 2024
9666a0f
libmultipath: stop static analyzer complaint in init_foreign
bmarzins Jan 23, 2025
0514280
libmultipath: be lenient in allowing the alua-based pgpolicies
bmarzins Jan 23, 2025
02797bb
Update NEWS.md for 0.10.2
mwilck Jan 24, 2025
ab323f5
GitHub Workflows: fix abi-stable.yaml for pull request
mwilck Jan 24, 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
Prev Previous commit
Next Next commit
libmultipath: make pgcmp detect if map is missing a path group
The previous algorithm didn't detect the case case where cpgp
contained a path that was not contained in pgp. Fix this.

Cherry-picked from d4b35f6
Fixes: 90773ba ("libmultipath: resolve hash collisions in pgcmp()")
Signed-off-by: Martin Wilck <[email protected]>
mwilck committed Jan 24, 2025
commit 8c62ec35d3bde07645d1751de806d7e8ba13afd3
18 changes: 18 additions & 0 deletions libmultipath/configure.c
Original file line number Diff line number Diff line change
@@ -426,23 +426,37 @@ compute_pgid(struct pathgroup * pgp)
pgp->id ^= (long)pp;
}

static void cleanup_bitfield(struct bitfield **p)
{
free(*p);
}

static int
pgcmp (struct multipath * mpp, struct multipath * cmpp)
{
int i, j;
struct pathgroup * pgp;
struct pathgroup * cpgp;
int r = 0;
struct bitfield *bf __attribute__((cleanup(cleanup_bitfield))) = NULL;

if (!mpp)
return 0;

if (VECTOR_SIZE(mpp->pg) != VECTOR_SIZE(cmpp->pg))
return 1;

bf = alloc_bitfield(VECTOR_SIZE(cmpp->pg));
if (!bf)
return 1;

vector_foreach_slot (mpp->pg, pgp, i) {
compute_pgid(pgp);

vector_foreach_slot (cmpp->pg, cpgp, j) {
if (pgp->id == cpgp->id &&
!pathcmp(pgp, cpgp)) {
set_bit_in_bitfield(j, bf);
r = 0;
break;
}
@@ -451,6 +465,10 @@ pgcmp (struct multipath * mpp, struct multipath * cmpp)
if (r)
return r;
}
vector_foreach_slot (cmpp->pg, cpgp, j) {
if (!is_bit_set_in_bitfield(j, bf))
return 1;
}
return r;
}