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,
395 /* CentricStor Virtual Tape */
397 .product = "CentricStor",
398 .pgpolicy = GROUP_BY_SERIAL,
403 .product = "ETERNUS_DX(H|L|M|400|8000)",
404 .pgpolicy = GROUP_BY_PRIO,
405 .pgfailback = -FAILBACK_IMMEDIATE,
407 .prio_name = PRIO_ALUA,
411 .vendor = "(EUROLOGC|EuroLogc)",
413 .pgpolicy = MULTIBUS,
416 /* ETERNUS 2000, 3000 and 4000 */
418 .product = "E[234]000",
419 .pgpolicy = GROUP_BY_PRIO,
420 .pgfailback = -FAILBACK_IMMEDIATE,
422 .prio_name = PRIO_ALUA,
425 /* ETERNUS 6000 and 8000 */
427 .product = "E[68]000",
428 .pgpolicy = MULTIBUS,
434 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
437 .product = "ETERNUS_AHB",
438 .bl_product = "Universal Xport",
439 .pgpolicy = GROUP_BY_PRIO,
440 .checker_name = RDAC,
441 .features = "2 pg_init_retries 50",
442 .hwhandler = "1 rdac",
443 .prio_name = PRIO_RDAC,
444 .pgfailback = -FAILBACK_IMMEDIATE,
450 * Maintainer: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
453 /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
454 .vendor = "(HITACHI|HP)",
456 .pgpolicy = MULTIBUS,
459 /* AMS other than AMS 2000 */
462 .no_path_retry = NO_PATH_RETRY_QUEUE,
463 .pgpolicy = GROUP_BY_PRIO,
464 .pgfailback = -FAILBACK_IMMEDIATE,
465 .prio_name = PRIO_HDS,
468 /* AMS 2000 and HUS 100 families */
470 .product = "^DF600F",
471 .pgpolicy = MULTIBUS,
476 * Maintainer: Hannes Reinecke <hare@suse.de>
481 .product = "ProFibre 4000R",
482 .pgpolicy = MULTIBUS,
485 /* DS4300 / FAStT600 */
487 .product = "^1722-600",
488 .bl_product = "Universal Xport",
489 .pgpolicy = GROUP_BY_PRIO,
490 .checker_name = RDAC,
491 .features = "2 pg_init_retries 50",
492 .hwhandler = "1 rdac",
493 .prio_name = PRIO_RDAC,
494 .pgfailback = -FAILBACK_IMMEDIATE,
498 /* DS4100 / FAStT100 */
501 .bl_product = "Universal Xport",
502 .pgpolicy = GROUP_BY_PRIO,
503 .checker_name = RDAC,
504 .features = "2 pg_init_retries 50",
505 .hwhandler = "1 rdac",
506 .prio_name = PRIO_RDAC,
507 .pgfailback = -FAILBACK_IMMEDIATE,
511 /* DS3000 / DS3200 / DS3300 / DS3400 / Boot DS */
514 .bl_product = "Universal Xport",
515 .pgpolicy = GROUP_BY_PRIO,
516 .checker_name = RDAC,
517 .features = "2 pg_init_retries 50",
518 .hwhandler = "1 rdac",
519 .prio_name = PRIO_RDAC,
520 .pgfailback = -FAILBACK_IMMEDIATE,
524 /* DS4400 / DS4500 / FAStT700 / FAStT900 */
527 .bl_product = "Universal Xport",
528 .pgpolicy = GROUP_BY_PRIO,
529 .checker_name = RDAC,
530 .features = "2 pg_init_retries 50",
531 .hwhandler = "1 rdac",
532 .prio_name = PRIO_RDAC,
533 .pgfailback = -FAILBACK_IMMEDIATE,
537 /* DS3500 / DS3512 / DS3524 */
540 .bl_product = "Universal Xport",
541 .pgpolicy = GROUP_BY_PRIO,
542 .checker_name = RDAC,
543 .features = "2 pg_init_retries 50",
544 .hwhandler = "1 rdac",
545 .prio_name = PRIO_RDAC,
546 .pgfailback = -FAILBACK_IMMEDIATE,
553 .bl_product = "Universal Xport",
554 .pgpolicy = GROUP_BY_PRIO,
555 .checker_name = RDAC,
556 .features = "2 pg_init_retries 50",
557 .hwhandler = "1 rdac",
558 .prio_name = PRIO_RDAC,
559 .pgfailback = -FAILBACK_IMMEDIATE,
563 /* DS3950 / DS4200 / DS4700 / DS5020 */
566 .bl_product = "Universal Xport",
567 .pgpolicy = GROUP_BY_PRIO,
568 .checker_name = RDAC,
569 .features = "2 pg_init_retries 50",
570 .hwhandler = "1 rdac",
571 .prio_name = PRIO_RDAC,
572 .pgfailback = -FAILBACK_IMMEDIATE,
579 .bl_product = "Universal Xport",
580 .pgpolicy = GROUP_BY_PRIO,
581 .checker_name = RDAC,
582 .features = "2 pg_init_retries 50",
583 .hwhandler = "1 rdac",
584 .prio_name = PRIO_RDAC,
585 .pgfailback = -FAILBACK_IMMEDIATE,
589 /* DS5000 / DS5100 / DS5300 / DCS3700 */
592 .bl_product = "Universal Xport",
593 .pgpolicy = GROUP_BY_PRIO,
594 .checker_name = RDAC,
595 .features = "2 pg_init_retries 50",
596 .hwhandler = "1 rdac",
597 .prio_name = PRIO_RDAC,
598 .pgfailback = -FAILBACK_IMMEDIATE,
602 /* Netfinity Fibre Channel RAID Controller Unit */
605 .bl_product = "Universal Xport",
606 .pgpolicy = GROUP_BY_PRIO,
607 .checker_name = RDAC,
608 .features = "2 pg_init_retries 50",
609 .hwhandler = "1 rdac",
610 .prio_name = PRIO_RDAC,
611 .pgfailback = -FAILBACK_IMMEDIATE,
615 /* FAStT200 and FAStT500 */
617 .product = "^(3542|3552)",
618 .bl_product = "Universal Xport",
619 .pgpolicy = GROUP_BY_PRIO,
620 .checker_name = RDAC,
621 .features = "2 pg_init_retries 50",
622 .hwhandler = "1 rdac",
623 .prio_name = PRIO_RDAC,
624 .pgfailback = -FAILBACK_IMMEDIATE,
628 /* Enterprise Storage Server(ESS) / Shark family */
631 .no_path_retry = NO_PATH_RETRY_QUEUE,
632 .pgpolicy = MULTIBUS,
635 /* DS6000 / DS6800 */
637 .product = "^1750500",
638 .no_path_retry = NO_PATH_RETRY_QUEUE,
639 .pgpolicy = GROUP_BY_PRIO,
640 .pgfailback = -FAILBACK_IMMEDIATE,
641 .prio_name = PRIO_ALUA,
646 .product = "^2107900",
647 .no_path_retry = NO_PATH_RETRY_QUEUE,
648 .pgpolicy = MULTIBUS,
651 /* Storwize family / SAN Volume Controller / Flex System V7000 / FlashSystem V840/V9000/9100 */
654 .no_path_retry = NO_PATH_RETRY_QUEUE,
655 .pgpolicy = GROUP_BY_PRIO,
656 .pgfailback = -FAILBACK_IMMEDIATE,
657 .prio_name = PRIO_ALUA,
662 .product = "S/390 DASD ECKD",
663 .bl_product = "S/390",
664 .uid_attribute = "ID_UID",
665 .no_path_retry = NO_PATH_RETRY_QUEUE,
666 .pgpolicy = MULTIBUS,
667 .checker_name = DIRECTIO,
672 .product = "S/390 DASD FBA",
673 .bl_product = "S/390",
674 .uid_attribute = "ID_UID",
675 .no_path_retry = NO_PATH_RETRY_QUEUE,
676 .pgpolicy = MULTIBUS,
677 .checker_name = DIRECTIO,
683 .no_path_retry = NO_PATH_RETRY_QUEUE,
684 .hwhandler = "1 alua",
685 .pgpolicy = GROUP_BY_PRIO,
686 .pgfailback = -FAILBACK_IMMEDIATE,
687 .prio_name = PRIO_ALUA,
690 /* SAS RAID Controller Module (RSSM) */
692 .product = "1820N00",
693 .pgpolicy = GROUP_BY_PRIO,
694 .pgfailback = -FAILBACK_IMMEDIATE,
695 .no_path_retry = NO_PATH_RETRY_QUEUE,
696 .prio_name = PRIO_ALUA,
699 /* XIV Storage System / FlashSystem A9000/A9000R */
700 .vendor = "(XIV|IBM)",
701 .product = "(NEXTRA|2810XIV)",
702 .no_path_retry = NO_PATH_RETRY_QUEUE,
703 .pgpolicy = MULTIBUS,
706 /* TMS RamSan / FlashSystem 710/720/810/820/840/900 */
707 .vendor = "(TMS|IBM)",
708 .product = "(RamSan|FlashSystem)",
709 .pgpolicy = MULTIBUS,
712 /* (DDN) DCS9900, SONAS 2851-DR1 */
714 .product = "^(DCS9900|2851)",
715 .pgpolicy = GROUP_BY_PRIO,
716 .pgfailback = -FAILBACK_IMMEDIATE,
717 .prio_name = PRIO_ALUA,
721 * IBM Power Virtual SCSI Devices
723 * Maintainer: Brian King <brking@linux.vnet.ibm.com>
729 .pgpolicy = MULTIBUS,
730 .no_path_retry = (300 / DEFAULT_CHECKINT),
735 .product = "3303[ ]+NVDISK",
736 .no_path_retry = (300 / DEFAULT_CHECKINT),
742 .hwhandler = "1 alua",
743 .pgpolicy = GROUP_BY_PRIO,
744 .pgfailback = -FAILBACK_IMMEDIATE,
745 .no_path_retry = (300 / DEFAULT_CHECKINT),
746 .prio_name = PRIO_ALUA,
755 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
758 .product = "DE_Series",
759 .bl_product = "Universal Xport",
760 .pgpolicy = GROUP_BY_PRIO,
761 .checker_name = RDAC,
762 .features = "2 pg_init_retries 50",
763 .hwhandler = "1 rdac",
764 .prio_name = PRIO_RDAC,
765 .pgfailback = -FAILBACK_IMMEDIATE,
775 * Maintainer: Martin George <marting@netapp.com>
779 .features = "2 pg_init_retries 50",
780 .no_path_retry = NO_PATH_RETRY_QUEUE,
781 .pgpolicy = GROUP_BY_PRIO,
782 .pgfailback = -FAILBACK_IMMEDIATE,
783 .flush_on_last_del = FLUSH_ENABLED,
784 .dev_loss = MAX_DEV_LOSS_TMO,
785 .prio_name = PRIO_ONTAP,
786 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
790 * SANtricity(RDAC) family
792 * Maintainer: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
794 .vendor = "(NETAPP|LSI|ENGENIO)",
795 .product = "INF-01-00",
796 .bl_product = "Universal Xport",
797 .pgpolicy = GROUP_BY_PRIO,
798 .checker_name = RDAC,
799 .features = "2 pg_init_retries 50",
800 .hwhandler = "1 rdac",
801 .prio_name = PRIO_RDAC,
802 .pgfailback = -FAILBACK_IMMEDIATE,
809 * Maintainer: PJ Waskiewicz <pj.waskiewicz@netapp.com>
811 .vendor = "SolidFir",
812 .product = "SSD SAN",
813 .pgpolicy = MULTIBUS,
818 * NVMe-FC namespace devices: MULTIBUS, queueing preferred
820 * The hwtable is searched backwards, so place this after "Generic NVMe"
823 .product = "^NetApp ONTAP Controller",
824 .pgpolicy = MULTIBUS,
825 .no_path_retry = NO_PATH_RETRY_QUEUE,
833 .product = "DISK ARRAY",
834 .hwhandler = "1 alua",
835 .pgpolicy = GROUP_BY_PRIO,
836 .pgfailback = -FAILBACK_IMMEDIATE,
837 .prio_name = PRIO_ALUA,
843 * Pillar Data / Oracle FS
845 * Maintainer: Srinivasan Ramani <srinivas.ramani@oracle.com>
851 .pgpolicy = GROUP_BY_PRIO,
852 .pgfailback = -FAILBACK_IMMEDIATE,
853 .prio_name = PRIO_ALUA,
858 .product = "^Oracle FS",
859 .pgpolicy = GROUP_BY_PRIO,
860 .pgfailback = -FAILBACK_IMMEDIATE,
861 .prio_name = PRIO_ALUA,
863 /* Sun - StorageTek */
865 /* B210, B220, B240 and B280 */
867 .product = "BladeCtlr",
868 .bl_product = "Universal Xport",
869 .pgpolicy = GROUP_BY_PRIO,
870 .checker_name = RDAC,
871 .features = "2 pg_init_retries 50",
872 .hwhandler = "1 rdac",
873 .prio_name = PRIO_RDAC,
874 .pgfailback = -FAILBACK_IMMEDIATE,
878 /* 9176, D173, D178, D210, D220, D240 and D280 */
880 .product = "OPENstorage",
881 .bl_product = "Universal Xport",
882 .pgpolicy = GROUP_BY_PRIO,
883 .checker_name = RDAC,
884 .features = "2 pg_init_retries 50",
885 .hwhandler = "1 rdac",
886 .prio_name = PRIO_RDAC,
887 .pgfailback = -FAILBACK_IMMEDIATE,
893 .product = "FLEXLINE 380",
894 .bl_product = "Universal Xport",
895 .pgpolicy = GROUP_BY_PRIO,
896 .checker_name = RDAC,
897 .features = "2 pg_init_retries 50",
898 .hwhandler = "1 rdac",
899 .prio_name = PRIO_RDAC,
900 .pgfailback = -FAILBACK_IMMEDIATE,
904 /* (Dot Hill) 3120, 3310, 3320, 3510 and 3511 */
906 .product = "StorEdge 3",
907 .pgpolicy = MULTIBUS,
912 .product = "STK6580_6780",
913 .bl_product = "Universal Xport",
914 .pgpolicy = GROUP_BY_PRIO,
915 .checker_name = RDAC,
916 .features = "2 pg_init_retries 50",
917 .hwhandler = "1 rdac",
918 .prio_name = PRIO_RDAC,
919 .pgfailback = -FAILBACK_IMMEDIATE,
925 .product = "CSM[12]00_R",
926 .bl_product = "Universal Xport",
927 .pgpolicy = GROUP_BY_PRIO,
928 .checker_name = RDAC,
929 .features = "2 pg_init_retries 50",
930 .hwhandler = "1 rdac",
931 .prio_name = PRIO_RDAC,
932 .pgfailback = -FAILBACK_IMMEDIATE,
936 /* 2500 / 2510 / 2530 / 2540 */
938 .product = "LCSM100_[IEFS]",
939 .bl_product = "Universal Xport",
940 .pgpolicy = GROUP_BY_PRIO,
941 .checker_name = RDAC,
942 .features = "2 pg_init_retries 50",
943 .hwhandler = "1 rdac",
944 .prio_name = PRIO_RDAC,
945 .pgfailback = -FAILBACK_IMMEDIATE,
951 .product = "SUN_6180",
952 .bl_product = "Universal Xport",
953 .pgpolicy = GROUP_BY_PRIO,
954 .checker_name = RDAC,
955 .features = "2 pg_init_retries 50",
956 .hwhandler = "1 rdac",
957 .prio_name = PRIO_RDAC,
958 .pgfailback = -FAILBACK_IMMEDIATE,
964 .product = "ArrayStorage",
965 .bl_product = "Universal Xport",
966 .pgpolicy = GROUP_BY_PRIO,
967 .checker_name = RDAC,
968 .features = "2 pg_init_retries 50",
969 .hwhandler = "1 rdac",
970 .prio_name = PRIO_RDAC,
971 .pgfailback = -FAILBACK_IMMEDIATE,
975 /* ZFS Storage Appliances */
977 .product = "(Sun Storage|ZFS Storage|COMSTAR)",
978 .pgpolicy = GROUP_BY_PRIO,
979 .pgfailback = -FAILBACK_IMMEDIATE,
980 .prio_name = PRIO_ALUA,
986 * Maintainer: Bart Brooks <bartb@pivot3.com>
991 .product = "RAIGE VOLUME",
992 .no_path_retry = NO_PATH_RETRY_QUEUE,
993 .pgpolicy = MULTIBUS,
997 .vendor = "(NexGen|Pivot3)",
998 .product = "(TierStore|vSTAC)",
999 .pgpolicy = GROUP_BY_PRIO,
1000 .pgfailback = -FAILBACK_IMMEDIATE,
1001 .prio_name = PRIO_ALUA,
1002 .no_path_retry = NO_PATH_RETRY_QUEUE,
1009 .vendor = "(Intel|INTEL)",
1010 .product = "Multi-Flex",
1011 .bl_product = "VTrak V-LUN",
1012 .hwhandler = "1 alua",
1013 .pgpolicy = GROUP_BY_PRIO,
1014 .pgfailback = -FAILBACK_IMMEDIATE,
1015 .no_path_retry = NO_PATH_RETRY_QUEUE,
1016 .prio_name = PRIO_ALUA,
1022 /* Linux-IO Target */
1023 .vendor = "(LIO-ORG|SUSE)",
1025 .hwhandler = "1 alua",
1026 .pgpolicy = GROUP_BY_PRIO,
1027 .pgfailback = -FAILBACK_IMMEDIATE,
1028 .no_path_retry = 12,
1029 .prio_name = PRIO_ALUA,
1036 .vendor = "DataCore",
1037 .product = "SANmelody",
1038 .pgpolicy = GROUP_BY_PRIO,
1039 .pgfailback = -FAILBACK_IMMEDIATE,
1040 .no_path_retry = NO_PATH_RETRY_QUEUE,
1041 .prio_name = PRIO_ALUA,
1045 .vendor = "DataCore",
1046 .product = "Virtual Disk",
1047 .pgpolicy = GROUP_BY_PRIO,
1048 .pgfailback = -FAILBACK_IMMEDIATE,
1049 .no_path_retry = NO_PATH_RETRY_QUEUE,
1050 .prio_name = PRIO_ALUA,
1058 .product = "FlashArray",
1059 .pgpolicy = GROUP_BY_PRIO,
1060 .pgfailback = -FAILBACK_IMMEDIATE,
1061 .hwhandler = "1 alua",
1062 .prio_name = PRIO_ALUA,
1064 .max_sectors_kb = 4096,
1073 .pgpolicy = GROUP_BY_PRIO,
1074 .prio_name = PRIO_ALUA,
1083 .pgpolicy = MULTIBUS,
1088 * Maintainer: Arnon Yaari <arnony@infinidat.com>
1092 .vendor = "NFINIDAT",
1093 .product = "InfiniBox",
1094 .pgpolicy = GROUP_BY_PRIO,
1096 .prio_name = PRIO_ALUA,
1097 .selector = "round-robin 0",
1098 .rr_weight = RR_WEIGHT_PRIO,
1099 .no_path_retry = NO_PATH_RETRY_FAIL,
1102 .flush_on_last_del = FLUSH_ENABLED,
1113 .pgpolicy = MULTIBUS,
1121 .product = "NXS-B0",
1122 .pgpolicy = GROUP_BY_PRIO,
1123 .pgfailback = -FAILBACK_IMMEDIATE,
1124 .prio_name = PRIO_ALUA,
1125 .no_path_retry = 15,
1128 /* SATABeast / SATABoy */
1131 .pgpolicy = GROUP_BY_PRIO,
1132 .pgfailback = -FAILBACK_IMMEDIATE,
1133 .prio_name = PRIO_ALUA,
1134 .no_path_retry = 15,
1139 .product = "(NestOS|NST5000)",
1140 .hwhandler = "1 alua",
1141 .pgpolicy = GROUP_BY_PRIO,
1142 .pgfailback = -FAILBACK_IMMEDIATE,
1143 .prio_name = PRIO_ALUA,
1144 .no_path_retry = 30,
1150 /* 3000 / 6000 Series */
1152 .product = "SAN ARRAY$",
1153 .pgpolicy = GROUP_BY_SERIAL,
1154 .no_path_retry = 30,
1157 /* 3000 / 6000 Series - ALUA mode */
1159 .product = "SAN ARRAY ALUA",
1160 .hwhandler = "1 alua",
1161 .pgpolicy = GROUP_BY_PRIO,
1162 .pgfailback = -FAILBACK_IMMEDIATE,
1163 .prio_name = PRIO_ALUA,
1164 .no_path_retry = 30,
1167 /* FSP 7000 family */
1169 .product = "CONCERTO ARRAY",
1170 .pgpolicy = MULTIBUS,
1171 .no_path_retry = 30,
1175 /* Intelligent Storage Elements family */
1176 .vendor = "(XIOTECH|XIOtech)",
1178 .pgpolicy = MULTIBUS,
1179 .no_path_retry = 12,
1182 /* iglu blaze family */
1183 .vendor = "(XIOTECH|XIOtech)",
1184 .product = "IGLU DISK",
1185 .pgpolicy = MULTIBUS,
1186 .no_path_retry = 30,
1189 /* Magnitude family */
1190 .vendor = "(XIOTECH|XIOtech)",
1191 .product = "Magnitude",
1192 .pgpolicy = MULTIBUS,
1193 .no_path_retry = 30,
1196 * Promise Technology
1200 .vendor = "Promise",
1202 .bl_product = "VTrak V-LUN",
1203 .hwhandler = "1 alua",
1204 .pgpolicy = GROUP_BY_PRIO,
1205 .pgfailback = -FAILBACK_IMMEDIATE,
1206 .prio_name = PRIO_ALUA,
1207 .no_path_retry = 30,
1211 .vendor = "Promise",
1213 .bl_product = "Vess V-LUN",
1214 .hwhandler = "1 alua",
1215 .pgpolicy = GROUP_BY_PRIO,
1216 .pgfailback = -FAILBACK_IMMEDIATE,
1217 .prio_name = PRIO_ALUA,
1218 .no_path_retry = 30,
1221 * Infortrend Technology
1224 /* EonStor / ESVA */
1227 .pgpolicy = GROUP_BY_PRIO,
1228 .pgfailback = -FAILBACK_IMMEDIATE,
1229 .prio_name = PRIO_ALUA,
1230 .no_path_retry = 30,
1233 * Seagate Technology (Dot Hill Systems)
1237 .vendor = "DotHill",
1238 .product = "SANnet",
1239 .pgpolicy = MULTIBUS,
1240 .no_path_retry = 30,
1243 /* R/Evolution family */
1244 .vendor = "DotHill",
1246 .pgpolicy = GROUP_BY_PRIO,
1247 .pgfailback = -FAILBACK_IMMEDIATE,
1248 .prio_name = PRIO_ALUA,
1249 .no_path_retry = 30,
1252 /* AssuredSAN family */
1253 .vendor = "DotHill",
1255 .pgpolicy = GROUP_BY_PRIO,
1256 .pgfailback = -FAILBACK_IMMEDIATE,
1257 .prio_name = PRIO_ALUA,
1258 .no_path_retry = 30,
1266 .product = "NeoSapphire",
1267 .pgpolicy = MULTIBUS,
1268 .no_path_retry = 30,
1274 /* AS5300/AS5500 G2 */
1277 .pgpolicy = GROUP_BY_PRIO,
1278 .pgfailback = -FAILBACK_IMMEDIATE,
1279 .prio_name = PRIO_ALUA,
1282 * MacroSAN Technologies
1286 .vendor = "MacroSAN",
1288 .pgpolicy = GROUP_BY_PRIO,
1289 .pgfailback = -FAILBACK_IMMEDIATE,
1290 .prio_name = PRIO_ALUA,
1291 .no_path_retry = 30,
1303 int setup_default_hwtable(vector hw)
1306 struct hwentry * hwe = default_hw;
1308 while (hwe->vendor) {
1309 r += store_hwe(hw, hwe);