On 3/15/19 6:19 PM, Martin Wilck wrote:
This can avoid IO while configuring the path prioritizer.
The alua prioritizer avoids reading from sysfs for a reason
(see commit 7e2f46d3), but this applies only to RTPG / STPG,
not to INQUIRY calls.
Cc: [email protected]
Cc: NetApp RDAC team <[email protected]>
Cc: Hannes Reinecke <[email protected]>
Signed-off-by: Martin Wilck <[email protected]>
---
libmultipath/prioritizers/alua_rtpg.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/libmultipath/prioritizers/alua_rtpg.c
b/libmultipath/prioritizers/alua_rtpg.c
index d9215a88..271a019d 100644
--- a/libmultipath/prioritizers/alua_rtpg.c
+++ b/libmultipath/prioritizers/alua_rtpg.c
@@ -188,6 +188,23 @@ retry:
int do_inquiry(const struct path *pp, int evpd, unsigned int codepage,
void *resp, int resplen, unsigned int timeout)
{
+ struct udev_device *ud;
+
+ ud = udev_device_get_parent_with_subsystem_devtype(pp->udev, "scsi",
+ "scsi_device");
+ if (ud != NULL) {
+ int rc;
+
+ if (!evpd)
+ rc = sysfs_get_inquiry(ud, resp, resplen);
+ else
+ rc = sysfs_get_vpd(ud, codepage, resp, resplen);
+
+ if (rc >= 0) {
+ PRINT_HEX((unsigned char *) resp, resplen);
+ return 0;
+ }
+ }
return do_inquiry_sg(pp->fd, evpd, codepage, resp, resplen, timeout);
}
Don't you need to do a udev_device_put() or somesuch?
Other than that:
Reviewed-by: Hannes Reinecke <[email protected]>
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
[email protected] +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel