[dm-devel] [PATCH 8/9] libmultipath: check_rdac(): pre-check in hwtable

Martin Wilck mwilck at suse.com
Fri Mar 15 16:11:54 UTC 2019


Currently check_rdac() always runs an SG_IO for VPD 0xc9 to check
if the storage supports RDAC. This is an extra IO, and may cause
annoying error messages on the storage side for non-RDAC arrays.
Do the RDAC override only for arrays that have legacy configuration
to use the rdac checker.

Cc: Steve.Schremmer at netapp.com
Cc: NetApp RDAC team <ng-eseries-upstream-maintainers at netapp.com>
Cc: Hannes Reinecke <hare at suse.com>
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
 libmultipath/propsel.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
index d5fbd94e..2eb6fc2a 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
@@ -470,9 +470,17 @@ check_rdac(struct path * pp)
 {
 	int len;
 	char buff[44];
+	const char *checker_name = NULL;
+	/* dummy, for do_set_from_hwe */
+	const char *origin __attribute__((unused));
 
 	if (pp->bus != SYSFS_BUS_SCSI)
 		return 0;
+	/* Avoid ioctl if this is likely not an RDAC array */
+	do_set_from_hwe(checker_name, pp, checker_name, NULL);
+out:    /* for do_set_from_hwe */
+	if (!checker_name || strcmp(checker_name, RDAC))
+		return 0;
 	len = get_vpd_sgio(pp->fd, 0xC9, buff, 44);
 	if (len <= 0)
 		return 0;
-- 
2.21.0




More information about the dm-devel mailing list