On Tue, 2019-11-19 at 16:29 -0600, Benjamin Marzinski wrote: > On Fri, Nov 15, 2019 at 02:41:54PM +0000, Martin Wilck wrote: > > From: Martin Wilck <mwilck@xxxxxxxx> > > > > If a single path was offline when detect_alua() was called, > > multipathd would assume ALUA was generally unsupported. > > > > Fix that by assuming that if at least one path has ALUA support and > > no path explicitly does not have it, ALUA is supported. > > > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > > --- > > libmultipath/discovery.c | 22 +++++++++++++++++++++- > > libmultipath/propsel.c | 20 +++++++++++++++++--- > > 2 files changed, 38 insertions(+), 4 deletions(-) > > > > diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c > > index 4288c9fd..5f41dcb7 100644 > > --- a/libmultipath/discovery.c > > +++ b/libmultipath/discovery.c > > @@ -871,6 +871,10 @@ get_serial (char * str, int maxlen, int fd) > > return 1; > > } > > > > /* > > + * Side effect: sets pp->tpgs if it could be determined. > > + * If ALUA calls fail because paths are unreachable, pp->tpgs > > remains unchanged. > > + */ > > static void > > detect_alua(struct path * pp) > > { > > @@ -881,12 +885,28 @@ detect_alua(struct path * pp) > > if (sysfs_get_timeout(pp, &timeout) <= 0) > > timeout = DEF_TIMEOUT; > > > > - if ((tpgs = get_target_port_group_support(pp, timeout)) <= 0) { > > + tpgs = get_target_port_group_support(pp, timeout); > > + if (tpgs == -RTPG_INQUIRY_FAILED) > > + return; > > + else if (tpgs <= 0) { > > pp->tpgs = TPGS_NONE; > > return; > > } > > + > > + if (pp->fd == -1 || pp->offline) > > + return; > > + > > This is just a nitpick, but won't tpgs already be > -RTPG_INQUIRY_FAILED > if pp->fd == -1. This check makes more sense before > get_target_port_group_support(). Not really, because get_target_port_group_support() normally obtains INQUIRY data from sysfs, which can return something reasonable even if fd == -1 (e.g. if the path is temporarily offline). In particular, it could indicate that the device has no TPGS support. That's why I call it first. Regards, Martin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel