8 #include "pgpolicies.h"
13 * Tuning suggestions on these parameters should go to
14 * dm-devel@redhat.com (subscribers-only, see README)
16 * You are welcome to claim maintainership over a controller
17 * family. Please mail the currently enlisted maintainer and
18 * the upstream package maintainer.
20 * Please, use the TEMPLATE below to add new hardware.
24 * Devices with a proprietary handler must also be included in
25 * the kernel side. Currently at drivers/scsi/scsi_dh.c
27 * Moreover, if a device needs a special treatment by the SCSI
28 * subsystem it should be included in drivers/scsi/scsi_devinfo.c
33 * Copy this TEMPLATE to add new hardware.
35 * Keep only mandatory(.vendor and .product) and modified attributes.
36 * Attributes with default values must be removed.
37 * .vendor, .product, .revision and .bl_product are POSIX Extended regex.
41 * Maintainer: NAME <email>
47 .revision = "REVISION",
48 .bl_product = "BL_PRODUCT",
50 .uid_attribute = "ID_SERIAL",
51 .selector = "service-time 0",
53 .alias_prefix = "mpath",
56 .prio_name = PRIO_CONST,
58 .pgfailback = -FAILBACK_MANUAL,
59 .rr_weight = RR_WEIGHT_NONE,
60 .no_path_retry = NO_PATH_RETRY_UNDEF,
63 .flush_on_last_del = FLUSH_DISABLED,
64 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
67 .retain_hwhandler = RETAIN_HWHANDLER_ON,
68 .detect_prio = DETECT_PRIO_ON,
69 .detect_checker = DETECT_CHECKER_ON,
70 .deferred_remove = DEFERRED_REMOVE_OFF,
71 .delay_watch_checks = DELAY_CHECKS_OFF,
72 .delay_wait_checks = DELAY_CHECKS_OFF,
73 .skip_kpartx = SKIP_KPARTX_OFF,
74 .max_sectors_kb = MAX_SECTORS_KB_UNDEF,
75 .ghost_delay = GHOST_DELAY_OFF,
79 static struct hwentry default_hw[] = {
81 * Generic NVMe devices
83 * Due to the parsing logic in find_hwe(), generic entries
84 * have to be put on top of this list, and more specific ones
91 .uid_attribute = DEFAULT_NVME_UID_ATTRIBUTE,
93 .retain_hwhandler = RETAIN_HWHANDLER_OFF,
98 * Maintainer: Shyam Sundar <g.shyamsundar@yahoo.co.in>
103 .product = "Xserve RAID",
104 .pgpolicy = MULTIBUS,
111 .vendor = "3PARdata",
113 .pgpolicy = GROUP_BY_PRIO,
114 .pgfailback = -FAILBACK_IMMEDIATE,
115 .hwhandler = "1 alua",
116 .prio_name = PRIO_ALUA,
119 .dev_loss = MAX_DEV_LOSS_TMO,
120 .vpd_vendor_id = VPD_VP_HP3PAR,
123 /* RA8000 / ESA12000 */
126 .no_path_retry = NO_PATH_RETRY_QUEUE,
127 .hwhandler = "1 hp_sw",
128 .pgpolicy = GROUP_BY_PRIO,
129 .checker_name = HP_SW,
130 .prio_name = PRIO_HP_SW,
133 /* VIRTUAL ARRAY 7400 */
136 .pgpolicy = MULTIBUS,
140 /* MSA 1000/1500 and EVA 3000/5000, with old firmware */
141 .vendor = "(COMPAQ|HP)",
142 .product = "(MSA|HSV)1[01]0",
143 .hwhandler = "1 hp_sw",
144 .pgpolicy = GROUP_BY_PRIO,
146 .checker_name = HP_SW,
147 .prio_name = PRIO_HP_SW,
150 /* MSA 1000/1500 with new firmware */
151 .vendor = "(COMPAQ|HP)",
152 .product = "MSA VOLUME",
153 .pgpolicy = GROUP_BY_PRIO,
154 .pgfailback = -FAILBACK_IMMEDIATE,
156 .prio_name = PRIO_ALUA,
159 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
160 .vendor = "(COMPAQ|HP)",
161 .product = "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)",
162 .pgpolicy = GROUP_BY_PRIO,
163 .pgfailback = -FAILBACK_IMMEDIATE,
165 .prio_name = PRIO_ALUA,
168 /* MSA2000 family with old firmware */
170 .product = "(MSA2[02]12fc|MSA2012i)",
171 .pgpolicy = MULTIBUS,
175 /* MSA2000 family with new firmware */
177 .product = "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)",
178 .pgpolicy = GROUP_BY_PRIO,
179 .pgfailback = -FAILBACK_IMMEDIATE,
181 .prio_name = PRIO_ALUA,
184 /* MSA 1040, 1050, 1060, 2040, 2050 and 2060 families */
186 .product = "MSA [12]0[456]0 SA[NS]",
187 .pgpolicy = GROUP_BY_PRIO,
188 .pgfailback = -FAILBACK_IMMEDIATE,
190 .prio_name = PRIO_ALUA,
193 /* SAN Virtualization Services Platform */
195 .product = "HSVX700",
196 .hwhandler = "1 alua",
197 .pgpolicy = GROUP_BY_PRIO,
198 .pgfailback = -FAILBACK_IMMEDIATE,
200 .prio_name = PRIO_ALUA,
205 .product = "LOGICAL VOLUME",
206 .pgpolicy = MULTIBUS,
212 .product = "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)",
213 .pgpolicy = GROUP_BY_PRIO,
214 .pgfailback = -FAILBACK_IMMEDIATE,
216 .prio_name = PRIO_ALUA,
219 /* StoreVirtual 4000 and 3200 families */
220 .vendor = "LEFTHAND",
221 .product = "(P4000|iSCSIDisk|FCDISK)",
222 .pgpolicy = GROUP_BY_PRIO,
223 .pgfailback = -FAILBACK_IMMEDIATE,
225 .prio_name = PRIO_ALUA,
231 .hwhandler = "1 alua",
232 .pgpolicy = GROUP_BY_PRIO,
233 .pgfailback = -FAILBACK_IMMEDIATE,
234 .prio_name = PRIO_ALUA,
235 .no_path_retry = NO_PATH_RETRY_QUEUE,
239 /* Total Performance 9100 */
242 .pgpolicy = MULTIBUS,
245 /* Total Performance family */
247 .product = "TP9[3457]00",
248 .bl_product = "Universal Xport",
249 .pgpolicy = GROUP_BY_PRIO,
250 .checker_name = RDAC,
251 .features = "2 pg_init_retries 50",
252 .hwhandler = "1 rdac",
253 .prio_name = PRIO_RDAC,
254 .pgfailback = -FAILBACK_IMMEDIATE,
258 /* (RDAC) InfiniteStorage */
261 .bl_product = "Universal Xport",
262 .pgpolicy = GROUP_BY_PRIO,
263 .checker_name = RDAC,
264 .features = "2 pg_init_retries 50",
265 .hwhandler = "1 rdac",
266 .prio_name = PRIO_RDAC,
267 .pgfailback = -FAILBACK_IMMEDIATE,
271 /* (DDN) InfiniteStorage */
273 .product = "^DD[46]A-",
274 .pgpolicy = GROUP_BY_PRIO,
275 .pgfailback = -FAILBACK_IMMEDIATE,
276 .prio_name = PRIO_ALUA,
280 * DataDirect Networks
283 /* SAN DataDirector */
285 .product = "SAN DataDirector",
286 .pgpolicy = MULTIBUS,
291 .product = "^EF3010",
292 .pgpolicy = MULTIBUS,
296 /* EF3015 / S2A and SFA families */
298 .product = "^(EF3015|S2A|SFA)",
299 .pgpolicy = GROUP_BY_PRIO,
300 .pgfailback = -FAILBACK_IMMEDIATE,
301 .prio_name = PRIO_ALUA,
308 * Maintainer: Yacine Kheddache <yacine@alyseo.com>
311 .product = "COMSTAR",
312 .pgpolicy = GROUP_BY_SERIAL,
316 /* Tegile IntelliFlash */
318 .product = "(ZEBI-(FC|ISCSI)|INTELLIFLASH)",
319 .hwhandler = "1 alua",
320 .pgpolicy = GROUP_BY_PRIO,
321 .pgfailback = -FAILBACK_IMMEDIATE,
322 .prio_name = PRIO_ALUA,
329 /* Symmetrix / DMX / VMAX / PowerMax */
331 .product = "SYMMETRIX",
332 .pgpolicy = MULTIBUS,
336 /* DGC CLARiiON CX/AX / VNX and Unity */
338 .product = "^(RAID|DISK|VRAID)",
339 .bl_product = "LUNZ",
340 .hwhandler = "1 emc",
341 .pgpolicy = GROUP_BY_PRIO,
342 .pgfailback = -FAILBACK_IMMEDIATE,
343 .no_path_retry = (300 / DEFAULT_CHECKINT),
344 .checker_name = EMC_CLARIION,
345 .prio_name = PRIO_EMC,
348 /* Invista / VPLEX */
350 .product = "Invista",
351 .bl_product = "LUNZ",
352 .pgpolicy = MULTIBUS,
358 .product = "XtremApp",
359 .pgpolicy = MULTIBUS,
363 * SC Series, formerly Compellent
365 * Maintainer: Sean McGinnis <sean_mcginnis@dell.com>
367 .vendor = "COMPELNT",
368 .product = "Compellent Vol",
369 .pgpolicy = MULTIBUS,
370 .no_path_retry = NO_PATH_RETRY_QUEUE,
376 .bl_product = "Universal Xport",
377 .pgpolicy = GROUP_BY_PRIO,
378 .checker_name = RDAC,
379 .features = "2 pg_init_retries 50",
380 .hwhandler = "1 rdac",
381 .prio_name = PRIO_RDAC,
382 .pgfailback = -FAILBACK_IMMEDIATE,
386 /* EMC PowerMax NVMe */
388 .product = "^EMC PowerMax_",
389 .pgpolicy = MULTIBUS,
394 .product = "PowerStore",
395 .pgpolicy = GROUP_BY_PRIO,
396 .prio_name = PRIO_ALUA,
397 .hwhandler = "1 alua",
398 .pgfailback = -FAILBACK_IMMEDIATE,
406 /* CentricStor Virtual Tape */
408 .product = "CentricStor",
409 .pgpolicy = GROUP_BY_SERIAL,
414 .product = "ETERNUS_DX(H|L|M|400|8000)",
415 .pgpolicy = GROUP_BY_PRIO,
416 .pgfailback = -FAILBACK_IMMEDIATE,
418 .prio_name = PRIO_ALUA,
422 .vendor = "(EUROLOGC|EuroLogc)",
424 .pgpolicy = MULTIBUS,
427 /* ETERNUS 2000, 3000 and 4000 */
429 .product = "E[234]000",
430 .pgpolicy = GROUP_BY_PRIO,
431 .pgfailback = -FAILBACK_IMMEDIATE,
433 .prio_name = PRIO_ALUA,
436 /* ETERNUS 6000 and 8000 */
438 .product = "E[68]000",
439 .pgpolicy = MULTIBUS,
445 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
448 .product = "ETERNUS_AHB",
449 .bl_product = "Universal Xport",
450 .pgpolicy = GROUP_BY_PRIO,
451 .checker_name = RDAC,
452 .features = "2 pg_init_retries 50",
453 .hwhandler = "1 rdac",
454 .prio_name = PRIO_RDAC,
455 .pgfailback = -FAILBACK_IMMEDIATE,
461 * Maintainer: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
464 /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
465 .vendor = "(HITACHI|HP)",
467 .pgpolicy = MULTIBUS,
470 /* AMS other than AMS 2000 */
473 .no_path_retry = NO_PATH_RETRY_QUEUE,
474 .pgpolicy = GROUP_BY_PRIO,
475 .pgfailback = -FAILBACK_IMMEDIATE,
476 .prio_name = PRIO_HDS,
479 /* AMS 2000 and HUS 100 families */
481 .product = "^DF600F",
482 .pgpolicy = MULTIBUS,
487 * Maintainer: Hannes Reinecke <hare@suse.de>
492 .product = "ProFibre 4000R",
493 .pgpolicy = MULTIBUS,
496 /* DS4300 / FAStT600 */
498 .product = "^1722-600",
499 .bl_product = "Universal Xport",
500 .pgpolicy = GROUP_BY_PRIO,
501 .checker_name = RDAC,
502 .features = "2 pg_init_retries 50",
503 .hwhandler = "1 rdac",
504 .prio_name = PRIO_RDAC,
505 .pgfailback = -FAILBACK_IMMEDIATE,
509 /* DS4100 / FAStT100 */
512 .bl_product = "Universal Xport",
513 .pgpolicy = GROUP_BY_PRIO,
514 .checker_name = RDAC,
515 .features = "2 pg_init_retries 50",
516 .hwhandler = "1 rdac",
517 .prio_name = PRIO_RDAC,
518 .pgfailback = -FAILBACK_IMMEDIATE,
522 /* DS3000 / DS3200 / DS3300 / DS3400 / Boot DS */
525 .bl_product = "Universal Xport",
526 .pgpolicy = GROUP_BY_PRIO,
527 .checker_name = RDAC,
528 .features = "2 pg_init_retries 50",
529 .hwhandler = "1 rdac",
530 .prio_name = PRIO_RDAC,
531 .pgfailback = -FAILBACK_IMMEDIATE,
535 /* DS4400 / DS4500 / FAStT700 / FAStT900 */
538 .bl_product = "Universal Xport",
539 .pgpolicy = GROUP_BY_PRIO,
540 .checker_name = RDAC,
541 .features = "2 pg_init_retries 50",
542 .hwhandler = "1 rdac",
543 .prio_name = PRIO_RDAC,
544 .pgfailback = -FAILBACK_IMMEDIATE,
548 /* DS3500 / DS3512 / DS3524 */
551 .bl_product = "Universal Xport",
552 .pgpolicy = GROUP_BY_PRIO,
553 .checker_name = RDAC,
554 .features = "2 pg_init_retries 50",
555 .hwhandler = "1 rdac",
556 .prio_name = PRIO_RDAC,
557 .pgfailback = -FAILBACK_IMMEDIATE,
564 .bl_product = "Universal Xport",
565 .pgpolicy = GROUP_BY_PRIO,
566 .checker_name = RDAC,
567 .features = "2 pg_init_retries 50",
568 .hwhandler = "1 rdac",
569 .prio_name = PRIO_RDAC,
570 .pgfailback = -FAILBACK_IMMEDIATE,
574 /* DS3950 / DS4200 / DS4700 / DS5020 */
577 .bl_product = "Universal Xport",
578 .pgpolicy = GROUP_BY_PRIO,
579 .checker_name = RDAC,
580 .features = "2 pg_init_retries 50",
581 .hwhandler = "1 rdac",
582 .prio_name = PRIO_RDAC,
583 .pgfailback = -FAILBACK_IMMEDIATE,
590 .bl_product = "Universal Xport",
591 .pgpolicy = GROUP_BY_PRIO,
592 .checker_name = RDAC,
593 .features = "2 pg_init_retries 50",
594 .hwhandler = "1 rdac",
595 .prio_name = PRIO_RDAC,
596 .pgfailback = -FAILBACK_IMMEDIATE,
600 /* DS5000 / DS5100 / DS5300 / DCS3700 */
603 .bl_product = "Universal Xport",
604 .pgpolicy = GROUP_BY_PRIO,
605 .checker_name = RDAC,
606 .features = "2 pg_init_retries 50",
607 .hwhandler = "1 rdac",
608 .prio_name = PRIO_RDAC,
609 .pgfailback = -FAILBACK_IMMEDIATE,
613 /* Netfinity Fibre Channel RAID Controller Unit */
616 .bl_product = "Universal Xport",
617 .pgpolicy = GROUP_BY_PRIO,
618 .checker_name = RDAC,
619 .features = "2 pg_init_retries 50",
620 .hwhandler = "1 rdac",
621 .prio_name = PRIO_RDAC,
622 .pgfailback = -FAILBACK_IMMEDIATE,
626 /* FAStT200 and FAStT500 */
628 .product = "^(3542|3552)",
629 .bl_product = "Universal Xport",
630 .pgpolicy = GROUP_BY_PRIO,
631 .checker_name = RDAC,
632 .features = "2 pg_init_retries 50",
633 .hwhandler = "1 rdac",
634 .prio_name = PRIO_RDAC,
635 .pgfailback = -FAILBACK_IMMEDIATE,
639 /* Enterprise Storage Server(ESS) / Shark family */
642 .no_path_retry = NO_PATH_RETRY_QUEUE,
643 .pgpolicy = MULTIBUS,
646 /* DS6000 / DS6800 */
648 .product = "^1750500",
649 .no_path_retry = NO_PATH_RETRY_QUEUE,
650 .pgpolicy = GROUP_BY_PRIO,
651 .pgfailback = -FAILBACK_IMMEDIATE,
652 .prio_name = PRIO_ALUA,
657 .product = "^2107900",
658 .no_path_retry = NO_PATH_RETRY_QUEUE,
659 .pgpolicy = MULTIBUS,
662 /* Storwize family / SAN Volume Controller / Flex System V7000 / FlashSystem V840/V9000/9100 */
665 .no_path_retry = NO_PATH_RETRY_QUEUE,
666 .pgpolicy = GROUP_BY_PRIO,
667 .pgfailback = -FAILBACK_IMMEDIATE,
668 .prio_name = PRIO_ALUA,
673 .product = "S/390 DASD ECKD",
674 .bl_product = "S/390",
675 .uid_attribute = "ID_UID",
676 .no_path_retry = NO_PATH_RETRY_QUEUE,
677 .pgpolicy = MULTIBUS,
678 .checker_name = DIRECTIO,
683 .product = "S/390 DASD FBA",
684 .bl_product = "S/390",
685 .uid_attribute = "ID_UID",
686 .no_path_retry = NO_PATH_RETRY_QUEUE,
687 .pgpolicy = MULTIBUS,
688 .checker_name = DIRECTIO,
694 .no_path_retry = NO_PATH_RETRY_QUEUE,
695 .hwhandler = "1 alua",
696 .pgpolicy = GROUP_BY_PRIO,
697 .pgfailback = -FAILBACK_IMMEDIATE,
698 .prio_name = PRIO_ALUA,
701 /* SAS RAID Controller Module (RSSM) */
703 .product = "1820N00",
704 .pgpolicy = GROUP_BY_PRIO,
705 .pgfailback = -FAILBACK_IMMEDIATE,
706 .no_path_retry = NO_PATH_RETRY_QUEUE,
707 .prio_name = PRIO_ALUA,
710 /* XIV Storage System / FlashSystem A9000/A9000R */
711 .vendor = "(XIV|IBM)",
712 .product = "(NEXTRA|2810XIV)",
713 .no_path_retry = NO_PATH_RETRY_QUEUE,
714 .pgpolicy = MULTIBUS,
717 /* TMS RamSan / FlashSystem 710/720/810/820/840/900 */
718 .vendor = "(TMS|IBM)",
719 .product = "(RamSan|FlashSystem)",
720 .pgpolicy = MULTIBUS,
723 /* (DDN) DCS9900, SONAS 2851-DR1 */
725 .product = "^(DCS9900|2851)",
726 .pgpolicy = GROUP_BY_PRIO,
727 .pgfailback = -FAILBACK_IMMEDIATE,
728 .prio_name = PRIO_ALUA,
732 * IBM Power Virtual SCSI Devices
734 * Maintainer: Brian King <brking@linux.vnet.ibm.com>
740 .pgpolicy = MULTIBUS,
741 .no_path_retry = (300 / DEFAULT_CHECKINT),
746 .product = "3303[ ]+NVDISK",
747 .no_path_retry = (300 / DEFAULT_CHECKINT),
753 .hwhandler = "1 alua",
754 .pgpolicy = GROUP_BY_PRIO,
755 .pgfailback = -FAILBACK_IMMEDIATE,
756 .no_path_retry = (300 / DEFAULT_CHECKINT),
757 .prio_name = PRIO_ALUA,
766 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
769 .product = "DE_Series",
770 .bl_product = "Universal Xport",
771 .pgpolicy = GROUP_BY_PRIO,
772 .checker_name = RDAC,
773 .features = "2 pg_init_retries 50",
774 .hwhandler = "1 rdac",
775 .prio_name = PRIO_RDAC,
776 .pgfailback = -FAILBACK_IMMEDIATE,
786 * Maintainer: Martin George <marting@netapp.com>
790 .features = "2 pg_init_retries 50",
791 .no_path_retry = NO_PATH_RETRY_QUEUE,
792 .pgpolicy = GROUP_BY_PRIO,
793 .pgfailback = -FAILBACK_IMMEDIATE,
794 .flush_on_last_del = FLUSH_ENABLED,
795 .dev_loss = MAX_DEV_LOSS_TMO,
796 .prio_name = PRIO_ONTAP,
797 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
801 * SANtricity(RDAC) family
803 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
805 .vendor = "(NETAPP|LSI|ENGENIO)",
806 .product = "INF-01-00",
807 .bl_product = "Universal Xport",
808 .pgpolicy = GROUP_BY_PRIO,
809 .checker_name = RDAC,
810 .features = "2 pg_init_retries 50",
811 .hwhandler = "1 rdac",
812 .prio_name = PRIO_RDAC,
813 .pgfailback = -FAILBACK_IMMEDIATE,
820 * Maintainer: PJ Waskiewicz <pj.waskiewicz@netapp.com>
822 .vendor = "SolidFir",
823 .product = "SSD SAN",
824 .pgpolicy = MULTIBUS,
829 * NVMe-FC namespace devices: MULTIBUS, queueing preferred
831 * The hwtable is searched backwards, so place this after "Generic NVMe"
834 .product = "^NetApp ONTAP Controller",
835 .pgpolicy = MULTIBUS,
836 .no_path_retry = NO_PATH_RETRY_QUEUE,
844 .product = "DISK ARRAY",
845 .hwhandler = "1 alua",
846 .pgpolicy = GROUP_BY_PRIO,
847 .pgfailback = -FAILBACK_IMMEDIATE,
848 .prio_name = PRIO_ALUA,
854 * Pillar Data / Oracle FS
856 * Maintainer: Srinivasan Ramani <srinivas.ramani@oracle.com>
862 .pgpolicy = GROUP_BY_PRIO,
863 .pgfailback = -FAILBACK_IMMEDIATE,
864 .prio_name = PRIO_ALUA,
869 .product = "^Oracle FS",
870 .pgpolicy = GROUP_BY_PRIO,
871 .pgfailback = -FAILBACK_IMMEDIATE,
872 .prio_name = PRIO_ALUA,
874 /* Sun - StorageTek */
876 /* B210, B220, B240 and B280 */
878 .product = "BladeCtlr",
879 .bl_product = "Universal Xport",
880 .pgpolicy = GROUP_BY_PRIO,
881 .checker_name = RDAC,
882 .features = "2 pg_init_retries 50",
883 .hwhandler = "1 rdac",
884 .prio_name = PRIO_RDAC,
885 .pgfailback = -FAILBACK_IMMEDIATE,
889 /* 9176, D173, D178, D210, D220, D240 and D280 */
891 .product = "OPENstorage",
892 .bl_product = "Universal Xport",
893 .pgpolicy = GROUP_BY_PRIO,
894 .checker_name = RDAC,
895 .features = "2 pg_init_retries 50",
896 .hwhandler = "1 rdac",
897 .prio_name = PRIO_RDAC,
898 .pgfailback = -FAILBACK_IMMEDIATE,
904 .product = "FLEXLINE 380",
905 .bl_product = "Universal Xport",
906 .pgpolicy = GROUP_BY_PRIO,
907 .checker_name = RDAC,
908 .features = "2 pg_init_retries 50",
909 .hwhandler = "1 rdac",
910 .prio_name = PRIO_RDAC,
911 .pgfailback = -FAILBACK_IMMEDIATE,
915 /* (Dot Hill) 3120, 3310, 3320, 3510 and 3511 */
917 .product = "StorEdge 3",
918 .pgpolicy = MULTIBUS,
923 .product = "STK6580_6780",
924 .bl_product = "Universal Xport",
925 .pgpolicy = GROUP_BY_PRIO,
926 .checker_name = RDAC,
927 .features = "2 pg_init_retries 50",
928 .hwhandler = "1 rdac",
929 .prio_name = PRIO_RDAC,
930 .pgfailback = -FAILBACK_IMMEDIATE,
936 .product = "CSM[12]00_R",
937 .bl_product = "Universal Xport",
938 .pgpolicy = GROUP_BY_PRIO,
939 .checker_name = RDAC,
940 .features = "2 pg_init_retries 50",
941 .hwhandler = "1 rdac",
942 .prio_name = PRIO_RDAC,
943 .pgfailback = -FAILBACK_IMMEDIATE,
947 /* 2500 / 2510 / 2530 / 2540 */
949 .product = "LCSM100_[IEFS]",
950 .bl_product = "Universal Xport",
951 .pgpolicy = GROUP_BY_PRIO,
952 .checker_name = RDAC,
953 .features = "2 pg_init_retries 50",
954 .hwhandler = "1 rdac",
955 .prio_name = PRIO_RDAC,
956 .pgfailback = -FAILBACK_IMMEDIATE,
962 .product = "SUN_6180",
963 .bl_product = "Universal Xport",
964 .pgpolicy = GROUP_BY_PRIO,
965 .checker_name = RDAC,
966 .features = "2 pg_init_retries 50",
967 .hwhandler = "1 rdac",
968 .prio_name = PRIO_RDAC,
969 .pgfailback = -FAILBACK_IMMEDIATE,
975 .product = "ArrayStorage",
976 .bl_product = "Universal Xport",
977 .pgpolicy = GROUP_BY_PRIO,
978 .checker_name = RDAC,
979 .features = "2 pg_init_retries 50",
980 .hwhandler = "1 rdac",
981 .prio_name = PRIO_RDAC,
982 .pgfailback = -FAILBACK_IMMEDIATE,
986 /* ZFS Storage Appliances */
988 .product = "(Sun Storage|ZFS Storage|COMSTAR)",
989 .pgpolicy = GROUP_BY_PRIO,
990 .pgfailback = -FAILBACK_IMMEDIATE,
991 .prio_name = PRIO_ALUA,
997 * Maintainer: Bart Brooks <bartb@pivot3.com>
1002 .product = "RAIGE VOLUME",
1003 .no_path_retry = NO_PATH_RETRY_QUEUE,
1004 .pgpolicy = MULTIBUS,
1007 /* NexGen / vSTAC */
1008 .vendor = "(NexGen|Pivot3)",
1009 .product = "(TierStore|vSTAC)",
1010 .pgpolicy = GROUP_BY_PRIO,
1011 .pgfailback = -FAILBACK_IMMEDIATE,
1012 .prio_name = PRIO_ALUA,
1013 .no_path_retry = NO_PATH_RETRY_QUEUE,
1020 .vendor = "(Intel|INTEL)",
1021 .product = "Multi-Flex",
1022 .bl_product = "VTrak V-LUN",
1023 .hwhandler = "1 alua",
1024 .pgpolicy = GROUP_BY_PRIO,
1025 .pgfailback = -FAILBACK_IMMEDIATE,
1026 .no_path_retry = NO_PATH_RETRY_QUEUE,
1027 .prio_name = PRIO_ALUA,
1033 /* Linux-IO Target */
1034 .vendor = "(LIO-ORG|SUSE)",
1036 .hwhandler = "1 alua",
1037 .pgpolicy = GROUP_BY_PRIO,
1038 .pgfailback = -FAILBACK_IMMEDIATE,
1039 .no_path_retry = 12,
1040 .prio_name = PRIO_ALUA,
1047 .vendor = "DataCore",
1048 .product = "SANmelody",
1049 .pgpolicy = GROUP_BY_PRIO,
1050 .pgfailback = -FAILBACK_IMMEDIATE,
1051 .no_path_retry = NO_PATH_RETRY_QUEUE,
1052 .prio_name = PRIO_ALUA,
1056 .vendor = "DataCore",
1057 .product = "Virtual Disk",
1058 .pgpolicy = GROUP_BY_PRIO,
1059 .pgfailback = -FAILBACK_IMMEDIATE,
1060 .no_path_retry = NO_PATH_RETRY_QUEUE,
1061 .prio_name = PRIO_ALUA,
1069 .product = "FlashArray",
1070 .pgpolicy = GROUP_BY_PRIO,
1071 .pgfailback = -FAILBACK_IMMEDIATE,
1072 .hwhandler = "1 alua",
1073 .prio_name = PRIO_ALUA,
1075 .max_sectors_kb = 4096,
1084 .pgpolicy = GROUP_BY_PRIO,
1085 .prio_name = PRIO_ALUA,
1094 .pgpolicy = MULTIBUS,
1099 * Maintainer: Arnon Yaari <arnony@infinidat.com>
1103 .vendor = "NFINIDAT",
1104 .product = "InfiniBox",
1105 .pgpolicy = GROUP_BY_PRIO,
1107 .prio_name = PRIO_ALUA,
1108 .selector = "round-robin 0",
1109 .rr_weight = RR_WEIGHT_PRIO,
1110 .no_path_retry = NO_PATH_RETRY_FAIL,
1113 .flush_on_last_del = FLUSH_ENABLED,
1124 .pgpolicy = MULTIBUS,
1133 .product = "NXS-B0",
1134 .pgpolicy = GROUP_BY_PRIO,
1135 .pgfailback = -FAILBACK_IMMEDIATE,
1136 .prio_name = PRIO_ALUA,
1137 .no_path_retry = 15,
1140 /* SATABeast / SATABoy */
1143 .pgpolicy = GROUP_BY_PRIO,
1144 .pgfailback = -FAILBACK_IMMEDIATE,
1145 .prio_name = PRIO_ALUA,
1146 .no_path_retry = 15,
1151 .product = "(NestOS|NST5000)",
1152 .hwhandler = "1 alua",
1153 .pgpolicy = GROUP_BY_PRIO,
1154 .pgfailback = -FAILBACK_IMMEDIATE,
1155 .prio_name = PRIO_ALUA,
1156 .no_path_retry = 30,
1158 /* Violin Systems */
1160 /* 3000 / 6000 Series */
1162 .product = "SAN ARRAY$",
1163 .pgpolicy = GROUP_BY_SERIAL,
1164 .no_path_retry = 30,
1167 /* 3000 / 6000 Series - ALUA mode */
1169 .product = "SAN ARRAY ALUA",
1170 .hwhandler = "1 alua",
1171 .pgpolicy = GROUP_BY_PRIO,
1172 .pgfailback = -FAILBACK_IMMEDIATE,
1173 .prio_name = PRIO_ALUA,
1174 .no_path_retry = 30,
1177 /* FSP 7000 family */
1179 .product = "CONCERTO ARRAY",
1180 .pgpolicy = MULTIBUS,
1181 .no_path_retry = 30,
1185 /* Intelligent Storage Elements family */
1186 .vendor = "(XIOTECH|XIOtech)",
1188 .pgpolicy = MULTIBUS,
1189 .no_path_retry = 12,
1192 /* iglu blaze family */
1193 .vendor = "(XIOTECH|XIOtech)",
1194 .product = "IGLU DISK",
1195 .pgpolicy = MULTIBUS,
1196 .no_path_retry = 30,
1199 /* Magnitude family */
1200 .vendor = "(XIOTECH|XIOtech)",
1201 .product = "Magnitude",
1202 .pgpolicy = MULTIBUS,
1203 .no_path_retry = 30,
1210 .pgpolicy = MULTIBUS,
1211 .no_path_retry = 30,
1214 * Promise Technology
1218 .vendor = "Promise",
1220 .bl_product = "VTrak V-LUN",
1221 .hwhandler = "1 alua",
1222 .pgpolicy = GROUP_BY_PRIO,
1223 .pgfailback = -FAILBACK_IMMEDIATE,
1224 .prio_name = PRIO_ALUA,
1225 .no_path_retry = 30,
1229 .vendor = "Promise",
1231 .bl_product = "Vess V-LUN",
1232 .hwhandler = "1 alua",
1233 .pgpolicy = GROUP_BY_PRIO,
1234 .pgfailback = -FAILBACK_IMMEDIATE,
1235 .prio_name = PRIO_ALUA,
1236 .no_path_retry = 30,
1239 * Infortrend Technology
1242 /* EonStor / ESVA */
1245 .pgpolicy = GROUP_BY_PRIO,
1246 .pgfailback = -FAILBACK_IMMEDIATE,
1247 .prio_name = PRIO_ALUA,
1248 .no_path_retry = 30,
1251 * Seagate Technology (Dot Hill Systems)
1255 .vendor = "DotHill",
1256 .product = "SANnet",
1257 .pgpolicy = MULTIBUS,
1258 .no_path_retry = 30,
1261 /* R/Evolution family */
1262 .vendor = "DotHill",
1264 .pgpolicy = GROUP_BY_PRIO,
1265 .pgfailback = -FAILBACK_IMMEDIATE,
1266 .prio_name = PRIO_ALUA,
1267 .no_path_retry = 30,
1270 /* AssuredSAN family */
1271 .vendor = "DotHill",
1273 .pgpolicy = GROUP_BY_PRIO,
1274 .pgfailback = -FAILBACK_IMMEDIATE,
1275 .prio_name = PRIO_ALUA,
1276 .no_path_retry = 30,
1284 .product = "NeoSapphire",
1285 .pgpolicy = MULTIBUS,
1286 .no_path_retry = 30,
1292 /* AS5300/AS5500 G2 */
1295 .pgpolicy = GROUP_BY_PRIO,
1296 .pgfailback = -FAILBACK_IMMEDIATE,
1297 .prio_name = PRIO_ALUA,
1300 * MacroSAN Technologies
1304 .vendor = "MacroSAN",
1306 .pgpolicy = GROUP_BY_PRIO,
1307 .pgfailback = -FAILBACK_IMMEDIATE,
1308 .prio_name = PRIO_ALUA,
1309 .no_path_retry = 30,
1321 int setup_default_hwtable(vector hw)
1324 struct hwentry * hwe = default_hw;
1326 while (hwe->vendor) {
1327 r += store_hwe(hw, hwe);