libmultipath: get_vpd_sgio: support VPD 0xc9
authorMartin Wilck <mwilck@suse.com>
Sat, 13 Jan 2018 21:19:25 +0000 (22:19 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 7 Mar 2018 08:28:01 +0000 (09:28 +0100)
This VPD is needed to check for NetApp E-Series RDAC support.

libmultipath/discovery.c

index 43631c4..8ae170e 100644 (file)
@@ -1118,7 +1118,11 @@ get_vpd_sgio (int fd, int pg, char * str, int maxlen)
                len = parse_vpd_pg80(buff, str, maxlen);
        else if (pg == 0x83)
                len = parse_vpd_pg83(buff, buff_len, str, maxlen);
-       else
+       else if (pg == 0xc9 && maxlen >= 8) {
+               len = buff_len < 8 ? -ENODATA :
+                       (buff_len <= maxlen ? buff_len : maxlen);
+               memcpy (str, buff, len);
+       } else
                len = -ENOSYS;
 
        return len;