8 #include "pgpolicies.h"
12 * Tuning suggestions on these parameters should go to
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 static struct hwentry default_hw[] = {
21 * Compellent Technologies, Inc.
23 * Maintainer : Jim Lester, Compellent
24 * Mail : jim.lester@compellent.com
28 .product = "Compellent Vol",
29 .features = DEFAULT_FEATURES,
30 .hwhandler = DEFAULT_HWHANDLER,
32 .pgfailback = -FAILBACK_IMMEDIATE,
33 .rr_weight = RR_WEIGHT_NONE,
34 .no_path_retry = NO_PATH_RETRY_QUEUE,
36 .prio_name = DEFAULT_PRIO,
40 * Apple controller family
42 * Maintainer : Shyam Sundar
43 * Mail : g.shyamsundar@yahoo.co.in
47 .product = "Xserve RAID ",
48 .features = DEFAULT_FEATURES,
49 .hwhandler = DEFAULT_HWHANDLER,
51 .pgfailback = FAILBACK_UNDEF,
52 .rr_weight = RR_WEIGHT_NONE,
53 .no_path_retry = NO_PATH_RETRY_UNDEF,
54 .checker_name = DEFAULT_CHECKER,
55 .prio_name = DEFAULT_PRIO,
59 * StorageWorks controller family
61 * Maintainer : Christophe Varoqui
62 * Mail : christophe.varoqui@opensvc.com
67 .features = DEFAULT_FEATURES,
68 .hwhandler = DEFAULT_HWHANDLER,
70 .pgfailback = FAILBACK_UNDEF,
71 .rr_weight = RR_WEIGHT_NONE,
72 .no_path_retry = NO_PATH_RETRY_UNDEF,
73 .checker_name = DEFAULT_CHECKER,
74 .prio_name = DEFAULT_PRIO,
80 .features = "1 queue_if_no_path",
81 .hwhandler = "1 hp_sw",
82 .pgpolicy = GROUP_BY_PRIO,
83 .pgfailback = FAILBACK_UNDEF,
84 .rr_weight = RR_WEIGHT_NONE,
85 .no_path_retry = NO_PATH_RETRY_UNDEF,
86 .checker_name = HP_SW,
87 .prio_name = PRIO_HP_SW,
93 .features = DEFAULT_FEATURES,
94 .hwhandler = DEFAULT_HWHANDLER,
96 .pgfailback = FAILBACK_UNDEF,
97 .rr_weight = RR_WEIGHT_NONE,
99 .checker_name = DIRECTIO,
100 .prio_name = DEFAULT_PRIO,
104 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
105 .vendor = "(COMPAQ|HP)",
106 .product = "(MSA|HSV)1.0.*",
107 .features = "1 queue_if_no_path",
108 .hwhandler = "1 hp_sw",
109 .pgpolicy = GROUP_BY_PRIO,
110 .pgfailback = FAILBACK_UNDEF,
111 .rr_weight = RR_WEIGHT_NONE,
114 .checker_name = HP_SW,
115 .prio_name = PRIO_HP_SW,
119 /* MSA 1000/1500 with new firmware */
120 .vendor = "(COMPAQ|HP)",
121 .product = "MSA VOLUME",
122 .features = DEFAULT_FEATURES,
123 .hwhandler = DEFAULT_HWHANDLER,
124 .pgpolicy = GROUP_BY_PRIO,
125 .pgfailback = -FAILBACK_IMMEDIATE,
126 .rr_weight = RR_WEIGHT_NONE,
130 .prio_name = PRIO_ALUA,
134 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
135 .vendor = "(COMPAQ|HP)",
136 .product = "HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0",
137 .features = DEFAULT_FEATURES,
138 .hwhandler = DEFAULT_HWHANDLER,
139 .pgpolicy = GROUP_BY_PRIO,
140 .pgfailback = -FAILBACK_IMMEDIATE,
141 .rr_weight = RR_WEIGHT_NONE,
145 .prio_name = PRIO_ALUA,
149 /* HP MSA2000 product family with old firmware */
151 .product = "MSA2[02]12fc|MSA2012i",
152 .features = DEFAULT_FEATURES,
153 .hwhandler = DEFAULT_HWHANDLER,
154 .pgpolicy = MULTIBUS,
155 .pgfailback = -FAILBACK_IMMEDIATE,
156 .rr_weight = RR_WEIGHT_NONE,
160 .prio_name = DEFAULT_PRIO,
164 /* HP MSA2000 product family with new firmware */
166 .product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
167 .features = DEFAULT_FEATURES,
168 .hwhandler = DEFAULT_HWHANDLER,
169 .pgpolicy = GROUP_BY_PRIO,
170 .pgfailback = -FAILBACK_IMMEDIATE,
171 .rr_weight = RR_WEIGHT_NONE,
175 .prio_name = PRIO_ALUA,
179 /* HP MSA 1040/2040 product family */
181 .product = "MSA (1|2)040 SA(N|S)",
182 .features = DEFAULT_FEATURES,
183 .hwhandler = DEFAULT_HWHANDLER,
184 .pgpolicy = GROUP_BY_PRIO,
185 .pgfailback = -FAILBACK_IMMEDIATE,
186 .rr_weight = RR_WEIGHT_NONE,
190 .prio_name = PRIO_ALUA,
197 .product = "HSVX700",
198 .features = DEFAULT_FEATURES,
199 .hwhandler = "1 alua",
200 .pgpolicy = GROUP_BY_PRIO,
201 .pgfailback = -FAILBACK_IMMEDIATE,
202 .rr_weight = RR_WEIGHT_NONE,
206 .prio_name = PRIO_ALUA,
213 .product = "LOGICAL VOLUME.*",
214 .features = DEFAULT_FEATURES,
215 .hwhandler = DEFAULT_HWHANDLER,
216 .pgpolicy = MULTIBUS,
217 .pgfailback = FAILBACK_UNDEF,
218 .rr_weight = RR_WEIGHT_NONE,
221 .prio_name = DEFAULT_PRIO,
225 /* HP P2000 family arrays */
227 .product = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
228 .features = DEFAULT_FEATURES,
229 .hwhandler = DEFAULT_HWHANDLER,
230 .pgpolicy = GROUP_BY_PRIO,
231 .pgfailback = -FAILBACK_IMMEDIATE,
232 .rr_weight = RR_WEIGHT_NONE,
236 .prio_name = PRIO_ALUA,
240 * DDN controller family
242 * Maintainer : Christophe Varoqui
243 * Mail : christophe.varoqui@opensvc.com
247 .product = "SAN DataDirector",
248 .features = DEFAULT_FEATURES,
249 .hwhandler = DEFAULT_HWHANDLER,
250 .pgpolicy = MULTIBUS,
251 .pgfailback = FAILBACK_UNDEF,
252 .rr_weight = RR_WEIGHT_NONE,
253 .no_path_retry = NO_PATH_RETRY_UNDEF,
254 .checker_name = DIRECTIO,
255 .prio_name = DEFAULT_PRIO,
259 * EMC / Clariion controller family
261 * Maintainer : Edward Goggin, EMC
262 * Mail : egoggin@emc.com
266 .product = "SYMMETRIX",
267 .features = DEFAULT_FEATURES,
268 .hwhandler = DEFAULT_HWHANDLER,
269 .pgpolicy = MULTIBUS,
270 .pgfailback = FAILBACK_UNDEF,
271 .rr_weight = RR_WEIGHT_NONE,
274 .prio_name = DEFAULT_PRIO,
280 .bl_product = "LUNZ",
281 .features = "1 queue_if_no_path",
282 .hwhandler = "1 emc",
283 .pgpolicy = GROUP_BY_PRIO,
284 .pgfailback = -FAILBACK_IMMEDIATE,
285 .rr_weight = RR_WEIGHT_NONE,
286 .no_path_retry = (300 / DEFAULT_CHECKINT),
287 .checker_name = EMC_CLARIION,
288 .prio_name = PRIO_EMC,
290 .retain_hwhandler = RETAIN_HWHANDLER_ON,
291 .detect_prio = DETECT_PRIO_ON,
295 .product = "Invista",
296 .bl_product = "LUNZ",
297 .features = DEFAULT_FEATURES,
298 .hwhandler = DEFAULT_HWHANDLER,
299 .pgpolicy = MULTIBUS,
300 .pgfailback = FAILBACK_UNDEF,
301 .rr_weight = RR_WEIGHT_NONE,
304 .prio_name = DEFAULT_PRIO,
309 .product = "XtremApp",
310 .features = DEFAULT_FEATURES,
311 .hwhandler = DEFAULT_HWHANDLER,
312 .selector = "queue-length 0",
313 .pgpolicy = MULTIBUS,
314 .pgfailback = FAILBACK_UNDEF,
317 .prio_name = DEFAULT_PRIO,
321 * Fujitsu controller family
323 * Maintainer : Christophe Varoqui
324 * Mail : christophe.varoqui@opensvc.com
328 .product = "CentricStor",
329 .features = DEFAULT_FEATURES,
330 .hwhandler = DEFAULT_HWHANDLER,
331 .pgpolicy = GROUP_BY_SERIAL,
332 .pgfailback = FAILBACK_UNDEF,
333 .rr_weight = RR_WEIGHT_NONE,
334 .no_path_retry = NO_PATH_RETRY_UNDEF,
335 .checker_name = DIRECTIO,
336 .prio_name = DEFAULT_PRIO,
341 .product = "ETERNUS_DX(H|L|M|400|8000)",
342 .features = "1 queue_if_no_path",
343 .hwhandler = DEFAULT_HWHANDLER,
344 .pgpolicy = GROUP_BY_PRIO,
345 .pgfailback = -FAILBACK_IMMEDIATE,
346 .rr_weight = RR_WEIGHT_NONE,
349 .prio_name = PRIO_ALUA,
353 * Hitachi controller family
355 * Maintainer : Matthias Rudolph
356 * Mail : matthias.rudolph@hds.com
359 .vendor = "(HITACHI|HP)",
360 .product = "OPEN-.*",
361 .features = DEFAULT_FEATURES,
362 .hwhandler = DEFAULT_HWHANDLER,
363 .pgpolicy = MULTIBUS,
364 .pgfailback = FAILBACK_UNDEF,
365 .rr_weight = RR_WEIGHT_NONE,
366 .no_path_retry = NO_PATH_RETRY_UNDEF,
368 .prio_name = DEFAULT_PRIO,
374 .features = "1 queue_if_no_path",
375 .hwhandler = DEFAULT_HWHANDLER,
376 .pgpolicy = GROUP_BY_PRIO,
377 .pgfailback = -FAILBACK_IMMEDIATE,
378 .rr_weight = RR_WEIGHT_NONE,
379 .no_path_retry = NO_PATH_RETRY_UNDEF,
381 .prio_name = PRIO_HDS,
385 * IBM controller family
387 * Maintainer : Hannes Reinecke, SuSE
388 * Mail : hare@suse.de
392 .product = "ProFibre 4000R",
393 .features = DEFAULT_FEATURES,
394 .hwhandler = DEFAULT_HWHANDLER,
395 .pgpolicy = MULTIBUS,
396 .pgfailback = FAILBACK_UNDEF,
397 .rr_weight = RR_WEIGHT_NONE,
398 .no_path_retry = NO_PATH_RETRY_UNDEF,
399 .checker_name = DIRECTIO,
400 .prio_name = DEFAULT_PRIO,
404 /* IBM FAStT 1722-600 */
406 .product = "^1722-600",
407 .bl_product = "Universal Xport",
408 .features = "1 queue_if_no_path",
409 .hwhandler = "1 rdac",
410 .pgpolicy = GROUP_BY_PRIO,
411 .pgfailback = -FAILBACK_IMMEDIATE,
412 .rr_weight = RR_WEIGHT_NONE,
413 .no_path_retry = 300,
414 .checker_name = RDAC,
415 .prio_name = PRIO_RDAC,
422 .bl_product = "Universal Xport",
423 .features = "1 queue_if_no_path",
424 .hwhandler = "1 rdac",
425 .pgpolicy = GROUP_BY_PRIO,
426 .pgfailback = -FAILBACK_IMMEDIATE,
427 .rr_weight = RR_WEIGHT_NONE,
428 .no_path_retry = 300,
429 .checker_name = RDAC,
430 .prio_name = PRIO_RDAC,
434 /* IBM DS3200 / DS3300 / DS3400 */
437 .bl_product = "Universal Xport",
438 .features = "1 queue_if_no_path",
439 .hwhandler = "1 rdac",
440 .pgpolicy = GROUP_BY_PRIO,
441 .pgfailback = -FAILBACK_IMMEDIATE,
442 .rr_weight = RR_WEIGHT_NONE,
443 .no_path_retry = 300,
444 .checker_name = RDAC,
445 .prio_name = PRIO_RDAC,
449 /* IBM DS4400 / DS4500 / FAStT700 */
452 .bl_product = "Universal Xport",
453 .features = DEFAULT_FEATURES,
454 .hwhandler = "1 rdac",
455 .pgpolicy = GROUP_BY_PRIO,
456 .pgfailback = -FAILBACK_IMMEDIATE,
457 .rr_weight = RR_WEIGHT_NONE,
458 .no_path_retry = NO_PATH_RETRY_QUEUE,
459 .checker_name = RDAC,
460 .prio_name = PRIO_RDAC,
465 .product = "^1745|^1746",
466 .bl_product = "Universal Xport",
467 .features = "2 pg_init_retries 50",
468 .hwhandler = "1 rdac",
469 .pgpolicy = GROUP_BY_PRIO,
470 .pgfailback = -FAILBACK_IMMEDIATE,
471 .rr_weight = RR_WEIGHT_NONE,
473 .checker_name = RDAC,
474 .prio_name = PRIO_RDAC,
481 .bl_product = "Universal Xport",
482 .features = DEFAULT_FEATURES,
483 .hwhandler = "1 rdac",
484 .pgpolicy = GROUP_BY_PRIO,
485 .pgfailback = -FAILBACK_IMMEDIATE,
486 .rr_weight = RR_WEIGHT_NONE,
487 .no_path_retry = NO_PATH_RETRY_QUEUE,
488 .checker_name = RDAC,
489 .prio_name = PRIO_RDAC,
496 .bl_product = "Universal Xport",
497 .features = DEFAULT_FEATURES,
498 .hwhandler = "1 rdac",
499 .pgpolicy = GROUP_BY_PRIO,
500 .pgfailback = -FAILBACK_IMMEDIATE,
501 .rr_weight = RR_WEIGHT_NONE,
502 .no_path_retry = NO_PATH_RETRY_QUEUE,
503 .checker_name = RDAC,
504 .prio_name = PRIO_RDAC,
511 .bl_product = "Universal Xport",
512 .features = DEFAULT_FEATURES,
513 .hwhandler = "1 rdac",
514 .pgpolicy = GROUP_BY_PRIO,
515 .pgfailback = -FAILBACK_IMMEDIATE,
516 .rr_weight = RR_WEIGHT_NONE,
517 .no_path_retry = NO_PATH_RETRY_QUEUE,
518 .checker_name = RDAC,
519 .prio_name = PRIO_RDAC,
523 /* IBM Netfinity Fibre Channel RAID Controller Unit */
526 .bl_product = "Universal Xport",
527 .features = DEFAULT_FEATURES,
528 .hwhandler = "1 rdac",
529 .pgpolicy = GROUP_BY_PRIO,
530 .pgfailback = -FAILBACK_IMMEDIATE,
531 .rr_weight = RR_WEIGHT_NONE,
532 .no_path_retry = NO_PATH_RETRY_QUEUE,
533 .checker_name = RDAC,
534 .prio_name = PRIO_RDAC,
538 /* IBM DS4200 / FAStT200 */
541 .features = DEFAULT_FEATURES,
542 .hwhandler = DEFAULT_HWHANDLER,
543 .pgpolicy = GROUP_BY_SERIAL,
544 .pgfailback = FAILBACK_UNDEF,
545 .rr_weight = RR_WEIGHT_NONE,
546 .no_path_retry = NO_PATH_RETRY_UNDEF,
548 .prio_name = DEFAULT_PRIO,
552 /* IBM ESS F20 aka Shark */
554 .product = "^2105800",
555 .features = "1 queue_if_no_path",
556 .hwhandler = DEFAULT_HWHANDLER,
557 .pgpolicy = GROUP_BY_SERIAL,
558 .pgfailback = FAILBACK_UNDEF,
559 .rr_weight = RR_WEIGHT_NONE,
560 .no_path_retry = NO_PATH_RETRY_UNDEF,
562 .prio_name = DEFAULT_PRIO,
566 /* IBM ESS F20 aka Shark */
568 .product = "^2105F20",
569 .features = "1 queue_if_no_path",
570 .hwhandler = DEFAULT_HWHANDLER,
571 .pgpolicy = GROUP_BY_SERIAL,
572 .pgfailback = FAILBACK_UNDEF,
573 .rr_weight = RR_WEIGHT_NONE,
574 .no_path_retry = NO_PATH_RETRY_UNDEF,
576 .prio_name = DEFAULT_PRIO,
582 .product = "^1750500",
583 .features = "1 queue_if_no_path",
584 .hwhandler = DEFAULT_HWHANDLER,
585 .pgpolicy = GROUP_BY_PRIO,
586 .pgfailback = -FAILBACK_IMMEDIATE,
587 .rr_weight = RR_WEIGHT_NONE,
588 .no_path_retry = NO_PATH_RETRY_UNDEF,
590 .prio_name = PRIO_ALUA,
596 .product = "^2107900",
597 .features = "1 queue_if_no_path",
598 .hwhandler = DEFAULT_HWHANDLER,
599 .pgpolicy = MULTIBUS,
600 .pgfailback = FAILBACK_UNDEF,
601 .rr_weight = RR_WEIGHT_NONE,
602 .no_path_retry = NO_PATH_RETRY_UNDEF,
604 .prio_name = DEFAULT_PRIO,
608 /* IBM SAN Volume Controller */
611 .features = "1 queue_if_no_path",
612 .hwhandler = DEFAULT_HWHANDLER,
613 .pgpolicy = GROUP_BY_PRIO,
614 .pgfailback = -FAILBACK_IMMEDIATE,
615 .rr_weight = RR_WEIGHT_NONE,
616 .no_path_retry = NO_PATH_RETRY_UNDEF,
618 .prio_name = PRIO_ALUA,
622 /* IBM S/390 ECKD DASD */
624 .product = "S/390 DASD ECKD",
625 .bl_product = "S/390.*",
626 .uid_attribute = "ID_UID",
627 .features = "1 queue_if_no_path",
628 .hwhandler = DEFAULT_HWHANDLER,
629 .pgpolicy = MULTIBUS,
630 .pgfailback = FAILBACK_UNDEF,
631 .rr_weight = RR_WEIGHT_NONE,
632 .no_path_retry = NO_PATH_RETRY_UNDEF,
633 .checker_name = DIRECTIO,
634 .prio_name = DEFAULT_PRIO,
638 /* IBM S/390 FBA DASD */
640 .product = "S/390 DASD FBA",
641 .bl_product = "S/390.*",
642 .uid_attribute = "ID_UID",
643 .features = "1 queue_if_no_path",
644 .hwhandler = DEFAULT_HWHANDLER,
645 .pgpolicy = MULTIBUS,
646 .pgfailback = FAILBACK_UNDEF,
647 .rr_weight = RR_WEIGHT_NONE,
648 .no_path_retry = NO_PATH_RETRY_UNDEF,
649 .checker_name = DIRECTIO,
650 .prio_name = DEFAULT_PRIO,
657 .features = "1 queue_if_no_path",
658 .hwhandler = "1 alua",
659 .pgpolicy = GROUP_BY_PRIO,
660 .pgfailback = -FAILBACK_IMMEDIATE,
661 .rr_weight = RR_WEIGHT_NONE,
662 .no_path_retry = NO_PATH_RETRY_UNDEF,
664 .prio_name = PRIO_ALUA,
670 .product = "1820N00",
671 .features = DEFAULT_FEATURES,
672 .hwhandler = DEFAULT_HWHANDLER,
673 .pgpolicy = GROUP_BY_PRIO,
674 .pgfailback = -FAILBACK_IMMEDIATE,
675 .rr_weight = RR_WEIGHT_NONE,
676 .no_path_retry = NO_PATH_RETRY_QUEUE,
679 .prio_name = PRIO_ALUA,
683 /* IBM XIV Storage System */
685 .product = "2810XIV",
686 .features = "1 queue_if_no_path",
687 .hwhandler = DEFAULT_HWHANDLER,
688 .pgpolicy = MULTIBUS,
690 .rr_weight = RR_WEIGHT_NONE,
691 .no_path_retry = NO_PATH_RETRY_UNDEF,
694 .prio_name = DEFAULT_PRIO,
698 * IBM Power Virtual SCSI Devices
700 * Maintainer : Brian King, IBM
701 * Mail : brking@linux.vnet.ibm.com
707 .features = DEFAULT_FEATURES,
708 .hwhandler = DEFAULT_HWHANDLER,
709 .pgpolicy = MULTIBUS,
710 .pgfailback = -FAILBACK_IMMEDIATE,
711 .rr_weight = RR_WEIGHT_NONE,
712 .no_path_retry = (300 / DEFAULT_CHECKINT),
713 .checker_name = DIRECTIO,
714 .prio_name = DEFAULT_PRIO,
718 /* IBM 3303 NVDISK */
720 .product = "3303 NVDISK",
721 .features = DEFAULT_FEATURES,
722 .hwhandler = DEFAULT_HWHANDLER,
723 .pgpolicy = FAILOVER,
724 .pgfailback = -FAILBACK_IMMEDIATE,
725 .rr_weight = RR_WEIGHT_NONE,
726 .no_path_retry = (300 / DEFAULT_CHECKINT),
728 .prio_name = DEFAULT_PRIO,
735 .features = DEFAULT_FEATURES,
736 .hwhandler = "1 alua",
737 .pgpolicy = GROUP_BY_PRIO,
738 .pgfailback = -FAILBACK_IMMEDIATE,
739 .rr_weight = RR_WEIGHT_NONE,
740 .no_path_retry = (300 / DEFAULT_CHECKINT),
742 .prio_name = PRIO_ALUA,
749 .bl_product = "Universal Xport",
750 .features = "2 pg_init_retries 50",
751 .hwhandler = "1 rdac",
752 .pgpolicy = GROUP_BY_PRIO,
753 .pgfailback = -FAILBACK_IMMEDIATE,
754 .rr_weight = RR_WEIGHT_NONE,
756 .checker_name = RDAC,
757 .prio_name = PRIO_RDAC,
763 .product = "MD3000i",
764 .bl_product = "Universal Xport",
765 .features = "2 pg_init_retries 50",
766 .hwhandler = "1 rdac",
767 .pgpolicy = GROUP_BY_PRIO,
768 .pgfailback = -FAILBACK_IMMEDIATE,
769 .rr_weight = RR_WEIGHT_NONE,
771 .checker_name = RDAC,
772 .prio_name = PRIO_RDAC,
779 .bl_product = "Universal Xport",
780 .features = "2 pg_init_retries 50",
781 .hwhandler = "1 rdac",
782 .pgpolicy = GROUP_BY_PRIO,
783 .pgfailback = -FAILBACK_IMMEDIATE,
784 .rr_weight = RR_WEIGHT_NONE,
786 .checker_name = RDAC,
787 .prio_name = PRIO_RDAC,
793 .product = "MD32xxi",
794 .bl_product = "Universal Xport",
795 .features = "2 pg_init_retries 50",
796 .hwhandler = "1 rdac",
797 .pgpolicy = GROUP_BY_PRIO,
798 .pgfailback = -FAILBACK_IMMEDIATE,
799 .rr_weight = RR_WEIGHT_NONE,
801 .checker_name = RDAC,
802 .prio_name = PRIO_RDAC,
808 .product = "MD36xxi",
809 .bl_product = "Universal Xport",
810 .features = "2 pg_init_retries 50",
811 .hwhandler = "1 rdac",
812 .pgpolicy = GROUP_BY_PRIO,
813 .pgfailback = -FAILBACK_IMMEDIATE,
814 .rr_weight = RR_WEIGHT_NONE,
816 .checker_name = RDAC,
817 .prio_name = PRIO_RDAC,
823 .product = "MD36xxf",
824 .bl_product = "Universal Xport",
825 .features = "2 pg_init_retries 50",
826 .hwhandler = "1 rdac",
827 .pgpolicy = GROUP_BY_PRIO,
828 .pgfailback = -FAILBACK_IMMEDIATE,
829 .rr_weight = RR_WEIGHT_NONE,
831 .checker_name = RDAC,
832 .prio_name = PRIO_RDAC,
836 * NETAPP controller family
838 * Maintainer : Dave Wysochanski
839 * Mail : davidw@netapp.com
844 .features = "3 queue_if_no_path pg_init_retries 50",
845 .hwhandler = DEFAULT_HWHANDLER,
846 .pgpolicy = GROUP_BY_PRIO,
847 .pgfailback = -FAILBACK_IMMEDIATE,
848 .flush_on_last_del = FLUSH_ENABLED,
849 .rr_weight = RR_WEIGHT_NONE,
850 .no_path_retry = NO_PATH_RETRY_UNDEF,
852 .dev_loss = MAX_DEV_LOSS_TMO,
854 .prio_name = PRIO_ONTAP,
856 .retain_hwhandler = RETAIN_HWHANDLER_ON,
857 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
858 .detect_prio = DETECT_PRIO_ON,
861 * NEXENTA/COMSTAR controller family
863 * Maintainer : Yacine Kheddache
864 * Mail : yacine@alyseo.com
868 .product = "COMSTAR",
869 .features = "1 queue_if_no_path",
870 .hwhandler = DEFAULT_HWHANDLER,
871 .pgpolicy = GROUP_BY_SERIAL,
872 .pgfailback = -FAILBACK_IMMEDIATE,
873 .rr_weight = RR_WEIGHT_NONE,
876 .checker_name = DIRECTIO,
877 .prio_name = DEFAULT_PRIO,
881 * IBM NSeries (NETAPP) controller family
883 * Maintainer : Dave Wysochanski
884 * Mail : davidw@netapp.com
888 .product = "Nseries.*",
889 .features = "1 queue_if_no_path",
890 .hwhandler = DEFAULT_HWHANDLER,
891 .pgpolicy = GROUP_BY_PRIO,
892 .pgfailback = -FAILBACK_IMMEDIATE,
893 .rr_weight = RR_WEIGHT_NONE,
894 .no_path_retry = NO_PATH_RETRY_UNDEF,
896 .checker_name = DIRECTIO,
897 .prio_name = PRIO_ONTAP,
901 * Pillar Data controller family
903 * Maintainer : Srinivasan Ramani
904 * Mail : sramani@pillardata.com
908 .product = "Axiom.*",
909 .features = DEFAULT_FEATURES,
910 .hwhandler = DEFAULT_HWHANDLER,
911 .pgpolicy = GROUP_BY_PRIO,
912 .pgfailback = FAILBACK_UNDEF,
913 .rr_weight = RR_WEIGHT_NONE,
914 .no_path_retry = NO_PATH_RETRY_UNDEF,
916 .prio_name = PRIO_ALUA,
923 * Maintainer : Christophe Varoqui
924 * Mail : christophe.varoqui@opensvc.com
928 .product = "TP9[13]00",
929 .features = DEFAULT_FEATURES,
930 .hwhandler = DEFAULT_HWHANDLER,
931 .pgpolicy = MULTIBUS,
932 .pgfailback = FAILBACK_UNDEF,
933 .rr_weight = RR_WEIGHT_NONE,
934 .no_path_retry = NO_PATH_RETRY_UNDEF,
935 .checker_name = DIRECTIO,
936 .prio_name = DEFAULT_PRIO,
941 .product = "TP9[45]00",
942 .bl_product = "Universal Xport",
943 .features = DEFAULT_FEATURES,
944 .hwhandler = "1 rdac",
945 .pgpolicy = GROUP_BY_PRIO,
946 .pgfailback = -FAILBACK_IMMEDIATE,
947 .rr_weight = RR_WEIGHT_NONE,
948 .no_path_retry = NO_PATH_RETRY_QUEUE,
949 .checker_name = RDAC,
950 .prio_name = PRIO_RDAC,
956 .bl_product = "Universal Xport",
957 .features = "2 pg_init_retries 50",
958 .hwhandler = "1 rdac",
959 .pgpolicy = GROUP_BY_PRIO,
960 .pgfailback = -FAILBACK_IMMEDIATE,
961 .rr_weight = RR_WEIGHT_NONE,
963 .checker_name = RDAC,
964 .prio_name = PRIO_RDAC,
967 /* NEC Storage M Series */
970 .product = "DISK ARRAY",
971 .features = DEFAULT_FEATURES,
972 .hwhandler = "1 alua",
973 .pgpolicy = GROUP_BY_PRIO,
974 .pgfailback = -FAILBACK_IMMEDIATE,
975 .rr_weight = RR_WEIGHT_NONE,
976 .no_path_retry = NO_PATH_RETRY_UNDEF,
978 .prio_name = PRIO_ALUA,
984 * Maintainer : Christophe Varoqui
985 * Mail : christophe.varoqui@opensvc.com
989 .product = "OPENstorage D280",
990 .bl_product = "Universal Xport",
991 .features = DEFAULT_FEATURES,
992 .hwhandler = "1 rdac",
993 .pgpolicy = GROUP_BY_PRIO,
994 .pgfailback = -FAILBACK_IMMEDIATE,
995 .rr_weight = RR_WEIGHT_NONE,
996 .no_path_retry = NO_PATH_RETRY_UNDEF,
998 .prio_name = PRIO_RDAC,
1004 * Maintainer : Christophe Varoqui
1005 * Mail : christophe.varoqui@opensvc.com
1009 .product = "(StorEdge 3510|T4)",
1010 .features = DEFAULT_FEATURES,
1011 .hwhandler = DEFAULT_HWHANDLER,
1012 .pgpolicy = MULTIBUS,
1013 .pgfailback = FAILBACK_UNDEF,
1014 .rr_weight = RR_WEIGHT_NONE,
1015 .no_path_retry = NO_PATH_RETRY_UNDEF,
1016 .checker_name = DIRECTIO,
1017 .prio_name = DEFAULT_PRIO,
1022 .product = "STK6580_6780",
1023 .features = DEFAULT_FEATURES,
1024 .hwhandler = "1 rdac",
1025 .pgpolicy = GROUP_BY_PRIO,
1026 .pgfailback = -FAILBACK_IMMEDIATE,
1027 .rr_weight = RR_WEIGHT_NONE,
1028 .no_path_retry = NO_PATH_RETRY_UNDEF,
1029 .checker_name = TUR,
1030 .prio_name = PRIO_RDAC,
1034 .vendor = "EUROLOGC",
1035 .product = "FC2502",
1036 .features = DEFAULT_FEATURES,
1037 .hwhandler = DEFAULT_HWHANDLER,
1038 .pgpolicy = GROUP_BY_PRIO,
1039 .pgfailback = FAILBACK_UNDEF,
1040 .rr_weight = RR_WEIGHT_NONE,
1041 .no_path_retry = NO_PATH_RETRY_UNDEF,
1042 .checker_name = DEFAULT_CHECKER,
1043 .prio_name = DEFAULT_PRIO,
1049 * Maintainer : Bart Brooks, Pivot3
1050 * Mail : bartb@pivot3.com
1054 .product = "RAIGE VOLUME",
1055 .features = "1 queue_if_no_path",
1056 .hwhandler = DEFAULT_HWHANDLER,
1057 .pgpolicy = MULTIBUS,
1058 .pgfailback = FAILBACK_UNDEF,
1059 .rr_weight = RR_WEIGHT_NONE,
1060 .no_path_retry = NO_PATH_RETRY_UNDEF,
1062 .checker_name = TUR,
1063 .prio_name = DEFAULT_PRIO,
1068 .product = "CSM200_R",
1069 .bl_product = "Universal Xport",
1070 .features = DEFAULT_FEATURES,
1071 .hwhandler = "1 rdac",
1072 .pgpolicy = GROUP_BY_PRIO,
1073 .pgfailback = -FAILBACK_IMMEDIATE,
1074 .rr_weight = RR_WEIGHT_NONE,
1075 .no_path_retry = NO_PATH_RETRY_QUEUE,
1076 .checker_name = RDAC,
1077 .prio_name = PRIO_RDAC,
1080 /* SUN/LSI 2510, 2540, 2530, 2540 */
1083 .product = "LCSM100_[IEFS]",
1084 .bl_product = "Universal Xport",
1085 .features = DEFAULT_FEATURES,
1086 .hwhandler = "1 rdac",
1087 .pgpolicy = GROUP_BY_PRIO,
1088 .pgfailback = -FAILBACK_IMMEDIATE,
1089 .rr_weight = RR_WEIGHT_NONE,
1090 .no_path_retry = NO_PATH_RETRY_QUEUE,
1091 .checker_name = RDAC,
1092 .prio_name = PRIO_RDAC,
1095 /* StorageTek 6180 */
1098 .product = "SUN_6180",
1099 .features = DEFAULT_FEATURES,
1100 .hwhandler = "1 rdac",
1101 .pgpolicy = GROUP_BY_PRIO,
1102 .pgfailback = -FAILBACK_IMMEDIATE,
1103 .rr_weight = RR_WEIGHT_NONE,
1104 .no_path_retry = NO_PATH_RETRY_QUEUE,
1105 .minio = DEFAULT_MINIO,
1106 .minio_rq = DEFAULT_MINIO_RQ,
1107 .checker_name = RDAC,
1108 .prio_name = PRIO_RDAC,
1110 /* LSI/Engenio/NetApp E-Series RDAC storage
1112 * Maintainer : Sean Stewart
1113 * Mail : sean.stewart@netapp.com
1116 .vendor = "(NETAPP|LSI|ENGENIO)",
1117 .product = "INF-01-00",
1118 .bl_product = "Universal Xport",
1119 .features = "2 pg_init_retries 50",
1120 .hwhandler = "1 rdac",
1121 .pgpolicy = GROUP_BY_PRIO,
1122 .pgfailback = -FAILBACK_IMMEDIATE,
1123 .rr_weight = RR_WEIGHT_NONE,
1124 .no_path_retry = 30,
1125 .checker_name = RDAC,
1126 .prio_name = PRIO_RDAC,
1128 .detect_prio = DETECT_PRIO_ON,
1129 .retain_hwhandler = RETAIN_HWHANDLER_ON,
1133 .product = "FLEXLINE 380",
1134 .bl_product = "Universal Xport",
1135 .features = DEFAULT_FEATURES,
1136 .hwhandler = "1 rdac",
1137 .pgpolicy = GROUP_BY_PRIO,
1138 .pgfailback = -FAILBACK_IMMEDIATE,
1139 .rr_weight = RR_WEIGHT_NONE,
1140 .no_path_retry = NO_PATH_RETRY_QUEUE,
1141 .checker_name = RDAC,
1142 .prio_name = PRIO_RDAC,
1147 .product = "Multi-Flex",
1148 .features = DEFAULT_FEATURES,
1149 .hwhandler = "1 alua",
1150 .pgpolicy = GROUP_BY_PRIO,
1151 .pgfailback = -FAILBACK_IMMEDIATE,
1152 .rr_weight = RR_WEIGHT_NONE,
1153 .no_path_retry = NO_PATH_RETRY_QUEUE,
1154 .checker_name = TUR,
1155 .prio_name = PRIO_ALUA,
1159 .vendor = "(LIO-ORG|SUSE)",
1161 .features = DEFAULT_FEATURES,
1162 .hwhandler = "1 alua",
1163 .pgpolicy = GROUP_BY_PRIO,
1164 .pgfailback = -FAILBACK_IMMEDIATE,
1165 .rr_weight = RR_WEIGHT_NONE,
1166 .no_path_retry = 12,
1167 .checker_name = TUR,
1169 .prio_name = PRIO_ALUA,
1173 .vendor = "DataCore",
1174 .product = "SANmelody",
1175 .features = DEFAULT_FEATURES,
1176 .hwhandler = DEFAULT_HWHANDLER,
1177 .pgpolicy = GROUP_BY_PRIO,
1178 .pgfailback = -FAILBACK_IMMEDIATE,
1179 .rr_weight = RR_WEIGHT_NONE,
1180 .no_path_retry = NO_PATH_RETRY_QUEUE,
1181 .checker_name = TUR,
1182 .prio_name = PRIO_ALUA,
1186 .vendor = "DataCore",
1187 .product = "Virtual Disk",
1188 .features = DEFAULT_FEATURES,
1189 .hwhandler = DEFAULT_HWHANDLER,
1190 .pgpolicy = GROUP_BY_PRIO,
1191 .pgfailback = -FAILBACK_IMMEDIATE,
1192 .rr_weight = RR_WEIGHT_NONE,
1193 .no_path_retry = NO_PATH_RETRY_QUEUE,
1194 .checker_name = TUR,
1195 .prio_name = PRIO_ALUA,
1200 .product = "FlashArray",
1201 .features = DEFAULT_FEATURES,
1202 .hwhandler = DEFAULT_HWHANDLER,
1203 .selector = "queue-length 0",
1204 .pgpolicy = MULTIBUS,
1205 .pgfailback = -FAILBACK_IMMEDIATE,
1206 .checker_name = TUR,
1208 .user_friendly_names = USER_FRIENDLY_NAMES_OFF,
1209 .prio_name = DEFAULT_PRIO,
1229 .checker_name = NULL,
1236 setup_default_hwtable (vector hw)
1239 struct hwentry * hwe = default_hw;
1241 while (hwe->vendor) {
1242 r += store_hwe(hw, hwe);