8 #include "pgpolicies.h"
12 * Tuning suggestions on these parameters should go to
13 * dm-devel@redhat.com (subscribers-only, see README)
15 * You are welcome to claim maintainership over a controller
16 * family. Please mail the currently enlisted maintainer and
17 * the upstream package maintainer.
19 * Please, use the TEMPLATE below to add new hardware.
23 * Devices with a proprietary handler must also be included in
24 * the kernel side. Currently at drivers/scsi/scsi_dh.c
26 static struct hwentry default_hw[] = {
30 * Maintainer : Shyam Sundar
31 * Mail : g.shyamsundar@yahoo.co.in
35 .product = "Xserve RAID",
37 .pgfailback = FAILBACK_UNDEF,
45 .pgpolicy = GROUP_BY_PRIO,
46 .pgfailback = -FAILBACK_IMMEDIATE,
47 .hwhandler = "1 alua",
48 .prio_name = PRIO_ALUA,
52 /* RA8000 / ESA12000 */
55 .features = "1 queue_if_no_path",
56 .hwhandler = "1 hp_sw",
57 .pgpolicy = GROUP_BY_PRIO,
58 .pgfailback = FAILBACK_UNDEF,
59 .checker_name = HP_SW,
60 .prio_name = PRIO_HP_SW,
63 /* VIRTUAL ARRAY 7400 */
67 .pgfailback = FAILBACK_UNDEF,
71 /* MSA 1000/1500 and EVA 3000/5000, with old firmware */
72 .vendor = "(COMPAQ|HP)",
73 .product = "(MSA|HSV)1[01]0",
74 .features = "1 queue_if_no_path",
75 .hwhandler = "1 hp_sw",
76 .pgpolicy = GROUP_BY_PRIO,
77 .pgfailback = FAILBACK_UNDEF,
80 .checker_name = HP_SW,
81 .prio_name = PRIO_HP_SW,
84 /* MSA 1000/1500 with new firmware */
85 .vendor = "(COMPAQ|HP)",
86 .product = "MSA VOLUME",
87 .pgpolicy = GROUP_BY_PRIO,
88 .pgfailback = -FAILBACK_IMMEDIATE,
91 .prio_name = PRIO_ALUA,
94 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
95 .vendor = "(COMPAQ|HP)",
96 .product = "(HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0)",
97 .pgpolicy = GROUP_BY_PRIO,
98 .pgfailback = -FAILBACK_IMMEDIATE,
101 .prio_name = PRIO_ALUA,
104 /* MSA2000 family with old firmware */
106 .product = "(MSA2[02]12fc|MSA2012i)",
107 .pgpolicy = MULTIBUS,
108 .pgfailback = FAILBACK_UNDEF,
113 /* MSA2000 family with new firmware */
115 .product = "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)",
116 .pgpolicy = GROUP_BY_PRIO,
117 .pgfailback = -FAILBACK_IMMEDIATE,
120 .prio_name = PRIO_ALUA,
123 /* MSA 1040/2040 family */
125 .product = "MSA [12]040 SA[NS]",
126 .pgpolicy = GROUP_BY_PRIO,
127 .pgfailback = -FAILBACK_IMMEDIATE,
130 .prio_name = PRIO_ALUA,
133 /* SAN Virtualization Services Platform */
135 .product = "HSVX700",
136 .hwhandler = "1 alua",
137 .pgpolicy = GROUP_BY_PRIO,
138 .pgfailback = -FAILBACK_IMMEDIATE,
141 .prio_name = PRIO_ALUA,
146 .product = "LOGICAL VOLUME",
147 .pgpolicy = MULTIBUS,
148 .pgfailback = FAILBACK_UNDEF,
154 .product = "(P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)",
155 .pgpolicy = GROUP_BY_PRIO,
156 .pgfailback = -FAILBACK_IMMEDIATE,
159 .prio_name = PRIO_ALUA,
162 * DataDirect Networks
166 .product = "SAN DataDirector",
167 .pgpolicy = MULTIBUS,
168 .pgfailback = FAILBACK_UNDEF,
174 /* Symmetrix / DMX / VMAX */
176 .product = "SYMMETRIX",
177 .pgpolicy = MULTIBUS,
178 .pgfailback = FAILBACK_UNDEF,
182 /* DGC CLARiiON CX/AX and EMC VNX */
184 .product = "^(RAID|DISK|VRAID)",
185 .bl_product = "LUNZ",
186 .features = "1 queue_if_no_path",
187 .hwhandler = "1 emc",
188 .pgpolicy = GROUP_BY_PRIO,
189 .pgfailback = -FAILBACK_IMMEDIATE,
190 .no_path_retry = (300 / DEFAULT_CHECKINT),
191 .checker_name = EMC_CLARIION,
192 .prio_name = PRIO_EMC,
195 /* Invista / VPLEX */
197 .product = "Invista",
198 .bl_product = "LUNZ",
199 .pgpolicy = MULTIBUS,
200 .pgfailback = FAILBACK_UNDEF,
205 .product = "XtremApp",
206 .selector = "queue-length 0",
207 .pgpolicy = MULTIBUS,
208 .pgfailback = FAILBACK_UNDEF,
214 .vendor = "COMPELNT",
215 .product = "Compellent Vol",
216 .pgpolicy = MULTIBUS,
217 .pgfailback = FAILBACK_UNDEF,
218 .no_path_retry = NO_PATH_RETRY_QUEUE,
223 .bl_product = "Universal Xport",
224 .pgpolicy = GROUP_BY_PRIO,
225 .checker_name = RDAC,
226 .features = "2 pg_init_retries 50",
227 .hwhandler = "1 rdac",
228 .prio_name = PRIO_RDAC,
229 .pgfailback = -FAILBACK_IMMEDIATE,
234 .product = "(MD32xx|MD36xx)",
235 .bl_product = "Universal Xport",
236 .pgpolicy = GROUP_BY_PRIO,
237 .checker_name = RDAC,
238 .features = "2 pg_init_retries 50",
239 .hwhandler = "1 rdac",
240 .prio_name = PRIO_RDAC,
241 .pgfailback = -FAILBACK_IMMEDIATE,
246 .product = "(MD34xx|MD38xx)",
247 .bl_product = "Universal Xport",
248 .pgpolicy = GROUP_BY_PRIO,
249 .checker_name = RDAC,
250 .features = "2 pg_init_retries 50",
251 .hwhandler = "1 rdac",
252 .prio_name = PRIO_RDAC,
253 .pgfailback = -FAILBACK_IMMEDIATE,
261 .product = "CentricStor",
262 .pgpolicy = GROUP_BY_SERIAL,
263 .pgfailback = FAILBACK_UNDEF,
267 .product = "ETERNUS_DX(H|L|M|400|8000)",
268 .features = "1 queue_if_no_path",
269 .pgpolicy = GROUP_BY_PRIO,
270 .pgfailback = -FAILBACK_IMMEDIATE,
272 .prio_name = PRIO_ALUA,
276 .vendor = "(EUROLOGC|EuroLogc)",
278 .pgpolicy = MULTIBUS,
279 .pgfailback = FAILBACK_UNDEF,
284 * Maintainer : Matthias Rudolph
285 * Mail : matthias.rudolph@hds.com
288 /* USP-V, HUS VM, VSP, VSP G1000 and VSP GX00 families */
289 .vendor = "(HITACHI|HP)",
291 .pgpolicy = MULTIBUS,
292 .pgfailback = FAILBACK_UNDEF,
295 /* AMS 2000 and HUS 100 families */
298 .features = "1 queue_if_no_path",
299 .pgpolicy = GROUP_BY_PRIO,
300 .pgfailback = -FAILBACK_IMMEDIATE,
301 .prio_name = PRIO_HDS,
306 * Maintainer : Hannes Reinecke
307 * Mail : hare@suse.de
311 .product = "ProFibre 4000R",
312 .pgpolicy = MULTIBUS,
313 .pgfailback = FAILBACK_UNDEF,
316 /* DS4300 / FAStT600 */
318 .product = "^1722-600",
319 .bl_product = "Universal Xport",
320 .pgpolicy = GROUP_BY_PRIO,
321 .checker_name = RDAC,
322 .features = "2 pg_init_retries 50",
323 .hwhandler = "1 rdac",
324 .prio_name = PRIO_RDAC,
325 .pgfailback = -FAILBACK_IMMEDIATE,
329 /* DS4100 / FAStT100 */
332 .bl_product = "Universal Xport",
333 .pgpolicy = GROUP_BY_PRIO,
334 .checker_name = RDAC,
335 .features = "2 pg_init_retries 50",
336 .hwhandler = "1 rdac",
337 .prio_name = PRIO_RDAC,
338 .pgfailback = -FAILBACK_IMMEDIATE,
342 /* DS3200 / DS3300 / DS3400 / Boot DS */
345 .bl_product = "Universal Xport",
346 .pgpolicy = GROUP_BY_PRIO,
347 .checker_name = RDAC,
348 .features = "2 pg_init_retries 50",
349 .hwhandler = "1 rdac",
350 .prio_name = PRIO_RDAC,
351 .pgfailback = -FAILBACK_IMMEDIATE,
355 /* DS4400 / DS4500 / FAStT700 / FAStT900 */
358 .bl_product = "Universal Xport",
359 .pgpolicy = GROUP_BY_PRIO,
360 .checker_name = RDAC,
361 .features = "2 pg_init_retries 50",
362 .hwhandler = "1 rdac",
363 .prio_name = PRIO_RDAC,
364 .pgfailback = -FAILBACK_IMMEDIATE,
368 /* DS3500 / DS3512 / DS3524 */
371 .bl_product = "Universal Xport",
372 .pgpolicy = GROUP_BY_PRIO,
373 .checker_name = RDAC,
374 .features = "2 pg_init_retries 50",
375 .hwhandler = "1 rdac",
376 .prio_name = PRIO_RDAC,
377 .pgfailback = -FAILBACK_IMMEDIATE,
384 .bl_product = "Universal Xport",
385 .pgpolicy = GROUP_BY_PRIO,
386 .checker_name = RDAC,
387 .features = "2 pg_init_retries 50",
388 .hwhandler = "1 rdac",
389 .prio_name = PRIO_RDAC,
390 .pgfailback = -FAILBACK_IMMEDIATE,
394 /* DS3950 / DS4200 / DS4700 / DS5020 */
397 .bl_product = "Universal Xport",
398 .pgpolicy = GROUP_BY_PRIO,
399 .checker_name = RDAC,
400 .features = "2 pg_init_retries 50",
401 .hwhandler = "1 rdac",
402 .prio_name = PRIO_RDAC,
403 .pgfailback = -FAILBACK_IMMEDIATE,
410 .bl_product = "Universal Xport",
411 .pgpolicy = GROUP_BY_PRIO,
412 .checker_name = RDAC,
413 .features = "2 pg_init_retries 50",
414 .hwhandler = "1 rdac",
415 .prio_name = PRIO_RDAC,
416 .pgfailback = -FAILBACK_IMMEDIATE,
420 /* DS5000 / DS5100 / DS5300 / DCS3700 */
423 .bl_product = "Universal Xport",
424 .pgpolicy = GROUP_BY_PRIO,
425 .checker_name = RDAC,
426 .features = "2 pg_init_retries 50",
427 .hwhandler = "1 rdac",
428 .prio_name = PRIO_RDAC,
429 .pgfailback = -FAILBACK_IMMEDIATE,
433 /* Netfinity Fibre Channel RAID Controller Unit */
436 .bl_product = "Universal Xport",
437 .pgpolicy = GROUP_BY_PRIO,
438 .checker_name = RDAC,
439 .features = "2 pg_init_retries 50",
440 .hwhandler = "1 rdac",
441 .prio_name = PRIO_RDAC,
442 .pgfailback = -FAILBACK_IMMEDIATE,
446 /* DS4200 / FAStT200 */
449 .pgpolicy = GROUP_BY_SERIAL,
450 .pgfailback = FAILBACK_UNDEF,
453 /* Enterprise Storage Server / Shark family */
456 .features = "1 queue_if_no_path",
457 .pgpolicy = GROUP_BY_SERIAL,
458 .pgfailback = FAILBACK_UNDEF,
463 .product = "^1750500",
464 .features = "1 queue_if_no_path",
465 .pgpolicy = GROUP_BY_PRIO,
466 .pgfailback = -FAILBACK_IMMEDIATE,
467 .prio_name = PRIO_ALUA,
472 .product = "^2107900",
473 .features = "1 queue_if_no_path",
474 .pgpolicy = MULTIBUS,
475 .pgfailback = FAILBACK_UNDEF,
478 /* Storwize family / SAN Volume Controller / Flex System V7000 */
481 .features = "1 queue_if_no_path",
482 .pgpolicy = GROUP_BY_PRIO,
483 .pgfailback = -FAILBACK_IMMEDIATE,
484 .prio_name = PRIO_ALUA,
488 .product = "S/390 DASD ECKD",
489 .bl_product = "S/390",
490 .uid_attribute = "ID_UID",
491 .features = "1 queue_if_no_path",
492 .pgpolicy = MULTIBUS,
493 .pgfailback = FAILBACK_UNDEF,
497 .product = "S/390 DASD FBA",
498 .bl_product = "S/390",
499 .uid_attribute = "ID_UID",
500 .features = "1 queue_if_no_path",
501 .pgpolicy = MULTIBUS,
502 .pgfailback = FAILBACK_UNDEF,
508 .features = "1 queue_if_no_path",
509 .hwhandler = "1 alua",
510 .pgpolicy = GROUP_BY_PRIO,
511 .pgfailback = -FAILBACK_IMMEDIATE,
512 .prio_name = PRIO_ALUA,
515 /* SAS RAID Controller Module (RSSM) */
517 .product = "1820N00",
518 .pgpolicy = GROUP_BY_PRIO,
519 .pgfailback = -FAILBACK_IMMEDIATE,
520 .no_path_retry = NO_PATH_RETRY_QUEUE,
522 .prio_name = PRIO_ALUA,
525 /* XIV Storage System */
527 .product = "2810XIV",
528 .features = "1 queue_if_no_path",
529 .pgpolicy = MULTIBUS,
530 .pgfailback = FAILBACK_UNDEF,
534 * IBM Power Virtual SCSI Devices
536 * Maintainer : Brian King
537 * Mail : brking@linux.vnet.ibm.com
542 .pgpolicy = MULTIBUS,
543 .pgfailback = FAILBACK_UNDEF,
544 .no_path_retry = (300 / DEFAULT_CHECKINT),
549 .product = "3303[ ]+NVDISK",
550 .pgfailback = FAILBACK_UNDEF,
551 .no_path_retry = (300 / DEFAULT_CHECKINT),
556 .hwhandler = "1 alua",
557 .pgpolicy = GROUP_BY_PRIO,
558 .pgfailback = -FAILBACK_IMMEDIATE,
559 .no_path_retry = (300 / DEFAULT_CHECKINT),
560 .prio_name = PRIO_ALUA,
569 * Maintainer : Martin George
570 * Mail : marting@netapp.com
574 .features = "3 queue_if_no_path pg_init_retries 50",
575 .pgpolicy = GROUP_BY_PRIO,
576 .pgfailback = -FAILBACK_IMMEDIATE,
577 .flush_on_last_del = FLUSH_ENABLED,
579 .dev_loss = MAX_DEV_LOSS_TMO,
580 .prio_name = PRIO_ONTAP,
584 * SANtricity(RDAC) family
586 * Maintainer : Sean Stewart
587 * Mail : sean.stewart@netapp.com
589 .vendor = "(NETAPP|LSI|ENGENIO)",
590 .product = "INF-01-00",
591 .bl_product = "Universal Xport",
592 .pgpolicy = GROUP_BY_PRIO,
593 .checker_name = RDAC,
594 .features = "2 pg_init_retries 50",
595 .hwhandler = "1 rdac",
596 .prio_name = PRIO_RDAC,
597 .pgfailback = -FAILBACK_IMMEDIATE,
603 * Maintainer : Yacine Kheddache
604 * Mail : yacine@alyseo.com
608 .product = "COMSTAR",
609 .features = "1 queue_if_no_path",
610 .pgpolicy = GROUP_BY_SERIAL,
611 .pgfailback = FAILBACK_UNDEF,
621 .pgpolicy = MULTIBUS,
622 .pgfailback = FAILBACK_UNDEF,
626 .product = "TP9[345]00",
627 .bl_product = "Universal Xport",
628 .pgpolicy = GROUP_BY_PRIO,
629 .checker_name = RDAC,
630 .features = "2 pg_init_retries 50",
631 .hwhandler = "1 rdac",
632 .prio_name = PRIO_RDAC,
633 .pgfailback = -FAILBACK_IMMEDIATE,
637 /* InfiniteStorage ??? */
640 .bl_product = "Universal Xport",
641 .pgpolicy = GROUP_BY_PRIO,
642 .checker_name = RDAC,
643 .features = "2 pg_init_retries 50",
644 .hwhandler = "1 rdac",
645 .prio_name = PRIO_RDAC,
646 .pgfailback = -FAILBACK_IMMEDIATE,
655 .product = "DISK ARRAY",
656 .hwhandler = "1 alua",
657 .pgpolicy = GROUP_BY_PRIO,
658 .pgfailback = -FAILBACK_IMMEDIATE,
659 .prio_name = PRIO_ALUA,
665 * Pillar Data / Oracle FS
667 * Maintainer : Srinivasan Ramani
668 * Mail : srinivas.ramani@oracle.com
673 .pgpolicy = GROUP_BY_PRIO,
674 .pgfailback = -FAILBACK_IMMEDIATE,
675 .prio_name = PRIO_ALUA,
679 .product = "^Oracle FS",
680 .pgpolicy = GROUP_BY_PRIO,
681 .pgfailback = -FAILBACK_IMMEDIATE,
682 .prio_name = PRIO_ALUA,
684 /* Sun - StorageTek */
687 .product = "OPENstorage D280",
688 .bl_product = "Universal Xport",
689 .pgpolicy = GROUP_BY_PRIO,
690 .checker_name = RDAC,
691 .features = "2 pg_init_retries 50",
692 .hwhandler = "1 rdac",
693 .prio_name = PRIO_RDAC,
694 .pgfailback = -FAILBACK_IMMEDIATE,
699 .product = "FLEXLINE 380",
700 .bl_product = "Universal Xport",
701 .pgpolicy = GROUP_BY_PRIO,
702 .checker_name = RDAC,
703 .features = "2 pg_init_retries 50",
704 .hwhandler = "1 rdac",
705 .prio_name = PRIO_RDAC,
706 .pgfailback = -FAILBACK_IMMEDIATE,
711 .product = "(StorEdge 3510|T4)",
712 .pgpolicy = MULTIBUS,
713 .pgfailback = FAILBACK_UNDEF,
717 .product = "STK6580_6780",
718 .bl_product = "Universal Xport",
719 .pgpolicy = GROUP_BY_PRIO,
720 .checker_name = RDAC,
721 .features = "2 pg_init_retries 50",
722 .hwhandler = "1 rdac",
723 .prio_name = PRIO_RDAC,
724 .pgfailback = -FAILBACK_IMMEDIATE,
730 .product = "CSM200_R",
731 .bl_product = "Universal Xport",
732 .pgpolicy = GROUP_BY_PRIO,
733 .checker_name = RDAC,
734 .features = "2 pg_init_retries 50",
735 .hwhandler = "1 rdac",
736 .prio_name = PRIO_RDAC,
737 .pgfailback = -FAILBACK_IMMEDIATE,
741 /* 2510 / 2530 / 2540 */
743 .product = "LCSM100_[IEFS]",
744 .bl_product = "Universal Xport",
745 .pgpolicy = GROUP_BY_PRIO,
746 .checker_name = RDAC,
747 .features = "2 pg_init_retries 50",
748 .hwhandler = "1 rdac",
749 .prio_name = PRIO_RDAC,
750 .pgfailback = -FAILBACK_IMMEDIATE,
755 .product = "SUN_6180",
756 .bl_product = "Universal Xport",
757 .pgpolicy = GROUP_BY_PRIO,
758 .checker_name = RDAC,
759 .features = "2 pg_init_retries 50",
760 .hwhandler = "1 rdac",
761 .prio_name = PRIO_RDAC,
762 .pgfailback = -FAILBACK_IMMEDIATE,
768 * Maintainer : Bart Brooks
769 * Mail : bartb@pivot3.com
773 .product = "RAIGE VOLUME",
774 .features = "1 queue_if_no_path",
775 .pgpolicy = MULTIBUS,
776 .pgfailback = FAILBACK_UNDEF,
783 .vendor = "(Intel|INTEL)",
784 .product = "Multi-Flex",
785 .hwhandler = "1 alua",
786 .pgpolicy = GROUP_BY_PRIO,
787 .pgfailback = -FAILBACK_IMMEDIATE,
788 .no_path_retry = NO_PATH_RETRY_QUEUE,
789 .prio_name = PRIO_ALUA,
795 .vendor = "(LIO-ORG|SUSE)",
797 .hwhandler = "1 alua",
798 .pgpolicy = GROUP_BY_PRIO,
799 .pgfailback = -FAILBACK_IMMEDIATE,
802 .prio_name = PRIO_ALUA,
808 .vendor = "DataCore",
809 .product = "SANmelody",
810 .pgpolicy = GROUP_BY_PRIO,
811 .pgfailback = -FAILBACK_IMMEDIATE,
812 .no_path_retry = NO_PATH_RETRY_QUEUE,
813 .prio_name = PRIO_ALUA,
816 .vendor = "DataCore",
817 .product = "Virtual Disk",
818 .pgpolicy = GROUP_BY_PRIO,
819 .pgfailback = -FAILBACK_IMMEDIATE,
820 .no_path_retry = NO_PATH_RETRY_QUEUE,
821 .prio_name = PRIO_ALUA,
828 .product = "FlashArray",
829 .selector = "queue-length 0",
830 .pgpolicy = MULTIBUS,
831 .pgfailback = FAILBACK_UNDEF,
840 .vendor = "(HUAWEI|HUASY)",
842 .pgpolicy = MULTIBUS,
843 .pgfailback = FAILBACK_UNDEF,
848 * Maintainer: Mike Christie
849 * Mail: mchristi@redhat.com
854 .no_path_retry = NO_PATH_RETRY_FAIL,
856 .deferred_remove = DEFERRED_REMOVE_ON,
864 .pgpolicy = MULTIBUS,
865 .pgfailback = FAILBACK_UNDEF,
869 * Copy this TEMPLATE to add new hardware.
871 * Keep only mandatory and modified attributes.
872 * Attributes with default values must be removed.
873 * Only .vendor and .product are mandatory, all other are optional.
874 * .vendor, .product, .revision and .bl_product are POSIX Extended regex
882 /* If product-ID is different from marketing name add a comment */
884 .product = "PRODUCT",
885 .revision = "REVISION",
886 .bl_product = "BL_PRODUCT",
887 .pgpolicy = FAILOVER,
888 .uid_attribute = "ID_SERIAL",
889 .selector = "service-time 0",
893 .prio_name = "const",
895 .pgfailback = -FAILBACK_MANUAL,
896 .rr_weight = RR_WEIGHT_NONE,
897 .no_path_retry = NO_PATH_RETRY_UNDEF,
900 .flush_on_last_del = FLUSH_DISABLED,
903 .retain_hwhandler = RETAIN_HWHANDLER_ON,
904 .detect_prio = DETECT_PRIO_ON,
905 .deferred_remove = DEFERRED_REMOVE_OFF,
906 .delay_watch_checks = DELAY_CHECKS_OFF,
907 .delay_wait_checks = DELAY_CHECKS_OFF,
920 setup_default_hwtable (vector hw)
923 struct hwentry * hwe = default_hw;
925 while (hwe->vendor) {
926 r += store_hwe(hw, hwe);