[dm-devel] [PATCH 4/5] libmultipath: only read 0xc9 vpd page for devices with rdac checker

Benjamin Marzinski bmarzins at redhat.com
Fri Oct 23 21:15:07 UTC 2020


Only rdac arrays support 0xC9 vpd page inquiries. All other arrays will
return a failure. Since all rdac arrays in the the built-in device
configuration explicitly set the RDAC path checker, and almost all other
scsi arrays do not set a path checker, it makes sense to only do the
rdac inquiry when detecting array capabilities if the array's path
checker is explicitly set to rdac.

Multipath was doing the check if either the path checker was set to
rdac, or no path checker was set.  This means that for almost all
non-rdac arrays, multipath was issuing a bad inquiry. This was annoying
users.

Cc: Steve Schremmer <sschremm at netapp.com>
Cc: NetApp RDAC team <ng-eseries-upstream-maintainers at netapp.com>
Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
---
 libmultipath/propsel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
index fa4ac5d9..90a77d77 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
@@ -501,7 +501,7 @@ check_rdac(struct path * pp)
 	if (pp->bus != SYSFS_BUS_SCSI)
 		return 0;
 	/* Avoid ioctl if this is likely not an RDAC array */
-	if (__do_set_from_hwe(checker_name, pp, checker_name) &&
+	if (!__do_set_from_hwe(checker_name, pp, checker_name) ||
 	    strcmp(checker_name, RDAC))
 		return 0;
 	len = get_vpd_sgio(pp->fd, 0xC9, 0, buff, 44);
-- 
2.17.2




More information about the dm-devel mailing list