[dm-devel] [PATCH v2 00/12] Misc Multipath patches
Benjamin Marzinski
bmarzins at redhat.com
Fri Mar 8 23:11:53 UTC 2019
The series is a mix of resends an new patches.
Patches 0001-0005 are simply resends of patches I've submitted earlier,
with no changes other that adding Reviewed-by's where appropriate.
Patches 0006-0009 are the result of running into some bugs during
firmare updates on an array.
Changes in v2:
0007: simply fixes the issue with multipathd not resetting the wwid
when get_uid() fails, and makes scsi_uid_fallback return the
correct value, when it is still waiting for the retriggers
to max out. The Changes that Martin suggested are dealt with
in patch 0012
0010: This patch adds some missing options to the multipath.conf(5)
man page, including "user_friendly_names" like Martin metioned
in his earlier review of patch 0001.
0011: This patch adds a fallback method for nvme devices, to grab the
wwid directly from sysfs.
0012: I kept this patch seperate from 0007, because I'm not sure that
it is the right thing to do. First, it's not very hard to have
get_uid() fail. For a scsi device, all that needs to happen is
for a change event to occur while the path is down and cannot be
opened. scsi_id will fail, and ID_SERIAL will not be set. This
seems far more likely than a device changing wwids because it
switched LUNs.
If we fail the device for getting a blank wwid, we then have to
get the new wwid before we can decide what needs to be done to
the path. There are two options. One is to trigger more
uevents, so that multipathd gets a uevent with the updated
uid_attribute. This assumes that the original problem wasn't
udev timing out because it was overloaded. If that was the
problem, adding more uevents just makes things work. Even
still, this means that once the new wwid is available, we have
to run check_path, then wait for the uevent, and then run
check_path again before we can restore the path. For these
reasons, I didn't go down this route.
The other way to get the new wwid is to run the fallback
methods. This doesn't require multipathd to get a new uevent
with the updated wwid, but it does do something that worries
me. When we run the fallback methods, we clear uid_attribute
for the path. We do this because, presumably, we can't be
certain that the fallback method and the uid_attribute method
will return the same wwid. If this is really a possiblity
then the fallback methods aren't any help at all. I don't
know of any cases where this is true, which is why I'm
submitting the patch. But I still not sure that its not
better simply to assume that if get_uid() fails, that it
did so for some mundane reason, and simply keep the old
wwid.
Benjamin Marzinski (12):
libmultipath: disable user_friendly_names for NetApp
libmultipath: handle existing paths in marginal_path enqueue
multipathd: cleanup marginal paths checking timers
libmultipath: fix marginal paths queueing errors
libmultipath: fix marginal_paths nr_active check
multipathd: Fix miscounting active paths
multipathd: ignore failed wwid recheck
libmutipath: continue to use old state on PATH_PENDING
multipathd: use update_path_groups instead of reload_map
multipath.conf: add missing options to man page
libmultipath: add get_uid fallback code for NVMe devices
multipathd: change failed get_uid handling
libmultipath/discovery.c | 73 +++++++++++++++++++++++++-------------
libmultipath/hwtable.c | 1 +
libmultipath/io_err_stat.c | 71 +++++++++++++++---------------------
libmultipath/io_err_stat.h | 2 +-
libmultipath/structs.h | 6 ++++
multipath/main.c | 2 +-
multipath/multipath.conf.5 | 8 +++++
multipathd/cli_handlers.c | 2 +-
multipathd/main.c | 50 ++++++++++++++++++--------
multipathd/main.h | 2 ++
10 files changed, 133 insertions(+), 84 deletions(-)
--
2.17.2
More information about the dm-devel
mailing list