multipath-tools 0.12.0#119
Merged
Merged
Conversation
A future patch will make use of cleanup_udev_enumerate_ptr() and cleanup_udev_device_ptr(). Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Muneendra Kumar <muneendra.kumar@broadcom.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
When a scsi path device is set to marginal, it updates the rport state. Do this for NVMe devices as well. Unlike with scsi devices, setting the rport state to marginal will not directly change the nvme driver behavior. However it will allow users to see the rports associated with their Marginal paths. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Acked-by: Muneendra Kumar <muneendra.kumar@broadcom.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
pp->pgindex is set in disassemble_map() when a map is parsed. There are various possiblities for this index to become invalid. pp->pgindex is only used in enable_group() and followover_should_fallback(), and both callers take no action if it is 0, which is the right thing to do if we don't know the path's pathgroup. Make sure pp->pgindex is reset to 0 in various places: - when it's orphaned, - before (re)grouping paths, - when we detect a bad mpp assignment in update_pathvec_from_dm(). - when a pathgroup is deleted in update_pathvec_from_dm(). In this case, pgindex needs to be invalidated for all paths in all pathgroups after the one that was deleted. The hunk in group_paths is mostly redundant with the hunk in free_pgvec(), but because we're looping over pg->paths in the former and over pg->pgp in the latter, I think it's better too play safe. Fixes: 99db1bd ("[multipathd] re-enable disabled PG when at least one path is up") Fixes: opensvc#105 Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
A non-dynamically allocated bitfield doesn't have to have static scope, it can also be a local variable on the stack. Change the macro such that it can also be used for the latter case. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
... as it has only one caller, and make it static. No functional changes. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
pgp->id is not only calculated with a weak XOR hash, it can also get wrong if any path regrouping occurs. As it's not a big gain performance-wise, just drop pgp->id and compare path groups directly. The previous algorithm didn't detect the case case where cpgp contained a path that was not contained in pgp. Fix this, too, by comparing the number of paths in the path groups and making sure that each pg of mpp is matched by exactly one pg of cmpp. Fixes: 90773ba ("libmultipath: resolve hash collisions in pgcmp()") Suggested-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If map creation succeeds, previously not multipathed devices are now multipathed. udev may not have noticed this yet, thus trigger path uevents to make it aware of the situation. Likewise, if creating a map fails, the paths in question were likely considered multipath members by udev, too. They will now be marked as failed, so trigger an event in this situation as well. Fixes: opensvc#103 Suggested-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
... if a map has been flushed. In this case, we know that the the paths haven't been multipathed by coalesce_paths() because of the current configuration (failure to create the map can't be the reason if the map exists in coalesce_maps()). Make sure udev sees the paths which have been released from the map as non-multipath. Note that this is the only case where maps are flushed where it is correct to trigger paths uevents. In other cases, e.g. after a "remove map" CLI command, the configuration is unchanged and if we triggered an uevent, the map would be re-created by multipathd when the uevent arrived. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If a multipath device already has need_reload set when a path is adopted, it won't call set_path_max_sectors_kb() because of short-circuit evaluation. This isn't what's intended. Fixes: e5e20c7 ("libmultipath: set max_sectors_kb in adopt_paths()") Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
update_pathvec_from_dm() may set mpp->need_reload if it finds inconsistent settings. In this case, the map should be reloaded, but so far we don't do this reliably. Add a call to reload_and_sync_map() when updating the maps at the end of a loop in checkerloop(). Suggested-by: Martin Wilck <mwilck@suse.com> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
reload_map() was calling select_action() with force_reload set. Since mpp will always be a member of vecs->mpvec when reload_map() is called, when cmpp and cmpp_by_name are looked up in select_action(), they will just point to mpp. This means that none of the early checks related to cmpp in select_action() will do anything, and the action will always end up being ACT_RELOAD. So we can just set ACT_RELOAD in reload_map() and skip the work. Additionally, calling select_action() with force_reload set will set force_udev_reload. This isn't necessary for any of the reload_map() callers, and will just cause udev to do extra work. I did set force_udev_reload in cli_reload(), so that it works like calling "multipath -r", which does force udev to rescan the device. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
Rather, return a bool indicating whether checkerloop() should call reload_and_sync_map(). Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If the map is inaccessible, update_multipath_strings() will fail. There is no need for the extra call to dm_get_info(). Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Rather than calling sync_mpp early in the checkerloop and tracking map synchronization with synced_count, call sync_mpp() in the CHECKER_FINISHED state, if either at least one path of the map has been checked in the current iteration, or the sync tick has expired. This avoids potentially deleting paths from the pathvec through the do_sync_mpp() -> update_multipath_strings() -> sync_paths -> check_removed_paths() call chain while we're iterating over the pathvec. Also, the time gap between obtaining path states and syncing the state with the kernel is smaller this way. Suggested-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
After reading the kernel device-mapper table, update_pathvec_from_dm() sets the mpp->need_reload flag if an inconsistent state was found (often a path with wrong WWID). We expect reload_and_sync_map() to fix this situation. If this is not the case (need_reload still set after map reloading), it's most probably a bug. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
This simplifies the lock-taking logic and prepares the following patch. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Move the code that handles the checker_state == CHECKER_FINISHED state into a separate function for better readability. Subsequent patches will add code to this function. Replace the "&& reload_and_sync_map()" conditional by a subordinate if statement, as this expresses the logic of the code better. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
The various "tick" functions will only be called after CHECKER_FINISHED is reached. So we might as well move them into the respective code block into checker_finished(). This way don't have to drop and re-take he lock when all paths have been checked. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
…ick() Instead, move the call inside the existing loop over vecs->mpvec and call reload_and_sync_map() from checker_finished(). Note that we can't simply put the call deferred_failback_tick() in the "if" condition, because we need to adjust the ticks even if update_mpp_prio() returns true. For consistency, use separate bool variables for each condition that would necessitate a reload. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Instead, check for missing uevents in the existing mpvec loop. Note that if the uevent tick expires, we need to call update_map() rather than reload_and_sync_map(), because the paths have not been added to the multipath (see wait_for_udev handling ev_add_path()). The set of actions taken by update_map() is a superset of those in reload_and_sync_map(), thus we don't need to call the latter if we've already called the former. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Instead, move the call into the existing mpvec loop and call update_map() from checker_finished(). Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
While we're waiting for active paths to appear when ghost delay is enabled, we do add new paths to multipathd's internal mpp data structure as they are discovered (unlike missing uevent case, where we orphan the paths instead). When the ghost_delay timer expires, it should be sufficient to call the more light-weight reload_and_sync_map() instead of update_map(). Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If update_multipath_strings() returns DMP_NOT_FOUND for a map that we are tracking in the checker, the map must have been removed by an external entity. Remove it. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
This function duplicates functionality that we now have in the checker_finished() code path. Remove it. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
multipathd calls enable_group() from update_path_state() if a path in a previously disabled pathgroup is reinstated. This call may be mistakenly skipped if the path group status wasn't up-to-date while update_path_state() was executed. This can happen after applying the previous patch "multipathd: sync maps at end of checkerloop", if the kernel has disabled the group during the last checker interval. Therefore add another check in checker_finished() after calling sync_mpp(), and enable groups if necessary. This step can be skipped if the map was reloaded, because after a reload, all pathgroups are enabled by default. Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
In checker_finished(), if we are still waiting for the initial uevent, we should instead set wait_for_udev to UDEV_WAIT_RELOAD, so that we trigger a reload when we get the uevent. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
There is no vendor_id/product_id for NVMe devices. Just "model". and typically it's a combination of both. "NVME" is a static tag, added in: https://github.com/opensvc/multipath-tools/blob/de16cf82c5263fc148118be56ebf44c8f0ee60b8/libmultipath/discovery.c#L1635 Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM_DEVEL-ML <dm-devel@lists.linux.dev> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
- use "VSP" for the whole family, too many variants - identify Quantum models Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM-DEVEL-ML <dm-devel@lists.linux.dev> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
Info from #11-12 pages: https://docs.hitachivantara.com/api/khub/documents/E1h3w1EJLDYuE5Yde3tQfw/content?Ft-Calling-App=ft%2Fturnkey-portal&Ft-Calling-App-Version=5.1.38# Cc: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com> Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM-DEVEL-ML <dm-devel@lists.linux.dev> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
Config on page opensvc#30: https://www.seagate.com/content/dam/seagate/pdfs/content/seagate/us/en/manuals/software/lyve-mobile-array-cli/lyve-mobile-array-cli-en_US.pdf Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM_DEVEL-ML <dm-devel@lists.linux.dev> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
New recommended values for SLES-15, RHEL-8, and Ubuntu-22, or above: https://lh3.googleusercontent.com/pw/AP1GczMchJ6bcMIohp_g3Ik5DS6BZv_IW0iwaEXf968sJsR8fr_p3mR4ThRpmHpZE_VMnlcV8j0uuuI2kz-eoqekRCUBxyTBKS7n-4WFMsUiecq8i7nIjEuhfZFrV54DBQLDzGt6ofakAAF1L-ZcAuCWW18=w0-h0 device { vendor "NFINIDAT" product "InfiniBox" path_grouping_policy "group_by_prio" path_checker "tur" features 0 hardware_handler "1 alua" prio "alua" rr_weight "priorities" no_path_retry "queue" rr_min_io 1 rr_min_io_rq 1 flush_on_last_del "yes" fast_io_fail_tmo 15 dev_loss_tmo "infinity" path_selector "service-time 0" failback "immediate" detect_prio "no" user_friendly_names "no" } Cc: Martin Wilck <mwilck@suse.com> Cc: Benjamin Marzinski <bmarzins@redhat.com> Cc: Christophe Varoqui <christophe.varoqui@opensvc.com> Cc: DM_DEVEL-ML <dm-devel@lists.linux.dev> Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Signed-off-by: Martin Wilck <mwilck@suse.com>
Reviewed-by: Martin Wilck <mwilck@suse.com> (cherry picked from commit 6781ae9)
Signed-off-by: Martin Wilck <mwilck@suse.com>
xosevp
approved these changes
Sep 2, 2025
xosevp
left a comment
Collaborator
There was a problem hiding this comment.
It's fine by me.
Thanks.
Collaborator
Author
|
In case you're wondering, I'm waiting for a final coverity scan to finish. The coverity scan job is still sitting in the queue. |
Coverity scan defect #488155. Fixes: d041258 ("libmultipath: snprint_devices(): use udev_enumerate") Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Only a negative return value from udev_enumerate_add_match_subsystem() indicates an error. Fixes: 7b47762 ("libmultipath: nvme: fix path detection for kernel 4.16") Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
If an error occurs, snprint_devices() should return a negative error code, not 1. Fixes: d041258 ("libmultipath: snprint_devices(): use udev_enumerate") Suggested-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
Collaborator
Author
|
I added the fixes from the late Coverity code check, and one more fix that @bmarzins had pointed out. For simplicity, I did not rebase the code but just pushed the fixes on top. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
multipath-tools 0.12.0, 2025/08
User-visible changes
@/org/kernel/linux/storage/multipathd), multipathd now also listenson a unix pathname socket (default:
/run/multipathd.socket). This makes itpossible to communicate with multipathd from a container in which the
named socket is bind-mounted. See multipathd.8 for details.
Fixes #111.
Commits f421a43 ff.
port_stateof Fibre Channel remote ports to"marginal" for NVMe devices, too. Note that unlike SCSI, this will not
directly affect the kernel NVMe driver's behavior. Marginal state will
affect path grouping on multipathd's part, though.
This change is only effective if dm-multipath is used for NVMe devices
(i.e. the kernel parameter
nvme_core.multipath=Nis in use).Commit 30fc3e9.
uevents when path devices are added to or removed from multipath maps,
or when
multipathd reconfigureis executed after changing blacklistdirectives in
multipath.conf. Both sockets can also be received fromsystemd if socket activation is used (not recommended for multipathd).
Fixes #103. Commits 98b3a7b, ad3ea47, d9c6133, 272808c f.
command) and that couldn't be reloaded by multipathd used to be ignored
by multipathd. multipathd will now monitor them. If some paths were
offline while the map was created, multipathd will now add them to the
map when they go online again. Commit 9038d25 ff.
path on another one. Commit d1106c8.
Other major changes
maps need to be reloaded are now handled more cleanly in the new
function
checker_finished(). Map deletions don't happen any moreinside the checker loop, simplifying the code flow.
checker_finished()now also takes care of all actions that multipath was doing in scheduled
intervals ("ticks"). Commit 0ff1191 ff.
Bug fixes
if an invalid path device was removed from a map.
Fixes #105.
This issue existed since 0.4.5. Commit cd912cf.
inconsistent or wrong kernel state (e.g. missing or falsely mapped path
device). Wrongly mapped paths will be unmapped and released to the system.
Fixes another issue reported in
#105.
Commit 340e74d.
may be wrong if
path_grouping_policyis set togroup_by_serialorgroup_by_tpg, even if the path comes online later.Fixes #108.
This problem has existed since 0.4.5. Commits c20fb70, 70c1724.
Commit 439044b
group_by_tpgmight be disabled if one or morepaths were offline during initial configuration.
This problem exists since 0.9.6. Commit b47a577.
max_sectors_kbmight not be set on a path device thatwas being added to a multipath map. This problem was introduced in 0.9.9.
Commit f5c0c4b.
This (minor) problem was introduced in 0.5.0. Commit d4b35f6.
which was introduced in 0.8.8. Commit ee062a0.
polling_interval. In certain cases,this wouldn't happen, because the check interval wasn't reset by multipathd.
Commit 21c21bf.
reservation held by another node. Fix it. Commit 8d5f4a5.
the reinstated paths were immediately failed again by multipathd.
Commit f1c5200.
Commit 9b1d721.
Commit 1757dbb.
since 0.4.9. Commit b7fd205.
since 0.4.9. Commit 2480d57.
0.4.9. Commit 01996d5.
Problem existed since 0.8.5. Commits 4f0f43f, 5c59d5d.
Commit 66408f1.
Other changes
detect device properties. Commits 6b91bfb ff.
Shortlog
@bmarzins (35):
libmultipath: export udev pthread cleanup functions
multipathd: set rport port_state to marginal for NVMe devices
libmultipath: Don't skip set_path_max_sectors_kb()
multipathd: reload maps in checkerloop() if necessary.
multipathd: Don't call select_action in reload_map
multipathd: use symbolic values for wait_for_udev
multipathd: don't reload the map when waiting for udev
libmultipath: don't set need_reload in adopt_paths
libmultipath: remove need_reload check from select_action
libmultipath: drop return value from update_pathvec_from_dm
libmultipath: Dont scan pointless sysfs parents
libmultipath: move sysfs checks out of scsi_ioctl_pathinfo
libmultipath: rename DI_SERIAL to DI_IOCTL
libmultipath: retry DI_IOCTL functions if they were skipped
libmultipath: set need_reload when pp->serial gets set
libmultipath: set need_reload when the tpg_id gets set
libmultipath: stop static analyzer complaint in init_foreign
libmultipath: be lenient in allowing the alua-based pgpolicies
multipath-tools: fix compilation with latest userspace-rcu code
libmultipath: include urcu.h before urcu/atomic.h
libmultipath: remove buggy reinstate_paths function
multipathd: add multipathd-queueing.service to gitignore
multipath: clean up find_multipaths documentation
multipathd: Add multipathd man page section about sockets
multipathd: monitor new multipath dev even if we can't update it
libmultipath: add helper function check_path_wwid_change
multipathd: re-add paths skipped because they were offline
multipathd: don't update paths in INIT_MISSING_UDEV
libmultipath: handle blacklisted paths on map_discovery
multipathd: disable queueing on invalid multipath devices
multipathd: always reset checker interval for failed paths
libmpathpersist: retry commands on other paths in mpath_prout_common
libmpathpersist: check released key against the reservation key
libmultipath: fix crash in print_foreign_topology
libmultipath: fix error return in snprint_devices()
@DimStar77 (1):
tests: fix tests when built against cmocka 1.1.8 or newer
Kéléfa Sané (1):
libdmmp/Makefile: Fix KBUILD_BUILD_TIMESTAMP usage
@mwilck (57):
libmultipath: fix handling of pp->pgindex
libmpathutil: change STATIC_BITFIELD to BITFIELD
libmpathutil: add cleanup_bitfield()
libmultipath: move pathcmp() to configure.c
libmultipath: re-implement pgcmp without the pathgroup id
libmultipath: trigger uevents upon map creation in domap()
multipathd: trigger uevents upon map removal in coalesce_maps()
multipathd: improve a log message in coalesce_maps()
multipathd: don't reload map in update_mpp_prio()
multipathd: remove dm_get_info() call from refresh_multipath()
multipathd: sync maps at end of checkerloop
multipathd: emit a warning if a map remains inconsistent after reload
multipathd: move yielding for waiters to start of checkerloop
multipathd: add checker_finished()
multipathd: move "tick" calls into checker_finished()
multipathd: don't call reload_and_sync_map() from deferred_failback_tick()
multipathd: move retry_count_tick() into existing mpvec loop
multipathd: don't call update_map() from missing_uev_wait_tick()
multipathd: don't call udpate_map() from ghost_delay_tick()
multipathd: only call reload_and_sync_map() when ghost delay expires
multipathd: remove non-existent maps in checkerloop
multipathd: remove mpvec_garbage_collector()
multipathd: enable pathgroups in checker_finished()
libmultipath: bump ABI version to 29.0.0
multipath-tools: update NEWS.md
multipathd: trigger uevents for blacklisted paths in reconfigure
multipath-tools: move DEFAULT_SOCKET definition into Makefile.inc
multipath-tools: add helper mpath_fill_sockaddr__()
libmpathutil: add support for Unix pathname sockets
libmpathutil: move systemd_listen_fds() support into multipathd
multipathd: make uxsock_listen() take a pointer to fd
multipathd: allow receiving two socket fds from systemd
multipathd: listen on pathname and abstract socket by default
libmpathcmd: try both abstract and pathname sockets
libmpathcmd: honor MULTIPATH_SOCKET_NAME environment variable
multipathd: honor MULTIPATH_SOCKET_NAME environment variable
multipathd: fix hang during shutdown with queuing maps
GitHub workflows: use docker/setup-qemu-action@v2 instead of dbhi/qus
GitHub workflows: use docker/setup-qemu-action@v2 in foreign.yaml
libdmmp: update time stamp of man pages
GitHub workflows: retire Ubuntu 20.04
kpartx_id: fix shellcheck reported errors
kpartx: fix file descriptor leak
libmpathpersist: fix memory leak in mpath_prout_rel()
libmpathutil: vector_del_slot: modify v->allocated if realloc fails
libmultipath: fix undefined behavior in 31-bit shift
libmultipath: prioritizers/iet: fix possible NULL dereference
libmpathutil: remove vector_repack()
libmpathutil: remove VECTOR_DEFAULT_SIZE macro
multipathd: cli_reinstate(): avoid reinstated paths being failed again
Update NEWS.md
GitHub workflows: Add commit SHA pattern to spelling action
GitHub workflows: enable Debian trixie and Fedora 42
libmultipath: bump version to 0.12.0
libmultipath: fix missing return value check in snprint_devices()
libmultipath/foreign/nvme: fix return value check in get_ctrl_blkdev()
Update NEWS.md with info about latest fixes
@xosevp (17):
multipath-tools: delete unreachable maintainers
multipath-tools: identify more arrays under IBM/2145 ID
multipath-tools: add Quantum devices to hwtable
multipath-tools: replace dead url
multipath-tools: hwtable: remove .pgfailback from QUANTUM/F1
multipath-tools: hwtable: change AStor/NeoSapphire to work also with ALUA
multipath-tools: update Path Selector descriptions on the man page
multipath-tools: remove extra hyphen from GCC std option
multipath-tools: replace FSF licences boilerplate with a SPDX-License-Identifier
multipath-tools: fix default blacklist of s390 devices
multipath-tools: fix licence identifier
multipath-tools: add a comment about DASD arrays vendors
multipath-tools: standardize NVME vendor_id in hwtable
multipath-tools: fix hwtable comments
multipath-tools: add HITACHI VSP One SDS Block to hwtable
multipath-tools: add Seagate Lyve to hwtable
multipath-tools: update NFINIDAT/InfiniBox config in hwtable