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