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,
110 /* 3PAR / Primera / Alletra 9000 */
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,
228 /* Nimble Storage / HPE Alletra 6000 */
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,
362 /* SC Series, formerly Compellent */
363 .vendor = "COMPELNT",
364 .product = "Compellent Vol",
365 .pgpolicy = GROUP_BY_PRIO,
366 .pgfailback = -FAILBACK_IMMEDIATE,
367 .no_path_retry = NO_PATH_RETRY_QUEUE,
373 .bl_product = "Universal Xport",
374 .pgpolicy = GROUP_BY_PRIO,
375 .checker_name = RDAC,
376 .features = "2 pg_init_retries 50",
377 .hwhandler = "1 rdac",
378 .prio_name = PRIO_RDAC,
379 .pgfailback = -FAILBACK_IMMEDIATE,
383 /* EMC PowerMax NVMe */
385 .product = "^EMC PowerMax_",
386 .pgpolicy = MULTIBUS,
391 .product = "PowerStore",
392 .pgpolicy = GROUP_BY_PRIO,
393 .prio_name = PRIO_ALUA,
394 .hwhandler = "1 alua",
395 .pgfailback = -FAILBACK_IMMEDIATE,
403 .pgpolicy = GROUP_BY_PRIO,
404 .prio_name = PRIO_ALUA,
405 .hwhandler = "1 alua",
406 .pgfailback = -FAILBACK_IMMEDIATE,
412 /* CentricStor Virtual Tape */
414 .product = "CentricStor",
415 .pgpolicy = GROUP_BY_SERIAL,
420 .product = "ETERNUS_DX(H|L|M|400|8000)",
421 .pgpolicy = GROUP_BY_PRIO,
422 .pgfailback = -FAILBACK_IMMEDIATE,
424 .prio_name = PRIO_ALUA,
428 .vendor = "(EUROLOGC|EuroLogc)",
430 .pgpolicy = MULTIBUS,
433 /* ETERNUS 2000, 3000 and 4000 */
435 .product = "E[234]000",
436 .pgpolicy = GROUP_BY_PRIO,
437 .pgfailback = -FAILBACK_IMMEDIATE,
439 .prio_name = PRIO_ALUA,
442 /* ETERNUS 6000 and 8000 */
444 .product = "E[68]000",
445 .pgpolicy = MULTIBUS,
451 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
454 .product = "ETERNUS_AHB",
455 .bl_product = "Universal Xport",
456 .pgpolicy = GROUP_BY_PRIO,
457 .checker_name = RDAC,
458 .features = "2 pg_init_retries 50",
459 .hwhandler = "1 rdac",
460 .prio_name = PRIO_RDAC,
461 .pgfailback = -FAILBACK_IMMEDIATE,
467 * Maintainer: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
470 /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
471 .vendor = "(HITACHI|HP)",
473 .pgpolicy = MULTIBUS,
476 /* AMS other than AMS 2000 */
479 .no_path_retry = NO_PATH_RETRY_QUEUE,
480 .pgpolicy = GROUP_BY_PRIO,
481 .pgfailback = -FAILBACK_IMMEDIATE,
482 .prio_name = PRIO_HDS,
485 /* AMS 2000 and HUS 100 families */
487 .product = "^DF600F",
488 .pgpolicy = MULTIBUS,
496 .product = "ProFibre 4000R",
497 .pgpolicy = MULTIBUS,
500 /* DS4300 / FAStT600 */
502 .product = "^1722-600",
503 .bl_product = "Universal Xport",
504 .pgpolicy = GROUP_BY_PRIO,
505 .checker_name = RDAC,
506 .features = "2 pg_init_retries 50",
507 .hwhandler = "1 rdac",
508 .prio_name = PRIO_RDAC,
509 .pgfailback = -FAILBACK_IMMEDIATE,
513 /* DS4100 / FAStT100 */
516 .bl_product = "Universal Xport",
517 .pgpolicy = GROUP_BY_PRIO,
518 .checker_name = RDAC,
519 .features = "2 pg_init_retries 50",
520 .hwhandler = "1 rdac",
521 .prio_name = PRIO_RDAC,
522 .pgfailback = -FAILBACK_IMMEDIATE,
526 /* DS3000 / DS3200 / DS3300 / DS3400 / Boot DS */
529 .bl_product = "Universal Xport",
530 .pgpolicy = GROUP_BY_PRIO,
531 .checker_name = RDAC,
532 .features = "2 pg_init_retries 50",
533 .hwhandler = "1 rdac",
534 .prio_name = PRIO_RDAC,
535 .pgfailback = -FAILBACK_IMMEDIATE,
539 /* DS4400 / DS4500 / FAStT700 / FAStT900 */
542 .bl_product = "Universal Xport",
543 .pgpolicy = GROUP_BY_PRIO,
544 .checker_name = RDAC,
545 .features = "2 pg_init_retries 50",
546 .hwhandler = "1 rdac",
547 .prio_name = PRIO_RDAC,
548 .pgfailback = -FAILBACK_IMMEDIATE,
552 /* DS3500 / DS3512 / DS3524 */
555 .bl_product = "Universal Xport",
556 .pgpolicy = GROUP_BY_PRIO,
557 .checker_name = RDAC,
558 .features = "2 pg_init_retries 50",
559 .hwhandler = "1 rdac",
560 .prio_name = PRIO_RDAC,
561 .pgfailback = -FAILBACK_IMMEDIATE,
568 .bl_product = "Universal Xport",
569 .pgpolicy = GROUP_BY_PRIO,
570 .checker_name = RDAC,
571 .features = "2 pg_init_retries 50",
572 .hwhandler = "1 rdac",
573 .prio_name = PRIO_RDAC,
574 .pgfailback = -FAILBACK_IMMEDIATE,
578 /* DS3950 / DS4200 / DS4700 / DS5020 */
581 .bl_product = "Universal Xport",
582 .pgpolicy = GROUP_BY_PRIO,
583 .checker_name = RDAC,
584 .features = "2 pg_init_retries 50",
585 .hwhandler = "1 rdac",
586 .prio_name = PRIO_RDAC,
587 .pgfailback = -FAILBACK_IMMEDIATE,
594 .bl_product = "Universal Xport",
595 .pgpolicy = GROUP_BY_PRIO,
596 .checker_name = RDAC,
597 .features = "2 pg_init_retries 50",
598 .hwhandler = "1 rdac",
599 .prio_name = PRIO_RDAC,
600 .pgfailback = -FAILBACK_IMMEDIATE,
604 /* DS5000 / DS5100 / DS5300 / DCS3700 */
607 .bl_product = "Universal Xport",
608 .pgpolicy = GROUP_BY_PRIO,
609 .checker_name = RDAC,
610 .features = "2 pg_init_retries 50",
611 .hwhandler = "1 rdac",
612 .prio_name = PRIO_RDAC,
613 .pgfailback = -FAILBACK_IMMEDIATE,
617 /* Netfinity Fibre Channel RAID Controller Unit */
620 .bl_product = "Universal Xport",
621 .pgpolicy = GROUP_BY_PRIO,
622 .checker_name = RDAC,
623 .features = "2 pg_init_retries 50",
624 .hwhandler = "1 rdac",
625 .prio_name = PRIO_RDAC,
626 .pgfailback = -FAILBACK_IMMEDIATE,
630 /* FAStT200 and FAStT500 */
632 .product = "^(3542|3552)",
633 .bl_product = "Universal Xport",
634 .pgpolicy = GROUP_BY_PRIO,
635 .checker_name = RDAC,
636 .features = "2 pg_init_retries 50",
637 .hwhandler = "1 rdac",
638 .prio_name = PRIO_RDAC,
639 .pgfailback = -FAILBACK_IMMEDIATE,
643 /* Enterprise Storage Server(ESS) / Shark family */
646 .no_path_retry = NO_PATH_RETRY_QUEUE,
647 .pgpolicy = MULTIBUS,
650 /* DS6000 / DS6800 */
652 .product = "^1750500",
653 .no_path_retry = NO_PATH_RETRY_QUEUE,
654 .pgpolicy = GROUP_BY_PRIO,
655 .pgfailback = -FAILBACK_IMMEDIATE,
656 .prio_name = PRIO_ALUA,
661 .product = "^2107900",
662 .no_path_retry = NO_PATH_RETRY_QUEUE,
663 .pgpolicy = GROUP_BY_PRIO,
664 .pgfailback = -FAILBACK_IMMEDIATE,
667 // Storwize V5000 and V7000 lines / SAN Volume Controller (SVC) / Flex System V7000 /
668 // FlashSystem V840/V9000/5000/5100/5200/7200/9100/9200/9200R
671 .no_path_retry = NO_PATH_RETRY_QUEUE,
672 .pgpolicy = GROUP_BY_PRIO,
673 .pgfailback = -FAILBACK_IMMEDIATE,
674 .prio_name = PRIO_ALUA,
679 .product = "S/390 DASD ECKD",
680 .bl_product = "S/390",
681 .uid_attribute = "ID_UID",
682 .no_path_retry = NO_PATH_RETRY_QUEUE,
683 .pgpolicy = MULTIBUS,
684 .checker_name = DIRECTIO,
689 .product = "S/390 DASD FBA",
690 .bl_product = "S/390",
691 .uid_attribute = "ID_UID",
692 .no_path_retry = NO_PATH_RETRY_QUEUE,
693 .pgpolicy = MULTIBUS,
694 .checker_name = DIRECTIO,
700 .no_path_retry = NO_PATH_RETRY_QUEUE,
701 .hwhandler = "1 alua",
702 .pgpolicy = GROUP_BY_PRIO,
703 .pgfailback = -FAILBACK_IMMEDIATE,
704 .prio_name = PRIO_ALUA,
707 /* SAS RAID Controller Module (RSSM) */
709 .product = "1820N00",
710 .pgpolicy = GROUP_BY_PRIO,
711 .pgfailback = -FAILBACK_IMMEDIATE,
712 .no_path_retry = NO_PATH_RETRY_QUEUE,
713 .prio_name = PRIO_ALUA,
716 /* XIV Storage System / FlashSystem A9000/A9000R */
717 .vendor = "(XIV|IBM)",
718 .product = "(NEXTRA|2810XIV)",
719 .no_path_retry = NO_PATH_RETRY_QUEUE,
720 .pgpolicy = GROUP_BY_PRIO,
724 /* TMS RamSan / FlashSystem 710/720/810/820/840/900 */
725 .vendor = "(TMS|IBM)",
726 .product = "(RamSan|FlashSystem)",
727 .pgpolicy = MULTIBUS,
730 /* (DDN) DCS9900, SONAS 2851-DR1 */
732 .product = "^(DCS9900|2851)",
733 .pgpolicy = GROUP_BY_PRIO,
734 .pgfailback = -FAILBACK_IMMEDIATE,
735 .prio_name = PRIO_ALUA,
739 * IBM Power Virtual SCSI Devices
741 * Maintainer: Brian King <brking@linux.vnet.ibm.com>
747 .pgpolicy = MULTIBUS,
748 .no_path_retry = (300 / DEFAULT_CHECKINT),
753 .product = "3303[ ]+NVDISK",
754 .no_path_retry = (300 / DEFAULT_CHECKINT),
760 .hwhandler = "1 alua",
761 .pgpolicy = GROUP_BY_PRIO,
762 .pgfailback = -FAILBACK_IMMEDIATE,
763 .no_path_retry = (300 / DEFAULT_CHECKINT),
764 .prio_name = PRIO_ALUA,
773 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
776 .product = "DE_Series",
777 .bl_product = "Universal Xport",
778 .pgpolicy = GROUP_BY_PRIO,
779 .checker_name = RDAC,
780 .features = "2 pg_init_retries 50",
781 .hwhandler = "1 rdac",
782 .prio_name = PRIO_RDAC,
783 .pgfailback = -FAILBACK_IMMEDIATE,
793 * Maintainer: Martin George <marting@netapp.com>
797 .features = "2 pg_init_retries 50",
798 .no_path_retry = NO_PATH_RETRY_QUEUE,
799 .pgpolicy = GROUP_BY_PRIO,
800 .pgfailback = -FAILBACK_IMMEDIATE,
801 .flush_on_last_del = FLUSH_ENABLED,
802 .dev_loss = MAX_DEV_LOSS_TMO,
803 .prio_name = PRIO_ONTAP,
804 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
808 * SANtricity(RDAC) family
810 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
812 .vendor = "(NETAPP|LSI|ENGENIO)",
813 .product = "INF-01-00",
814 .bl_product = "Universal Xport",
815 .pgpolicy = GROUP_BY_PRIO,
816 .checker_name = RDAC,
817 .features = "2 pg_init_retries 50",
818 .hwhandler = "1 rdac",
819 .prio_name = PRIO_RDAC,
820 .pgfailback = -FAILBACK_IMMEDIATE,
827 * Maintainer: PJ Waskiewicz <pj.waskiewicz@netapp.com>
829 .vendor = "SolidFir",
830 .product = "SSD SAN",
831 .pgpolicy = MULTIBUS,
836 * NVMe-FC namespace devices: MULTIBUS, queueing preferred
838 * The hwtable is searched backwards, so place this after "Generic NVMe"
841 .product = "^NetApp ONTAP Controller",
842 .pgpolicy = MULTIBUS,
843 .no_path_retry = NO_PATH_RETRY_QUEUE,
851 .product = "DISK ARRAY",
852 .hwhandler = "1 alua",
853 .pgpolicy = GROUP_BY_PRIO,
854 .pgfailback = -FAILBACK_IMMEDIATE,
855 .prio_name = PRIO_ALUA,
861 * Pillar Data / Oracle FS
863 * Maintainer: Srinivasan Ramani <srinivas.ramani@oracle.com>
869 .pgpolicy = GROUP_BY_PRIO,
870 .pgfailback = -FAILBACK_IMMEDIATE,
871 .prio_name = PRIO_ALUA,
876 .product = "^Oracle FS",
877 .pgpolicy = GROUP_BY_PRIO,
878 .pgfailback = -FAILBACK_IMMEDIATE,
879 .prio_name = PRIO_ALUA,
881 /* Sun - StorageTek */
883 /* B210, B220, B240 and B280 */
885 .product = "BladeCtlr",
886 .bl_product = "Universal Xport",
887 .pgpolicy = GROUP_BY_PRIO,
888 .checker_name = RDAC,
889 .features = "2 pg_init_retries 50",
890 .hwhandler = "1 rdac",
891 .prio_name = PRIO_RDAC,
892 .pgfailback = -FAILBACK_IMMEDIATE,
896 /* 9176, D173, D178, D210, D220, D240 and D280 */
898 .product = "OPENstorage",
899 .bl_product = "Universal Xport",
900 .pgpolicy = GROUP_BY_PRIO,
901 .checker_name = RDAC,
902 .features = "2 pg_init_retries 50",
903 .hwhandler = "1 rdac",
904 .prio_name = PRIO_RDAC,
905 .pgfailback = -FAILBACK_IMMEDIATE,
911 .product = "FLEXLINE 380",
912 .bl_product = "Universal Xport",
913 .pgpolicy = GROUP_BY_PRIO,
914 .checker_name = RDAC,
915 .features = "2 pg_init_retries 50",
916 .hwhandler = "1 rdac",
917 .prio_name = PRIO_RDAC,
918 .pgfailback = -FAILBACK_IMMEDIATE,
922 /* (Dot Hill) 3120, 3310, 3320, 3510 and 3511 */
924 .product = "StorEdge 3",
925 .pgpolicy = MULTIBUS,
930 .product = "STK6580_6780",
931 .bl_product = "Universal Xport",
932 .pgpolicy = GROUP_BY_PRIO,
933 .checker_name = RDAC,
934 .features = "2 pg_init_retries 50",
935 .hwhandler = "1 rdac",
936 .prio_name = PRIO_RDAC,
937 .pgfailback = -FAILBACK_IMMEDIATE,
943 .product = "CSM[12]00_R",
944 .bl_product = "Universal Xport",
945 .pgpolicy = GROUP_BY_PRIO,
946 .checker_name = RDAC,
947 .features = "2 pg_init_retries 50",
948 .hwhandler = "1 rdac",
949 .prio_name = PRIO_RDAC,
950 .pgfailback = -FAILBACK_IMMEDIATE,
954 /* 2500 / 2510 / 2530 / 2540 */
956 .product = "LCSM100_[IEFS]",
957 .bl_product = "Universal Xport",
958 .pgpolicy = GROUP_BY_PRIO,
959 .checker_name = RDAC,
960 .features = "2 pg_init_retries 50",
961 .hwhandler = "1 rdac",
962 .prio_name = PRIO_RDAC,
963 .pgfailback = -FAILBACK_IMMEDIATE,
969 .product = "SUN_6180",
970 .bl_product = "Universal Xport",
971 .pgpolicy = GROUP_BY_PRIO,
972 .checker_name = RDAC,
973 .features = "2 pg_init_retries 50",
974 .hwhandler = "1 rdac",
975 .prio_name = PRIO_RDAC,
976 .pgfailback = -FAILBACK_IMMEDIATE,
982 .product = "ArrayStorage",
983 .bl_product = "Universal Xport",
984 .pgpolicy = GROUP_BY_PRIO,
985 .checker_name = RDAC,
986 .features = "2 pg_init_retries 50",
987 .hwhandler = "1 rdac",
988 .prio_name = PRIO_RDAC,
989 .pgfailback = -FAILBACK_IMMEDIATE,
993 /* ZFS Storage Appliances */
995 .product = "(Sun Storage|ZFS Storage|COMSTAR)",
996 .pgpolicy = GROUP_BY_PRIO,
997 .pgfailback = -FAILBACK_IMMEDIATE,
998 .prio_name = PRIO_ALUA,
1004 * Maintainer: Bart Brooks <bartb@pivot3.com>
1009 .product = "RAIGE VOLUME",
1010 .no_path_retry = NO_PATH_RETRY_QUEUE,
1011 .pgpolicy = MULTIBUS,
1014 /* NexGen / vSTAC */
1015 .vendor = "(NexGen|Pivot3)",
1016 .product = "(TierStore|vSTAC)",
1017 .pgpolicy = GROUP_BY_PRIO,
1018 .pgfailback = -FAILBACK_IMMEDIATE,
1019 .prio_name = PRIO_ALUA,
1020 .no_path_retry = NO_PATH_RETRY_QUEUE,
1027 .vendor = "(Intel|INTEL)",
1028 .product = "Multi-Flex",
1029 .bl_product = "VTrak V-LUN",
1030 .hwhandler = "1 alua",
1031 .pgpolicy = GROUP_BY_PRIO,
1032 .pgfailback = -FAILBACK_IMMEDIATE,
1033 .no_path_retry = NO_PATH_RETRY_QUEUE,
1034 .prio_name = PRIO_ALUA,
1040 /* Linux-IO Target */
1041 .vendor = "(LIO-ORG|SUSE)",
1043 .hwhandler = "1 alua",
1044 .pgpolicy = GROUP_BY_PRIO,
1045 .pgfailback = -FAILBACK_IMMEDIATE,
1046 .no_path_retry = 12,
1047 .prio_name = PRIO_ALUA,
1054 .vendor = "DataCore",
1055 .product = "SANmelody",
1056 .pgpolicy = GROUP_BY_PRIO,
1057 .pgfailback = -FAILBACK_IMMEDIATE,
1058 .no_path_retry = NO_PATH_RETRY_QUEUE,
1059 .prio_name = PRIO_ALUA,
1063 .vendor = "DataCore",
1064 .product = "Virtual Disk",
1065 .pgpolicy = GROUP_BY_PRIO,
1066 .pgfailback = -FAILBACK_IMMEDIATE,
1067 .no_path_retry = NO_PATH_RETRY_QUEUE,
1068 .prio_name = PRIO_ALUA,
1076 .product = "FlashArray",
1077 .pgpolicy = GROUP_BY_PRIO,
1078 .pgfailback = -FAILBACK_IMMEDIATE,
1079 .hwhandler = "1 alua",
1080 .prio_name = PRIO_ALUA,
1082 .max_sectors_kb = 4096,
1088 /* OceanStor V3-V6 */
1089 // This config works with multibus and ALUA
1090 // ALUA is required by HyperMetro
1093 .pgpolicy = GROUP_BY_PRIO,
1094 .pgfailback = -FAILBACK_IMMEDIATE,
1095 .no_path_retry = 15,
1104 .pgpolicy = MULTIBUS,
1109 * Maintainer: Arnon Yaari <arnony@infinidat.com>
1113 .vendor = "NFINIDAT",
1114 .product = "InfiniBox",
1115 .pgpolicy = GROUP_BY_PRIO,
1117 .prio_name = PRIO_ALUA,
1118 .selector = "round-robin 0",
1119 .rr_weight = RR_WEIGHT_PRIO,
1120 .no_path_retry = NO_PATH_RETRY_FAIL,
1123 .flush_on_last_del = FLUSH_ENABLED,
1134 .pgpolicy = MULTIBUS,
1143 .product = "NXS-B0",
1144 .pgpolicy = GROUP_BY_PRIO,
1145 .pgfailback = -FAILBACK_IMMEDIATE,
1146 .prio_name = PRIO_ALUA,
1147 .no_path_retry = 15,
1150 /* SATABeast / SATABoy */
1153 .pgpolicy = GROUP_BY_PRIO,
1154 .pgfailback = -FAILBACK_IMMEDIATE,
1155 .prio_name = PRIO_ALUA,
1156 .no_path_retry = 15,
1161 .product = "(NestOS|NST5000)",
1162 .hwhandler = "1 alua",
1163 .pgpolicy = GROUP_BY_PRIO,
1164 .pgfailback = -FAILBACK_IMMEDIATE,
1165 .prio_name = PRIO_ALUA,
1166 .no_path_retry = 30,
1168 /* Violin Systems */
1170 /* 3000 / 6000 Series */
1172 .product = "SAN ARRAY$",
1173 .pgpolicy = GROUP_BY_SERIAL,
1174 .no_path_retry = 30,
1177 /* 3000 / 6000 Series - ALUA mode */
1179 .product = "SAN ARRAY ALUA",
1180 .hwhandler = "1 alua",
1181 .pgpolicy = GROUP_BY_PRIO,
1182 .pgfailback = -FAILBACK_IMMEDIATE,
1183 .prio_name = PRIO_ALUA,
1184 .no_path_retry = 30,
1187 /* FSP 7000 family */
1189 .product = "CONCERTO ARRAY",
1190 .pgpolicy = MULTIBUS,
1191 .no_path_retry = 30,
1195 /* Intelligent Storage Elements family */
1196 .vendor = "(XIOTECH|XIOtech)",
1198 .pgpolicy = MULTIBUS,
1199 .no_path_retry = 12,
1202 /* iglu blaze family */
1203 .vendor = "(XIOTECH|XIOtech)",
1204 .product = "IGLU DISK",
1205 .pgpolicy = MULTIBUS,
1206 .no_path_retry = 30,
1209 /* Magnitude family */
1210 .vendor = "(XIOTECH|XIOtech)",
1211 .product = "Magnitude",
1212 .pgpolicy = MULTIBUS,
1213 .no_path_retry = 30,
1220 .pgpolicy = MULTIBUS,
1221 .no_path_retry = 30,
1224 * Promise Technology
1228 .vendor = "Promise",
1230 .bl_product = "VTrak V-LUN",
1231 .hwhandler = "1 alua",
1232 .pgpolicy = GROUP_BY_PRIO,
1233 .pgfailback = -FAILBACK_IMMEDIATE,
1234 .prio_name = PRIO_ALUA,
1235 .no_path_retry = 30,
1239 .vendor = "Promise",
1241 .bl_product = "Vess V-LUN",
1242 .hwhandler = "1 alua",
1243 .pgpolicy = GROUP_BY_PRIO,
1244 .pgfailback = -FAILBACK_IMMEDIATE,
1245 .prio_name = PRIO_ALUA,
1246 .no_path_retry = 30,
1249 * Infortrend Technology
1252 /* EonStor / ESVA */
1255 .pgpolicy = GROUP_BY_PRIO,
1256 .pgfailback = -FAILBACK_IMMEDIATE,
1257 .prio_name = PRIO_ALUA,
1258 .no_path_retry = 30,
1261 * Seagate Technology (Dot Hill Systems)
1265 .vendor = "DotHill",
1266 .product = "SANnet",
1267 .pgpolicy = MULTIBUS,
1268 .no_path_retry = 30,
1271 /* R/Evolution family */
1272 .vendor = "DotHill",
1274 .pgpolicy = GROUP_BY_PRIO,
1275 .pgfailback = -FAILBACK_IMMEDIATE,
1276 .prio_name = PRIO_ALUA,
1277 .no_path_retry = 30,
1280 /* AssuredSAN family */
1281 .vendor = "DotHill",
1283 .pgpolicy = GROUP_BY_PRIO,
1284 .pgfailback = -FAILBACK_IMMEDIATE,
1285 .prio_name = PRIO_ALUA,
1286 .no_path_retry = 30,
1294 .product = "NeoSapphire",
1295 .pgpolicy = MULTIBUS,
1296 .no_path_retry = 30,
1302 /* AS5300/AS5500 G2 */
1305 .pgpolicy = GROUP_BY_PRIO,
1306 .pgfailback = -FAILBACK_IMMEDIATE,
1307 .prio_name = PRIO_ALUA,
1310 * MacroSAN Technologies
1314 .vendor = "MacroSAN",
1316 .pgpolicy = GROUP_BY_PRIO,
1317 .pgfailback = -FAILBACK_IMMEDIATE,
1318 .prio_name = PRIO_ALUA,
1319 .no_path_retry = 30,
1331 int setup_default_hwtable(vector hw)
1334 struct hwentry * hwe = default_hw;
1336 while (hwe->vendor) {
1337 r += store_hwe(hw, hwe);