I ran into an issue where multipathd wasn't tracking a multipath
device that was created by the multipath command. It turns out that if
multipathd fully initialized a path device, and that device later
goes offline and then a multipath device that could use that path is
created by multipath, multipathd will attempt to reload the device
to use the offline path, which will fail. This will cause it to not
track the multipath device at all.
The first patch fixes this. The second patch is prep work. The third
patch allows mutipathd to track these offline paths that should belong
to a device, and add them to device once they come back online. The
third fourth is just a cleanup.

changes from v2
- 0002: New patch to avoid duplicating the code to determine if we
        can recheck the paths wwid.
- 0003: Always recheck WWID when path comes back online if capable
        (suggested by Martin Wilck). Fixed holdover code from v1 to
        set pp->initialized = INIT_OK when the path came back online.
        Fixed typo in documentation.

changes from v1
- 0002: Switch from tracking this state with pp->initialized to a new
        variable, as suggested by Martin Wilck. To make is so that
        multipathd can still show paths in this state without adding
        a new wildcard for it, add [offline] as a possible output for
        the %m (multipath device) path wildcard, for paths that
        couldn't be added to a multipath device because they are
        offline. Also constify a function parameter and add an
        explanitory comment as suggested by Martin.

Benjamin Marzinski (4):
  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/discovery.c          | 12 ++++++-
 libmultipath/discovery.h          |  2 +-
 libmultipath/libmultipath.version |  5 +++
 libmultipath/print.c              |  5 ++-
 libmultipath/propsel.c            |  4 +--
 libmultipath/structs.h            |  1 +
 libmultipath/structs_vec.c        |  5 +++
 multipathd/main.c                 | 59 +++++++++++++++++++++++++++++--
 multipathd/multipathd.8.in        |  5 +--
 9 files changed, 87 insertions(+), 11 deletions(-)

-- 
2.48.1


Reply via email to