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.9.8 #81

Merged
merged 69 commits into from
Feb 23, 2024
Merged

multipath-tools 0.9.8 #81

merged 69 commits into from
Feb 23, 2024

Commits on Dec 18, 2023

  1. multipath-tools: update ml

    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: Benjamin Marzinski <bmarzins@redhat.com>
    xosevp authored and mwilck committed Dec 18, 2023
    Configuration menu
    Copy the full SHA
    9654a9e View commit details
    Browse the repository at this point in the history

Commits on Jan 4, 2024

  1. libmultipath: avoid temporarily enabling queueing on reload

    Instead of always enabling queueing when a map is reloaded with
    no_path_retry set to a positive number, check if the map has timed out
    in recovery mode, and only enable queueing if it has not. This saves
    multipathd from having to disable queueing on the map immediately after
    the reload.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    0235f74 View commit details
    Browse the repository at this point in the history
  2. multipathd: Make sure to disable queueing if recovery has failed.

    If a multipath device has no_path_retry set to a number and has lost all
    paths, gone into recovery mode, and timed out, it will disable
    queue_if_no_paths. After that, if the device is reloaded by multipath
    outside of multipathd, it will re-enable queuieng on the device. When
    multipathd later calls set_no_path_retry() to update the queueing state,
    it will not disable queue_if_no_paths, since the device is still in the
    recovery state, so it believes no work needs to be done. The device will
    remain in the recovery state, with retry_ticks at 0, and queueing
    enabled, even though there are no usable paths.
    
    To fix this, in set_no_path_retry(), if no_path_retry is set to a number
    and the device is queueing but it is in recovery mode and out of
    retries with no usable paths, manually disable queue_if_no_path.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    2ac5b17 View commit details
    Browse the repository at this point in the history
  3. multipathd: don't modify the multipath device on show commands

    The commands to show a multipath device are supposed to return its
    current state without updating it. Even when reset is 0,
    update_multipath() still can update the device.
    
    To fix this, split __setup_multipath() into two functions:
    refresh_multipath(), that updates the table and status, and
    setup_multipath(), which works as before but now calls
    refresh_multipath(). Make the multipathd show commands call
    refresh_multipath() instead of update_multipath().
    
    With the show commands calling refresh_multipath(), all callers of
    update_multipath() set the reset argument, so remove it and always call
    setup_multipath() from update_multipath().
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    e5debe0 View commit details
    Browse the repository at this point in the history
  4. libmultipath: keep track of queueing state in features

    Make multipathd update mpp->features when in enables or disables
    queuing. This patch handles all the cases except failed removes by
    dm_suspend_and_flush_map(), which is never called by multipathd.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    6b61124 View commit details
    Browse the repository at this point in the history
  5. multipathd: only restore queueing if it has been disabled first

    Make the restorequeueing command only do something if disablequeueing
    has first been run on the map. Also update the man page to explain
    what restorequeuing actually does.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    57509ba View commit details
    Browse the repository at this point in the history

Commits on Jan 5, 2024

  1. libmultipath: fix ANA prioritizer enablement logic

    Fixes: 3e71d8a ("multipath-tools Makefiles: create config.mk")
    
    Suggested-by: Lidong Zhong <lidong.zhong@suse.com>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    dd8ddad View commit details
    Browse the repository at this point in the history
  2. spelling: anymore

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    ce67138 View commit details
    Browse the repository at this point in the history
  3. spelling: cannot

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    41f7ccc View commit details
    Browse the repository at this point in the history
  4. spelling: case-insensitive

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    4a86437 View commit details
    Browse the repository at this point in the history
  5. spelling: case-sensitive

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    ebf8a25 View commit details
    Browse the repository at this point in the history
  6. spelling: configuration

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    94c4c86 View commit details
    Browse the repository at this point in the history
  7. spelling: correctly

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    480ebdd View commit details
    Browse the repository at this point in the history
  8. spelling: numerically

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    d384bdb View commit details
    Browse the repository at this point in the history
  9. spelling: preexisting

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    7cd881b View commit details
    Browse the repository at this point in the history
  10. spelling: than

    Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    jsoref authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    7421e88 View commit details
    Browse the repository at this point in the history
  11. multipathd: remove nopath flushing code from flush_map()

    Instead of flush_map() handling both user requested flushes and
    automatic flushes when the last path has been deleted, make
    flush_map_nopaths() handle the automatic flushes itself, since a later
    patch will change the behavior of flush_map().
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    de3ae59 View commit details
    Browse the repository at this point in the history
  12. multipathd: make flush_map() delete maps like the multipath command

    When the multipath command tries to delete a multipath device, it first
    disables queueing and then suspends the device to force the IOs to get
    flushed. Then it attempts to delete the device and any kpartx
    partitions.  multipathd, on the other hand, simply tries to delete the
    device and kpartx partitions, without disabling queueing or suspending.
    If there are no paths but there is outstanding IO, multipathd will hang
    trying to delete the last kpartx device. This is because it must be the
    last opener of the multipath device (multipath won't try to delete the
    device if it has any openers besides the kpartx devices) and the kernel
    will not allow the last opener of a block device to close until all the
    outstanding IO is flushed.  This hang can be avoided if multipathd calls
    dm_suspend_and_flush_map() like the multipath command does, instead of
    dm_flush_map().
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    9bd3482 View commit details
    Browse the repository at this point in the history
  13. multipathd: disable queueing when removing unknown maps

    Make cli_del_maps() call dm_suspend_and_flush_map() for the unknown
    multipath devices as well.
    
    After this change, all callers of cli_del_maps() set need_suspend, so
    simplify dm_flush_maps().
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    2449548 View commit details
    Browse the repository at this point in the history
  14. multipathd: simplify cli_del_map()

    cli_del_map() does a lot of unnecessary work to match the arguments of
    ev_remove_map(), of which it is the only caller.  Then ev_remove_map()
    does more unnecessary work to verify the arguments passed in. remove
    ev_remove_map() and make cli_del_map() get the mpp like the rest of
    the client handlers do.
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    a4dbdce View commit details
    Browse the repository at this point in the history
  15. libmultipath: make _dm_flush_map() return an enum

    A future patch will add an additional return code, so make this an enum
    instead of just using numbers.
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    45aa0bf View commit details
    Browse the repository at this point in the history
  16. libmultipath: make dm_remove_partmaps() a static function

    dm_remove_partmaps() is only used in devmapper.c, so make it static. It
    does need to be declared early, since remove_partmaps() and it call
    eachother.
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    92b0651 View commit details
    Browse the repository at this point in the history
  17. multipathd: always start failure replies with "fail\n"

    When multipathd interactive commands fail for certain reasons, like
    timing out or incorrect permissions, they do not reply with "fail\n".
    Currently, multipath and multipathc expect that a reply other than
    "fail\n" means success. Instead, prefix all failure replies with
    "fail\n", and adapt multipath and multipathc to return failure for any
    reply starting with "fail\n".
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    41f910d View commit details
    Browse the repository at this point in the history
  18. multipathd: print extra default reply msg for busy devices

    If removing a multipath device fails because the device is in use,
    return DM_FLUSH_BUSY from remove_functions, which causes cli_del_map()
    to return -EBUSY, which will now print extra information in
    default_reply().
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    819b811 View commit details
    Browse the repository at this point in the history
  19. multipathd: handle busy devices in cli_del_maps()

    Make cli_del_maps() return -EBUSY like cli_del_map() if it fails because
    a device is in use and it doesn't run into any other type of failures.
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    3f684c0 View commit details
    Browse the repository at this point in the history
  20. libmultipath: print error when find_mp_by_str() fails.

    None of the callers of find_mp_by_str() print any message if they fail
    because the map name is invalid. Print one in find_mp_by_str() to save
    the effort of adding it to all the callers.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    511ebe1 View commit details
    Browse the repository at this point in the history
  21. multipathd: don't open code find_mp_by_str() in client handers

    multiple client handlers simply open coded find_mp_by_str(). Just
    use the function instead.
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    7773ef0 View commit details
    Browse the repository at this point in the history
  22. multipathd: make cli_handlers check for paths by devt and dev

    Some of the client handlers checked for paths by both dev and devt, but
    not all. Also, many of the client handlers don't print anything if they
    failed to find a path. Make all the client handlers which work on path
    devices use a new function, find_path_by_str(), which will try both
    methods to find a path, and can print out an error message if none is
    found.
    
    (mwilck: find_path_by_str() tries to match device names by devt (major:minor)
    first, then by device name, whereas the open-coded lookup checked for
    the device name first. This is for consistency with other device lookup
    algorithms. It doesn't make a difference in practice, because no real devices
    have names in the major:minor format.)
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    73c4737 View commit details
    Browse the repository at this point in the history
  23. multipathd: add cli_handler reply message for missing devs

    When the cli_handlers cannot find the requested map or path, they will
    now return -ENODEV, which prints extra information in default_reply().
    
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    53b3c1f View commit details
    Browse the repository at this point in the history
  24. libdmmp: handle failures in _process_cmd

    currently, most of the callers of _process_cmd() do not gracefully
    handle the case where multipathd returns "fail\n". dmmp_flush_mpath()
    does, but it does extra work to try to figure out after the fact why the
    flush command failed. Instead, handle fail replies in _process_cmd()
    using the appropriate DMMP error codes.
    
    Cc: Gris Ge <fge@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    ce23ab2 View commit details
    Browse the repository at this point in the history
  25. multipath: get rid of unnecessary retries variable

    the -R option can just set conf->remove_retries directly. It has the
    same effect.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    7bd4aab View commit details
    Browse the repository at this point in the history
  26. multipath: Don't locally retry deletgated remove failures

    Now that multipathd is running the same code to remove devices as
    multipath, multipath doesn't need to automatically retry the remove
    failures. Instead it now repeatedly calls delegate_to_multipathd()
    to handle any retries.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    8c0c12e View commit details
    Browse the repository at this point in the history
  27. multipath: if delegation times out mark as not delegated

    If either mpath_process_cmd fails with ETIMEDOUT or the reply is
    "fail\ntimeout\n", failback to multipath local commands.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    75e05cd View commit details
    Browse the repository at this point in the history
  28. multipathd: sync features on flush_map failure corner case

    If dm_suspend_and_flush_map() disables queueing on a device, and then
    fails both to flush the device and restore queueing, the device will
    still have queue_if_no_path set in mpp->features, but not in reality.
    Fix this.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    8a38983 View commit details
    Browse the repository at this point in the history

Commits on Jan 9, 2024

  1. multipathd: init_unwinder: protect pthread_cond_wait() call with a loop

    This fixes a coverity-reported defect (413387 Indefinite wait).
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Jan 9, 2024
    Configuration menu
    Copy the full SHA
    f4d0ce4 View commit details
    Browse the repository at this point in the history
  2. libmultipath: is_uevent_busy(): check servicing_uev under lock

    This fixes a coverity-reported defect (413384 Data race condition).
    Indeed, we always set servicing_uev with the lock held, so it makes
    sense to read it with the lock held, too.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Jan 9, 2024
    Configuration menu
    Copy the full SHA
    4e47bd1 View commit details
    Browse the repository at this point in the history
  3. libmultipath: tur: protect pthread_cond_timedwait with a loop

    Defect reported by coverity (413383 Data race condition)
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Jan 9, 2024
    Configuration menu
    Copy the full SHA
    5a9476f View commit details
    Browse the repository at this point in the history

Commits on Jan 17, 2024

  1. multipathd: fix null pointer dereference in uev_update_path

    The Auto-resize code added a check that deferences pp->mpp without
    checking that it's non-NULL. Fix it.
    
    Fixes: 981b83a ("multipathd: Add auto_resize config option")
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 17, 2024
    Configuration menu
    Copy the full SHA
    fc8b102 View commit details
    Browse the repository at this point in the history
  2. multipathd: fix auto-resize configuration

    The code acted like AUTO_RESIZE_UNDEFINED didn't exist, but since
    conf->auto_resize was never set to AUTO_RESIZE_NEVER, the default was in
    fact AUTO_RESIZE_UNDEFINED, which ended up getting treated like
    AUTO_RESIZE_GROW_SHRINK. Remove AUTO_RESIZE_UNDEFINED and explicitly
    default auto_resize tp AUTO_RESIZE_NEVER.
    
    Fixes: 981b83a ("multipathd: Add auto_resize config option")
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 17, 2024
    Configuration menu
    Copy the full SHA
    56476eb View commit details
    Browse the repository at this point in the history

Commits on Jan 18, 2024

  1. multipathd: the local path change is not considered

    When update_prio is called, there is a check to see if the local path
    has a priority change. Then all the remaining paths are simliarly
    checked.
    
    Only the result of paths not matching the local path are
    considered in the calculation of 'changed'. In the case of failed paths
    becoming again available this can lead to multipath not reloading.
    
    The result will look like this:
    3624a93703c9f34490f6140a100011010 dm-2 PURE,FlashArray
    size=3.0T features='1 retain_attached_hw_handler' hwhandler='1 alua' wp=rw
    |-+- policy='service-time 0' prio=50 status=active
    | |- 1:0:0:1  sdb 8:16  active ready running
    | |- 9:0:0:1  sdc 8:32  active ready running
    | |- 11:0:0:1 sdd 8:48  active ready running
    | `- 13:0:0:1 sdh 8:112 active ready running
    `-+- policy='service-time 0' prio=50 status=enabled
      |- 8:0:0:1  sde 8:64  active ready running
      |- 10:0:0:1 sdf 8:80  active ready running
      |- 12:0:0:1 sdg 8:96  active ready running
      `- 14:0:0:1 sdi 8:128 active ready running
    
    Where the path's priorities are updated, but the path group is not
    activated.
    
    Fixes: 6ccd7b8 ("multipathd: only refresh priorities in update_prio()")
    Signed-off-by: Brian Bunker <brian@purestorage.com>
    Signed-off-by: Seamus Connor <sconnor@purestorage.com>
    Signed-off-by: Krisha Kant <krishna.kant@purestorage.com>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    brianatpurestorage authored and mwilck committed Jan 18, 2024
    Configuration menu
    Copy the full SHA
    a6424a1 View commit details
    Browse the repository at this point in the history
  2. multipathd: make update_prio static, and rename refresh_all param

    Rename the "refresh_all" parameter so that its semantic
    becomes more obvious. Commit 6ccd7b8 ("multipathd: only refresh
    priorities in update_prio()") explains it.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Jan 18, 2024
    Configuration menu
    Copy the full SHA
    7b6c874 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2024

  1. multipath-tools: fix an assignment ambiguity

    spotted by indent:
    ./kpartx/gpt.c:623: Warning:old style assignment ambiguity in "=-". Assuming "= -"
    
    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>
    xosevp authored and mwilck committed Jan 23, 2024
    Configuration menu
    Copy the full SHA
    da35556 View commit details
    Browse the repository at this point in the history

Commits on Jan 31, 2024

  1. libmultipath: fix displaying auto_resize config setting

    When 56476eb ("multipathd: fix auto-resize configuration") removed
    AUTO_RESIZE_UNDEFINED, it didn't update print_auto_resize() to print
    a value for when it was set to 0 (which is now AUTO_RESIZE_NEVER).
    
    Fixes: 56476eb ("multipathd: fix auto-resize configuration")
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 31, 2024
    Configuration menu
    Copy the full SHA
    94b8361 View commit details
    Browse the repository at this point in the history
  2. multipath-tools tests: add void parameter to functions

    This allows the tests to be compiled with -Werror=strict-prototypes
    
    Reported-by: Tomasz Kłoczko (github.com/opensvc/issues/80)
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    bmarzins authored and mwilck committed Jan 31, 2024
    Configuration menu
    Copy the full SHA
    315708b View commit details
    Browse the repository at this point in the history

Commits on Feb 1, 2024

  1. libmultipath: stop PURE FlashArray from detecting priority

    If 'detect_prio' is set to 'yes', the 'sysfs' prioritizer will be used
    instead of the 'alua' prioritizer. The 'sysfs' prioritizer can leave
    paths in the Active/Non-optimized ALUA state after a successful
    upgrade of a PURE FlashArray. Explicitly use the 'alua' prioritizer
    instead for PURE FlashArray rather than the default of 'detect_prio'
    which is 'yes'.
    
    Signed-off-by: Brian Bunker <brian@purestorage.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    brianatpurestorage authored and mwilck committed Feb 1, 2024
    Configuration menu
    Copy the full SHA
    ca62dfa View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2024

  1. multipath-tools: remove extra hyphen from CFLAGS std option

    https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-std-1
    
    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>
    xosevp authored and mwilck committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    371da67 View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2024

  1. multipathd: don't activate socket activation by default

    Socket activation will start multipathd on systems that don't have multipath
    hardware. This is often not desired.  On systems that do have multipath
    hardware, OTOH, it is highly recommended to enable multipathd.service directly
    rather than have it started via socket activation.  Therefore don't activate
    the socket by default.  multipathd still supports socket activation, so users
    who find it useful can disable multipathd.service and activate the socket.
    
    Fixes: opensvc#76
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    Cc: Sergio Durigan Junior <sergiodj@sergiodj.net>
    Cc: Chris Hofstaedtler <zeha@debian.org>
    mwilck committed Feb 10, 2024
    Configuration menu
    Copy the full SHA
    346e9ad View commit details
    Browse the repository at this point in the history
  2. multipath: udev rules: use configured $(bindir) in udev rules

    This allows us to remove the clumsy MPATH_SBIN_PATH property and
    related tests.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 10, 2024
    Configuration menu
    Copy the full SHA
    821c3ba View commit details
    Browse the repository at this point in the history

Commits on Feb 12, 2024

  1. multipath-tools: Makefile.inc: set _FILE_OFFSET_BITS=64

    Set _FILE_OFFSET_BITS=64 in order to avoid EOVERFLOW error for getdents()
    syscalls on some file systems (in particular, ext4) in emultated 32bit
    environments on 64 bit kernel, e.g. when running in qemu. This error occured
    in arm/v7 CI runs on Ubuntu runners on GitHub, which can be enabled after
    applying this change.  See
    e.g. https://sourceware.org/bugzilla/show_bug.cgi?id=23960.
    
    This change requires fixes for the unit tests: If -D_FILE_OFFSET_BITS=64 is
    set, glibc headers replace some functions with their 64bit equivalents. open()
    is replaced by open64(), etc. cmocka wrappers for these functions must have
    correct name: defining __wrap_open() has no effect for calls to open64(). Unit
    tests using the wrongly named wrapper functions will fail in non-obvious ways.
    
    Use CPP macros to substitute the correct name for affected functions. Also,
    the Makefile rule that builds the -Wl,wrap= options must parse the C preprocessor
    output to generate suitable command line parameters for the linker.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    7b217f8 View commit details
    Browse the repository at this point in the history
  2. GitHub workflows: update workflow events

    - restrict PR workflow runs to the master branch
    - run multiarch workflow for rolling distros on schedule
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    07bba3e View commit details
    Browse the repository at this point in the history
  3. GitHub workflows: update distros to run for

    - replace Fedora 37 by 39
    - multiarch: less distros, more architectures
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    a863c6d View commit details
    Browse the repository at this point in the history
  4. GitHub workflows: split multiarch workflow in rolling/stable

    Run the multipath workflow for rolling distros on schedule, too.
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    6daeb23 View commit details
    Browse the repository at this point in the history
  5. GitHub Workflows: run expensive workflows only on relevant changes

    Run the expensive multi-arch workflows only if actual source code
    has changed.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    2cbe81a View commit details
    Browse the repository at this point in the history
  6. GitHub workflows: add spell checker

    Only check end-user visible files:
     - README
     - man pages
     - public header files
     - udev rules and systemd unit files
    
    Also don't check file names, and make sure that the spelling workflow
    is only rung pushes that alter any of the files above.
    
    Add custom patterns (patterns.txt) and dictionary words (expect.txt) to
    make the spell check pass.
    
    See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    2bd2455 View commit details
    Browse the repository at this point in the history
  7. Spelling fixes found by check-spelling action

    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    281465c View commit details
    Browse the repository at this point in the history
  8. GitHub Workflows: abi: only run if C code has changed

    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    5864827 View commit details
    Browse the repository at this point in the history
  9. GitHub workflows: abi: error if reference ABI can't be downloaded

    The reference ABI (being a workflow artifact) can expire, causing
    the download to fail. In this case, the abi workflow should not report
    success. Also, add the "workflow_dispatch" event for the abi workflow,
    so that we can run it manually if a previous run failed.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    6619c26 View commit details
    Browse the repository at this point in the history
  10. GitHub workflows: run on PRs against "queue", too

    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    d6e1442 View commit details
    Browse the repository at this point in the history
  11. multipath.conf.5: fix documentation for find_multipaths

    Document "on" and "off", and mention that "yes"/"1" and "no"/"0" are
    still accepted as alias values.
    
    Suggested-by: Paul Donohue <github@PaulSD.com>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    89fa0ba View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2024

  1. libmultipath: hwtable: fix fast_io_fail for Infinibox

    The Infinibox hwtable entry had fast_io_fail and dev_loss both set to 15,
    which has the effect that fast_io_fail is switched off (dev_loss timeout
    must be higher than fast_io_fail timeout).
    
    Remove the dev_loss value, which will cause the default of 600 to be used.
    Experience shows that dev_loss_tmo values below a few minutes are seldom
    helpful.
    
    Fixes: 55da608 ("libmultipath: update INFINIDAT builtin config")
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Cc: Arnon Yaari <arnony@infinidat.com>
    Cc: Xose Vazquez Perez <xose.vazquez@gmail.com>
    Cc: Tom Abraham <tabraham@suse.com>
    Cc: Jiri Belka <jiri.belka@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 14, 2024
    Configuration menu
    Copy the full SHA
    d867d9b View commit details
    Browse the repository at this point in the history
  2. 11-dm-mpath.rules: fix list of imported properties

    Make sure we import all properties that are also imported in
    13-dm-disk.rules. Keep importing ID_FS_TYPE for now to avoid
    breakage, even if 13-dm-disk.rules does not.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 14, 2024
    Configuration menu
    Copy the full SHA
    c33de4a View commit details
    Browse the repository at this point in the history
  3. 11-dm-mpath.rules: use import logic like 13-dm-disk.rules

    We have to import the properties if either DM_NOSCAN or
    DM_DISABLE_OTHER_RULES_FLAG is set, because blkid will be skipped
    in both cases. Also, if DM_UDEV_PRIMARY_SOURCE_FLAG is not set,
    it makes no sense to try and import the properties.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 14, 2024
    Configuration menu
    Copy the full SHA
    b3582da View commit details
    Browse the repository at this point in the history
  4. 11-dm-mpath.rules: don't import DM_UDEV_DISABLE_OTHER_RULES_FLAG

    DM_UDEV_DISABLE_OTHER_RULES_FLAG is handled by 10-dm.rules, which imports
    it from db if necessary. There is no need to do this again here.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 14, 2024
    Configuration menu
    Copy the full SHA
    66f2edc View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2024

  1. 11-dm-mpath.rules: handle reloads during coldplug events

    If a map reload happens while udev is processing rules for a coldplug
    event, DM_SUSPENDED may be set if the respective test in 10-dm.rules
    happens while the device is suspened. This will cause the rules for all
    higher block device layers to be skipped. Record this situation in an udev
    property. The reload operation will trigger another "change" uevent later,
    which would normally be treated as a reload, and be ignored without
    rescanning the device. If a previous "coldplug while suspended" situation is
    detected, perform a full device rescan instead.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    02bbc17 View commit details
    Browse the repository at this point in the history
  2. 11-dm-mpath.rules: don't save DM_UDEV_DISABLE_OTHER_RULES_FLAG_OLD

    The current rules overwrite DM_UDEV_DISABLE_OTHER_RULES_FLAG and save its
    value in DM_UDEV_DISABLE_OTHER_RULES_FLAG_OLD if MPATH_DEVICE_READY changes
    from 1 to 0, and restore DM_UDEV_DISABLE_OTHER_RULES_FLAG from
    DM_UDEV_DISABLE_OTHER_RULES_FLAG_OLD when MPATH_DEVICE_READY changes back from
    0 to 1.
    
    This is wrong for multiple reasons. For "spurious" events, 10-dm.rules will
    read DM_UDEV_DISABLE_OTHER_RULES_FLAG from the udev db and obtain the value
    saved by 11-dm-mpath.rules rather than it's own saved value, which confuses
    the logic in 10-dm.rules. 10-dm.rules sets the flag if either DISK_RO==1 or
    DM_SUSPENDED==1, and never clears it (it can only be cleared by a new genuine
    libdm event that doesn't have DM_UDEV_DISABLE_OTHER_RULES_FLAG set, while the
    device is not suspended). lvm commands may set the flag, too, but AFAICS this
    is only done for certain types of logical volumes, not for multipath maps.
    
    If a previously suspended device is resumed, DM_UDEV_DISABLE_OTHER_RULES_FLAG
    would be cleared, and it would be wrong for 11-dm-mpath.rules to overwrite it
    with a previuosly saved value. Likewise, if a uevent arrives for a suspended
    map, and MPATH_DEVICE_READY happens to switch from 0 to 1, it would be wrong
    to clear DM_UDEV_DISABLE_OTHER_RULES_FLAG by setting it to a previously saved
    value.
    
    We need to set DM_UDEV_DISABLE_OTHER_RULES_FLAG=1 to prevent follow-up rules
    from attempting I/O on the device. But don't try to save and restore
    DM_UDEV_DISABLE_OTHER_RULES_FLAG between uevents. Rather, reset
    DM_UDEV_DISABLE_OTHER_RULES_FLAG to the value we got from 10-dm.rules in a
    late rule. I chose "99-z-" for this rule's prefix to make sure it runs
    after 99-systemd.rules.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    35640f2 View commit details
    Browse the repository at this point in the history
  3. 11-dm-mpath.rules: clear DM_DISABLE_OTHER_RULES_FLAG for coldplug events

    For all "spurious" events, which includes coldplug events,
    DM_DISABLE_OTHER_RULES_FLAG will be read from the udev DB in
    10-dm.rules. Thus if a previous event saw the device in suspended
    state, the flag will be set even if the device has meanwhile
    resumed. Reset the flag if none of the conditions hold that
    would cause it to be set in a genuine uevent in 10-dm.rules.
    
    It would be cleaner to do this in 10-dm.rules directly, but it
    cannot be done easily, because the flag can also have an origin
    inside lvm itself; lvm sets it for various kinds of logical
    volumes. For generic (non-LVM) dm devices, the flag is only set
    in 10-dm.rules though, so doing this is safe for multipath.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    87cd201 View commit details
    Browse the repository at this point in the history
  4. 11-dm-mpath.rules: Don't force activation while device is suspended

    If paths become available while the device is suspended, don't
    activate. Another uevent will arrive when the device is resumed.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
    mwilck committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    b22c273 View commit details
    Browse the repository at this point in the history
  5. libmultipath: bump version to 0.9.8

    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    7243134 View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2024

  1. multipath-tools: added NEWS.md

    This file sums up the content of the GitHub PRs since 0.9.0, giving
    a high-level overview of the changes in the past releases. I thought it
    might be useful for users and/or distribution maintainers.
    
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    mwilck committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ff6fbca View commit details
    Browse the repository at this point in the history