#include "config.h"
#include "pgpolicies.h"
#include "prio.h"
+#include "hwtable.h"
/*
* Tuning suggestions on these parameters should go to
*
* COMPANY_NAME
*
- * Maintainer : XXX
- * Mail : XXX
+ * Maintainer: NAME <email>
*/
{
- /* If product-ID is different from marketing name add a comment */
+ /* Product Name */
.vendor = "VENDOR",
.product = "PRODUCT",
.revision = "REVISION",
#endif
static struct hwentry default_hw[] = {
- /*
- * Generic NVMe
- *
- * Due to the parsing logic in find_hwe(), generic entries
- * have to be put on top of this list, and more specific ones
- * below.
- */
+ /*
+ * Generic NVMe devices
+ *
+ * Due to the parsing logic in find_hwe(), generic entries
+ * have to be put on top of this list, and more specific ones
+ * below.
+ */
{
+ /* Generic NVMe */
.vendor = "NVME",
.product = ".*",
- .uid_attribute = "ID_WWN",
+ .uid_attribute = DEFAULT_NVME_UID_ATTRIBUTE,
.checker_name = NONE,
.retain_hwhandler = RETAIN_HWHANDLER_OFF,
},
/*
* Apple
*
- * Maintainer : Shyam Sundar
- * Mail : g.shyamsundar@yahoo.co.in
+ * Maintainer: Shyam Sundar <g.shyamsundar@yahoo.co.in>
*/
{
+ /* Xserve RAID */
.vendor = "APPLE",
.product = "Xserve RAID",
.pgpolicy = MULTIBUS,
* HPE
*/
{
+ /* 3PAR / Primera / Alletra 9000 */
.vendor = "3PARdata",
.product = "VV",
.pgpolicy = GROUP_BY_PRIO,
.no_path_retry = 18,
.fast_io_fail = 10,
.dev_loss = MAX_DEV_LOSS_TMO,
+ .vpd_vendor_id = VPD_VP_HP3PAR,
},
{
/* RA8000 / ESA12000 */
.prio_name = PRIO_ALUA,
},
{
- /* MSA 1040, 1050, 2040 and 2050 families */
+ /* MSA 1040, 1050, 1060, 2040, 2050 and 2060 families */
.vendor = "HP",
- .product = "MSA [12]0[45]0 SA[NS]",
+ .product = "MSA [12]0[456]0 SA[NS]",
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.no_path_retry = 18,
.prio_name = PRIO_ALUA,
},
{
- /* Nimble Storage */
+ /* Nimble Storage / HPE Alletra 6000 */
.vendor = "Nimble",
.product = "Server",
.hwhandler = "1 alua",
},
/* SGI */
{
+ /* Total Performance 9100 */
.vendor = "SGI",
.product = "TP9100",
.pgpolicy = MULTIBUS,
.no_path_retry = 30,
},
{
- /* InfiniteStorage family */
+ /* (RDAC) InfiniteStorage */
.vendor = "SGI",
.product = "IS",
.bl_product = "Universal Xport",
.no_path_retry = 30,
},
{
- /* (DDN) */
+ /* (DDN) InfiniteStorage */
.vendor = "SGI",
.product = "^DD[46]A-",
.pgpolicy = GROUP_BY_PRIO,
* DataDirect Networks
*/
{
+ /* SAN DataDirector */
.vendor = "DDN",
.product = "SAN DataDirector",
.pgpolicy = MULTIBUS,
},
{
+ /* EF3010 */
.vendor = "DDN",
.product = "^EF3010",
.pgpolicy = MULTIBUS,
.no_path_retry = 30,
},
{
+ /* EF3015 / S2A and SFA families */
.vendor = "DDN",
.product = "^(EF3015|S2A|SFA)",
.pgpolicy = GROUP_BY_PRIO,
.prio_name = PRIO_ALUA,
.no_path_retry = 30,
},
+ {
+ /*
+ * Nexenta COMSTAR
+ *
+ * Maintainer: Yacine Kheddache <yacine@alyseo.com>
+ */
+ .vendor = "NEXENTA",
+ .product = "COMSTAR",
+ .pgpolicy = GROUP_BY_SERIAL,
+ .no_path_retry = 30,
+ },
+ {
+ /* Tegile IntelliFlash */
+ .vendor = "TEGILE",
+ .product = "(ZEBI-(FC|ISCSI)|INTELLIFLASH)",
+ .hwhandler = "1 alua",
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .prio_name = PRIO_ALUA,
+ .no_path_retry = 10,
+ },
/*
* Dell EMC
*/
{
- /* Symmetrix / DMX / VMAX */
+ /* Symmetrix / DMX / VMAX / PowerMax */
.vendor = "EMC",
.product = "SYMMETRIX",
.pgpolicy = MULTIBUS,
.no_path_retry = 6,
},
{
- /* DGC CLARiiON CX/AX / EMC VNX and Unity */
+ /* DGC CLARiiON CX/AX / VNX and Unity */
.vendor = "^DGC",
.product = "^(RAID|DISK|VRAID)",
.bl_product = "LUNZ",
.no_path_retry = 5,
},
{
+ /* XtremIO */
.vendor = "XtremIO",
.product = "XtremApp",
.pgpolicy = MULTIBUS,
},
{
- /*
- * Dell SC Series, formerly Compellent
- *
- * Maintainer : Sean McGinnis
- * Mail : sean_mcginnis@dell.com
- */
+ /* SC Series, formerly Compellent */
.vendor = "COMPELNT",
.product = "Compellent Vol",
- .pgpolicy = MULTIBUS,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
.no_path_retry = NO_PATH_RETRY_QUEUE,
},
{
.pgfailback = -FAILBACK_IMMEDIATE,
.no_path_retry = 30,
},
+ {
+ /* EMC PowerMax NVMe */
+ .vendor = "NVME",
+ .product = "^EMC PowerMax_",
+ .pgpolicy = MULTIBUS,
+ },
+ {
+ /* PowerStore */
+ .vendor = "DellEMC",
+ .product = "PowerStore",
+ .pgpolicy = GROUP_BY_PRIO,
+ .prio_name = PRIO_ALUA,
+ .hwhandler = "1 alua",
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .no_path_retry = 3,
+ .fast_io_fail = 15,
+ },
+ {
+ /* PowerVault ME4 */
+ .vendor = "DellEMC",
+ .product = "ME4",
+ .pgpolicy = GROUP_BY_PRIO,
+ .prio_name = PRIO_ALUA,
+ .hwhandler = "1 alua",
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ },
/*
* Fujitsu
*/
{
+ /* CentricStor Virtual Tape */
.vendor = "FSC",
.product = "CentricStor",
.pgpolicy = GROUP_BY_SERIAL,
},
{
+ /* ETERNUS family */
.vendor = "FUJITSU",
.product = "ETERNUS_DX(H|L|M|400|8000)",
.pgpolicy = GROUP_BY_PRIO,
.pgpolicy = MULTIBUS,
},
{
+ /* ETERNUS 2000, 3000 and 4000 */
.vendor = "FUJITSU",
.product = "E[234]000",
.pgpolicy = GROUP_BY_PRIO,
.prio_name = PRIO_ALUA,
},
{
+ /* ETERNUS 6000 and 8000 */
.vendor = "FUJITSU",
.product = "E[68]000",
.pgpolicy = MULTIBUS,
.no_path_retry = 10,
},
+ {
+ /*
+ * ETERNUS AB/HB
+ * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
+ */
+ .vendor = "FUJITSU",
+ .product = "ETERNUS_AHB",
+ .bl_product = "Universal Xport",
+ .pgpolicy = GROUP_BY_PRIO,
+ .checker_name = RDAC,
+ .features = "2 pg_init_retries 50",
+ .hwhandler = "1 rdac",
+ .prio_name = PRIO_RDAC,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .no_path_retry = 30,
+ },
/*
- * Hitachi
+ * Hitachi Vantara
*
- * Maintainer : Matthias Rudolph
- * Mail : matthias.rudolph@hds.com
+ * Maintainer: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
*/
{
- /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families */
+ /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
.vendor = "(HITACHI|HP)",
.product = "^OPEN-",
.pgpolicy = MULTIBUS,
},
{
- /* AMS 2000 and HUS 100 families */
- .vendor = "(HITACHI|HP)",
+ /* AMS other than AMS 2000 */
+ .vendor = "HITACHI",
.product = "^DF",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.prio_name = PRIO_HDS,
},
+ {
+ /* AMS 2000 and HUS 100 families */
+ .vendor = "HITACHI",
+ .product = "^DF600F",
+ .pgpolicy = MULTIBUS,
+ },
/*
* IBM
- *
- * Maintainer : Hannes Reinecke
- * Mail : hare@suse.de
*/
{
+ /* ProFibre 4000R */
.vendor = "IBM",
.product = "ProFibre 4000R",
.pgpolicy = MULTIBUS,
.no_path_retry = 30,
},
{
- /* Enterprise Storage Server / Shark family */
+ /* Enterprise Storage Server(ESS) / Shark family */
.vendor = "IBM",
.product = "^2105",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.vendor = "IBM",
.product = "^2107900",
.no_path_retry = NO_PATH_RETRY_QUEUE,
- .pgpolicy = MULTIBUS,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
},
{
- /* Storwize family / SAN Volume Controller / Flex System V7000 / FlashSystem V840/V9000 */
+ // Storwize V5000 and V7000 lines / SAN Volume Controller (SVC) / Flex System V7000 /
+ // FlashSystem V840/V9000/5000/5100/5200/7200/9100/9200/9200R
.vendor = "IBM",
.product = "^2145",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.prio_name = PRIO_ALUA,
},
{
+ /* PAV DASD ECKD */
.vendor = "IBM",
.product = "S/390 DASD ECKD",
.bl_product = "S/390",
.uid_attribute = "ID_UID",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.pgpolicy = MULTIBUS,
+ .checker_name = DIRECTIO,
},
{
+ /* PAV DASD FBA */
.vendor = "IBM",
.product = "S/390 DASD FBA",
.bl_product = "S/390",
.uid_attribute = "ID_UID",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.pgpolicy = MULTIBUS,
+ .checker_name = DIRECTIO,
},
{
/* Power RAID */
.vendor = "(XIV|IBM)",
.product = "(NEXTRA|2810XIV)",
.no_path_retry = NO_PATH_RETRY_QUEUE,
- .pgpolicy = MULTIBUS,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = 15,
},
{
/* TMS RamSan / FlashSystem 710/720/810/820/840/900 */
/*
* IBM Power Virtual SCSI Devices
*
- * Maintainer : Brian King
- * Mail : brking@linux.vnet.ibm.com
+ * Maintainer: Brian King <brking@linux.vnet.ibm.com>
*/
{
+ /* AIX VDASD */
.vendor = "AIX",
.product = "VDASD",
.pgpolicy = MULTIBUS,
.no_path_retry = (300 / DEFAULT_CHECKINT),
},
{
+ /* AIX NVDISK */
.vendor = "AIX",
.product = "NVDISK",
.hwhandler = "1 alua",
.prio_name = PRIO_ALUA,
},
/*
+ * Lenovo
+ */
+ {
+ /*
+ * DE Series
+ *
+ * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
+ */
+ .vendor = "LENOVO",
+ .product = "DE_Series",
+ .bl_product = "Universal Xport",
+ .pgpolicy = GROUP_BY_PRIO,
+ .checker_name = RDAC,
+ .features = "2 pg_init_retries 50",
+ .hwhandler = "1 rdac",
+ .prio_name = PRIO_RDAC,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .no_path_retry = 30,
+ },
+ /*
* NetApp
*/
{
/*
* ONTAP family
*
- * Maintainer : Martin George
- * Mail : marting@netapp.com
+ * Maintainer: Martin George <marting@netapp.com>
*/
.vendor = "NETAPP",
.product = "LUN",
.flush_on_last_del = FLUSH_ENABLED,
.dev_loss = MAX_DEV_LOSS_TMO,
.prio_name = PRIO_ONTAP,
+ .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
},
{
/*
* SANtricity(RDAC) family
*
- * Maintainer : NetApp RDAC team
- * Mail : ng-eseries-upstream-maintainers@netapp.com
+ * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
*/
.vendor = "(NETAPP|LSI|ENGENIO)",
.product = "INF-01-00",
/*
* SolidFir family
*
- * Maintainer : PJ Waskiewicz
- * Mail : pj.waskiewicz@netapp.com
+ * Maintainer: PJ Waskiewicz <pj.waskiewicz@netapp.com>
*/
.vendor = "SolidFir",
.product = "SSD SAN",
*
* The hwtable is searched backwards, so place this after "Generic NVMe"
*/
- .vendor = "NVME",
+ .vendor = "NVME",
.product = "^NetApp ONTAP Controller",
- .uid_attribute = "ID_WWN",
- .checker_name = NONE,
.pgpolicy = MULTIBUS,
.no_path_retry = NO_PATH_RETRY_QUEUE,
- .retain_hwhandler = RETAIN_HWHANDLER_OFF,
- },
- /*
- * Nexenta
- *
- * Maintainer : Yacine Kheddache
- * Mail : yacine@alyseo.com
- */
- {
- .vendor = "NEXENTA",
- .product = "COMSTAR",
- .pgpolicy = GROUP_BY_SERIAL,
- .no_path_retry = 30,
},
/*
* NEC
/*
* Pillar Data / Oracle FS
*
- * Maintainer : Srinivasan Ramani
- * Mail : srinivas.ramani@oracle.com
+ * Maintainer: Srinivasan Ramani <srinivas.ramani@oracle.com>
*/
{
+ /* Axiom */
.vendor = "^Pillar",
.product = "^Axiom",
.pgpolicy = GROUP_BY_PRIO,
.prio_name = PRIO_ALUA,
},
{
+ /* FS */
.vendor = "^Oracle",
.product = "^Oracle FS",
.pgpolicy = GROUP_BY_PRIO,
.no_path_retry = 30,
},
{
- /* (Dot Hill) 3310, 3320, 3510 and 3511 */
+ /* (Dot Hill) 3120, 3310, 3320, 3510 and 3511 */
.vendor = "SUN",
.product = "StorEdge 3",
.pgpolicy = MULTIBUS,
},
{
+ /* 6580 and 6780 */
.vendor = "SUN",
.product = "STK6580_6780",
.bl_product = "Universal Xport",
.no_path_retry = 30,
},
{
+ /* 6180 */
.vendor = "SUN",
.product = "SUN_6180",
.bl_product = "Universal Xport",
.no_path_retry = 30,
},
{
+ /* ArrayStorage */
+ .vendor = "SUN",
+ .product = "ArrayStorage",
+ .bl_product = "Universal Xport",
+ .pgpolicy = GROUP_BY_PRIO,
+ .checker_name = RDAC,
+ .features = "2 pg_init_retries 50",
+ .hwhandler = "1 rdac",
+ .prio_name = PRIO_RDAC,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .no_path_retry = 30,
+ },
+ {
/* ZFS Storage Appliances */
.vendor = "SUN",
.product = "(Sun Storage|ZFS Storage|COMSTAR)",
/*
* Pivot3
*
- * Maintainer : Bart Brooks
- * Mail : bartb@pivot3.com
+ * Maintainer: Bart Brooks <bartb@pivot3.com>
*/
{
+ /* Raige */
.vendor = "PIVOT3",
.product = "RAIGE VOLUME",
.no_path_retry = NO_PATH_RETRY_QUEUE,
.pgpolicy = MULTIBUS,
},
{
+ /* NexGen / vSTAC */
.vendor = "(NexGen|Pivot3)",
.product = "(TierStore|vSTAC)",
.pgpolicy = GROUP_BY_PRIO,
* Intel
*/
{
+ /* Multi-Flex */
.vendor = "(Intel|INTEL)",
.product = "Multi-Flex",
.bl_product = "VTrak V-LUN",
* Linux-IO Target
*/
{
+ /* Linux-IO Target */
.vendor = "(LIO-ORG|SUSE)",
- .product = "RBD",
+ .product = ".",
.hwhandler = "1 alua",
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
* DataCore
*/
{
+ /* SANmelody */
.vendor = "DataCore",
.product = "SANmelody",
.pgpolicy = GROUP_BY_PRIO,
* Pure Storage
*/
{
+ /* FlashArray */
.vendor = "PURE",
.product = "FlashArray",
- .pgpolicy = MULTIBUS,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .hwhandler = "1 alua",
+ .prio_name = PRIO_ALUA,
+ .fast_io_fail = 10,
+ .max_sectors_kb = 4096,
},
/*
* Huawei
*/
{
- /* OceanStor V3 */
+ /* OceanStor V3-V6 */
+ // This config works with multibus and ALUA
+ // ALUA is required by HyperMetro
.vendor = "HUAWEI",
.product = "XSG1",
.pgpolicy = GROUP_BY_PRIO,
- .prio_name = PRIO_ALUA,
- },
- /*
- * Red Hat
- *
- * Maintainer: Mike Christie
- * Mail: mchristi@redhat.com
- */
- {
- .vendor = "Ceph",
- .product = "RBD",
- .checker_name = RBD,
- .deferred_remove = DEFERRED_REMOVE_ON,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .no_path_retry = 15,
},
/*
* Kove
*/
{
+ /* XPD */
.vendor = "KOVE",
.product = "XPD",
.pgpolicy = MULTIBUS,
/*
* Infinidat
*
- * Maintainer: Arnon Yaari
- * Mail: arnony@infinidat.com
+ * Maintainer: Arnon Yaari <arnony@infinidat.com>
*/
{
+ /* InfiniBox */
.vendor = "NFINIDAT",
.product = "InfiniBox",
.pgpolicy = GROUP_BY_PRIO,
* Kaminario
*/
{
+ /* K2 */
.vendor = "KMNRIO",
.product = "K2",
.pgpolicy = MULTIBUS,
},
/*
- * Tegile Systems
- */
- {
- .vendor = "TEGILE",
- .product = "(ZEBI-(FC|ISCSI)|INTELLIFLASH)",
- .hwhandler = "1 alua",
- .pgpolicy = GROUP_BY_PRIO,
- .pgfailback = -FAILBACK_IMMEDIATE,
- .prio_name = PRIO_ALUA,
- .no_path_retry = 10,
- },
- /*
- * Imation/Nexsan
+ * StorCentric
*/
+ /* Nexsan */
{
/* E-Series */
.vendor = "NEXSAN",
.prio_name = PRIO_ALUA,
.no_path_retry = 30,
},
- /*
- * Xiotech
- */
+ /* Violin Systems */
+ {
+ /* 3000 / 6000 Series */
+ .vendor = "VIOLIN",
+ .product = "SAN ARRAY$",
+ .pgpolicy = GROUP_BY_SERIAL,
+ .no_path_retry = 30,
+ },
+ {
+ /* 3000 / 6000 Series - ALUA mode */
+ .vendor = "VIOLIN",
+ .product = "SAN ARRAY ALUA",
+ .hwhandler = "1 alua",
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .prio_name = PRIO_ALUA,
+ .no_path_retry = 30,
+ },
+ {
+ /* FSP 7000 family */
+ .vendor = "VIOLIN",
+ .product = "CONCERTO ARRAY",
+ .pgpolicy = MULTIBUS,
+ .no_path_retry = 30,
+ },
+ /* Xiotech */
{
/* Intelligent Storage Elements family */
.vendor = "(XIOTECH|XIOtech)",
.pgpolicy = MULTIBUS,
.no_path_retry = 30,
},
- /*
- * Violin Memory
- */
- {
- /* 3000 / 6000 Series */
- .vendor = "VIOLIN",
- .product = "SAN ARRAY$",
- .pgpolicy = GROUP_BY_SERIAL,
- .no_path_retry = 30,
- },
- {
- .vendor = "VIOLIN",
- .product = "SAN ARRAY ALUA",
- .hwhandler = "1 alua",
- .pgpolicy = GROUP_BY_PRIO,
- .pgfailback = -FAILBACK_IMMEDIATE,
- .prio_name = PRIO_ALUA,
- .no_path_retry = 30,
- },
+ /* Vexata */
{
- /* FSP 7000 family */
- .vendor = "VIOLIN",
- .product = "CONCERTO ARRAY",
+ /* VX */
+ .vendor = "Vexata",
+ .product = "VX",
.pgpolicy = MULTIBUS,
.no_path_retry = 30,
},
* Promise Technology
*/
{
+ /* VTrak family */
.vendor = "Promise",
.product = "VTrak",
.bl_product = "VTrak V-LUN",
.no_path_retry = 30,
},
{
+ /* Vess family */
.vendor = "Promise",
.product = "Vess",
.bl_product = "Vess V-LUN",
.prio_name = PRIO_ALUA,
},
/*
+ * MacroSAN Technologies
+ */
+ {
+ /* MS family */
+ .vendor = "MacroSAN",
+ .product = "LU",
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .prio_name = PRIO_ALUA,
+ .no_path_retry = 30,
+ },
+ /*
* EOL
*/
{
+ /* NULL */
.vendor = NULL,
.product = NULL,
},