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 .getuid = DEFAULT_GETUID,
30 .features = DEFAULT_FEATURES,
31 .hwhandler = DEFAULT_HWHANDLER,
32 .selector = DEFAULT_SELECTOR,
34 .pgfailback = -FAILBACK_IMMEDIATE,
35 .rr_weight = RR_WEIGHT_NONE,
36 .no_path_retry = NO_PATH_RETRY_QUEUE,
37 .minio = DEFAULT_MINIO,
38 .minio_rq = DEFAULT_MINIO_RQ,
40 .prio_name = DEFAULT_PRIO,
44 * Apple controller family
46 * Maintainer : Shyam Sundar
47 * Mail : g.shyamsundar@yahoo.co.in
51 .product = "Xserve RAID ",
52 .getuid = DEFAULT_GETUID,
53 .features = DEFAULT_FEATURES,
54 .hwhandler = DEFAULT_HWHANDLER,
55 .selector = DEFAULT_SELECTOR,
57 .pgfailback = FAILBACK_UNDEF,
58 .rr_weight = RR_WEIGHT_NONE,
59 .no_path_retry = NO_PATH_RETRY_UNDEF,
60 .minio = DEFAULT_MINIO,
61 .minio_rq = DEFAULT_MINIO_RQ,
62 .checker_name = DEFAULT_CHECKER,
63 .prio_name = DEFAULT_PRIO,
67 * StorageWorks controller family
69 * Maintainer : Christophe Varoqui
70 * Mail : christophe.varoqui@opensvc.com
75 .getuid = DEFAULT_GETUID,
76 .features = DEFAULT_FEATURES,
77 .hwhandler = DEFAULT_HWHANDLER,
78 .selector = DEFAULT_SELECTOR,
80 .pgfailback = FAILBACK_UNDEF,
81 .rr_weight = RR_WEIGHT_NONE,
82 .no_path_retry = NO_PATH_RETRY_UNDEF,
83 .minio = DEFAULT_MINIO,
84 .minio_rq = DEFAULT_MINIO_RQ,
85 .checker_name = DEFAULT_CHECKER,
86 .prio_name = DEFAULT_PRIO,
92 .getuid = DEFAULT_GETUID,
93 .features = "1 queue_if_no_path",
94 .hwhandler = "1 hp_sw",
95 .selector = DEFAULT_SELECTOR,
96 .pgpolicy = GROUP_BY_PRIO,
97 .pgfailback = FAILBACK_UNDEF,
98 .rr_weight = RR_WEIGHT_NONE,
99 .no_path_retry = NO_PATH_RETRY_UNDEF,
100 .minio = DEFAULT_MINIO,
101 .minio_rq = DEFAULT_MINIO_RQ,
102 .checker_name = HP_SW,
103 .prio_name = PRIO_HP_SW,
109 .getuid = DEFAULT_GETUID,
110 .features = DEFAULT_FEATURES,
111 .hwhandler = DEFAULT_HWHANDLER,
112 .selector = DEFAULT_SELECTOR,
113 .pgpolicy = MULTIBUS,
114 .pgfailback = FAILBACK_UNDEF,
115 .rr_weight = RR_WEIGHT_NONE,
117 .minio = DEFAULT_MINIO,
118 .minio_rq = DEFAULT_MINIO_RQ,
119 .checker_name = DIRECTIO,
120 .prio_name = DEFAULT_PRIO,
124 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
125 .vendor = "(COMPAQ|HP)",
126 .product = "(MSA|HSV)1.0.*",
127 .getuid = DEFAULT_GETUID,
128 .features = "1 queue_if_no_path",
129 .hwhandler = "1 hp_sw",
130 .selector = DEFAULT_SELECTOR,
131 .pgpolicy = GROUP_BY_PRIO,
132 .pgfailback = FAILBACK_UNDEF,
133 .rr_weight = RR_WEIGHT_NONE,
136 .checker_name = HP_SW,
137 .prio_name = PRIO_HP_SW,
141 /* MSA 1000/1500 with new firmware */
142 .vendor = "(COMPAQ|HP)",
143 .product = "MSA VOLUME",
144 .getuid = DEFAULT_GETUID,
145 .features = DEFAULT_FEATURES,
146 .hwhandler = DEFAULT_HWHANDLER,
147 .selector = DEFAULT_SELECTOR,
148 .pgpolicy = GROUP_BY_PRIO,
149 .pgfailback = -FAILBACK_IMMEDIATE,
150 .rr_weight = RR_WEIGHT_NONE,
154 .prio_name = PRIO_ALUA,
158 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
159 .vendor = "(COMPAQ|HP)",
160 .product = "HSV1[01]1|HSV2[01]0|HSV300|HSV4[05]0",
161 .getuid = DEFAULT_GETUID,
162 .features = DEFAULT_FEATURES,
163 .hwhandler = DEFAULT_HWHANDLER,
164 .selector = DEFAULT_SELECTOR,
165 .pgpolicy = GROUP_BY_PRIO,
166 .pgfailback = -FAILBACK_IMMEDIATE,
167 .rr_weight = RR_WEIGHT_NONE,
171 .prio_name = PRIO_ALUA,
175 /* HP MSA2000 product family with old firmware */
177 .product = "MSA2[02]12fc|MSA2012i",
178 .getuid = DEFAULT_GETUID,
179 .features = DEFAULT_FEATURES,
180 .hwhandler = DEFAULT_HWHANDLER,
181 .selector = DEFAULT_SELECTOR,
182 .pgpolicy = MULTIBUS,
183 .pgfailback = -FAILBACK_IMMEDIATE,
184 .rr_weight = RR_WEIGHT_NONE,
188 .prio_name = DEFAULT_PRIO,
192 /* HP MSA2000 product family with new firmware */
194 .product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
195 .getuid = DEFAULT_GETUID,
196 .features = DEFAULT_FEATURES,
197 .hwhandler = DEFAULT_HWHANDLER,
198 .selector = DEFAULT_SELECTOR,
199 .pgpolicy = GROUP_BY_PRIO,
200 .pgfailback = -FAILBACK_IMMEDIATE,
201 .rr_weight = RR_WEIGHT_NONE,
205 .prio_name = PRIO_ALUA,
212 .product = "HSVX700",
213 .getuid = DEFAULT_GETUID,
214 .features = DEFAULT_FEATURES,
215 .hwhandler = "1 alua",
216 .selector = DEFAULT_SELECTOR,
217 .pgpolicy = GROUP_BY_PRIO,
218 .pgfailback = -FAILBACK_IMMEDIATE,
219 .rr_weight = RR_WEIGHT_NONE,
223 .prio_name = PRIO_ALUA,
230 .product = "LOGICAL VOLUME.*",
231 .getuid = DEFAULT_GETUID,
232 .features = DEFAULT_FEATURES,
233 .hwhandler = DEFAULT_HWHANDLER,
234 .selector = DEFAULT_SELECTOR,
235 .pgpolicy = MULTIBUS,
236 .pgfailback = FAILBACK_UNDEF,
237 .rr_weight = RR_WEIGHT_NONE,
239 .minio = DEFAULT_MINIO,
240 .minio_rq = DEFAULT_MINIO_RQ,
242 .prio_name = DEFAULT_PRIO,
246 /* HP P2000 family arrays */
248 .product = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
249 .getuid = DEFAULT_GETUID,
250 .features = DEFAULT_FEATURES,
251 .hwhandler = DEFAULT_HWHANDLER,
252 .selector = DEFAULT_SELECTOR,
253 .pgpolicy = GROUP_BY_PRIO,
254 .pgfailback = -FAILBACK_IMMEDIATE,
255 .rr_weight = RR_WEIGHT_NONE,
258 .minio_rq = DEFAULT_MINIO_RQ,
260 .prio_name = PRIO_ALUA,
264 * DDN controller family
266 * Maintainer : Christophe Varoqui
267 * Mail : christophe.varoqui@opensvc.com
271 .product = "SAN DataDirector",
272 .getuid = DEFAULT_GETUID,
273 .features = DEFAULT_FEATURES,
274 .hwhandler = DEFAULT_HWHANDLER,
275 .selector = DEFAULT_SELECTOR,
276 .pgpolicy = MULTIBUS,
277 .pgfailback = FAILBACK_UNDEF,
278 .rr_weight = RR_WEIGHT_NONE,
279 .no_path_retry = NO_PATH_RETRY_UNDEF,
280 .minio = DEFAULT_MINIO,
281 .minio_rq = DEFAULT_MINIO_RQ,
282 .checker_name = DIRECTIO,
283 .prio_name = DEFAULT_PRIO,
287 * EMC / Clariion controller family
289 * Maintainer : Edward Goggin, EMC
290 * Mail : egoggin@emc.com
294 .product = "SYMMETRIX",
295 .getuid = "/lib/udev/scsi_id --page=pre-spc3-83 --whitelisted --device=/dev/%n",
296 .features = DEFAULT_FEATURES,
297 .hwhandler = DEFAULT_HWHANDLER,
298 .selector = DEFAULT_SELECTOR,
299 .pgpolicy = MULTIBUS,
300 .pgfailback = FAILBACK_UNDEF,
301 .rr_weight = RR_WEIGHT_NONE,
303 .minio = DEFAULT_MINIO,
304 .minio_rq = DEFAULT_MINIO_RQ,
306 .prio_name = DEFAULT_PRIO,
312 .bl_product = "LUNZ",
313 .getuid = DEFAULT_GETUID,
314 .features = "1 queue_if_no_path",
315 .hwhandler = "1 emc",
316 .selector = DEFAULT_SELECTOR,
317 .pgpolicy = GROUP_BY_PRIO,
318 .pgfailback = -FAILBACK_IMMEDIATE,
319 .rr_weight = RR_WEIGHT_NONE,
320 .no_path_retry = (300 / DEFAULT_CHECKINT),
321 .minio = DEFAULT_MINIO,
322 .minio_rq = DEFAULT_MINIO_RQ,
323 .checker_name = EMC_CLARIION,
324 .prio_name = PRIO_EMC,
329 .product = "Invista",
330 .bl_product = "LUNZ",
331 .getuid = DEFAULT_GETUID,
332 .features = DEFAULT_FEATURES,
333 .hwhandler = DEFAULT_HWHANDLER,
334 .selector = DEFAULT_SELECTOR,
335 .pgpolicy = MULTIBUS,
336 .pgfailback = FAILBACK_UNDEF,
337 .rr_weight = RR_WEIGHT_NONE,
339 .minio = DEFAULT_MINIO,
340 .minio_rq = DEFAULT_MINIO_RQ,
342 .prio_name = DEFAULT_PRIO,
346 * Fujitsu controller family
348 * Maintainer : Christophe Varoqui
349 * Mail : christophe.varoqui@opensvc.com
353 .product = "CentricStor",
354 .getuid = DEFAULT_GETUID,
355 .features = DEFAULT_FEATURES,
356 .hwhandler = DEFAULT_HWHANDLER,
357 .selector = DEFAULT_SELECTOR,
358 .pgpolicy = GROUP_BY_SERIAL,
359 .pgfailback = FAILBACK_UNDEF,
360 .rr_weight = RR_WEIGHT_NONE,
361 .no_path_retry = NO_PATH_RETRY_UNDEF,
362 .minio = DEFAULT_MINIO,
363 .minio_rq = DEFAULT_MINIO_RQ,
364 .checker_name = DIRECTIO,
365 .prio_name = DEFAULT_PRIO,
369 * Hitachi controller family
371 * Maintainer : Matthias Rudolph
372 * Mail : matthias.rudolph@hds.com
375 .vendor = "(HITACHI|HP)",
376 .product = "OPEN-.*",
377 .getuid = DEFAULT_GETUID,
378 .features = DEFAULT_FEATURES,
379 .hwhandler = DEFAULT_HWHANDLER,
380 .selector = DEFAULT_SELECTOR,
381 .pgpolicy = MULTIBUS,
382 .pgfailback = FAILBACK_UNDEF,
383 .rr_weight = RR_WEIGHT_NONE,
384 .no_path_retry = NO_PATH_RETRY_UNDEF,
385 .minio = DEFAULT_MINIO,
386 .minio_rq = DEFAULT_MINIO_RQ,
388 .prio_name = DEFAULT_PRIO,
394 .getuid = DEFAULT_GETUID,
395 .features = "1 queue_if_no_path",
396 .hwhandler = DEFAULT_HWHANDLER,
397 .selector = DEFAULT_SELECTOR,
398 .pgpolicy = GROUP_BY_PRIO,
399 .pgfailback = -FAILBACK_IMMEDIATE,
400 .rr_weight = RR_WEIGHT_NONE,
401 .no_path_retry = NO_PATH_RETRY_UNDEF,
402 .minio = DEFAULT_MINIO,
403 .minio_rq = DEFAULT_MINIO_RQ,
405 .prio_name = PRIO_HDS,
409 * IBM controller family
411 * Maintainer : Hannes Reinecke, SuSE
412 * Mail : hare@suse.de
416 .product = "ProFibre 4000R",
417 .getuid = DEFAULT_GETUID,
418 .features = DEFAULT_FEATURES,
419 .hwhandler = DEFAULT_HWHANDLER,
420 .selector = DEFAULT_SELECTOR,
421 .pgpolicy = MULTIBUS,
422 .pgfailback = FAILBACK_UNDEF,
423 .rr_weight = RR_WEIGHT_NONE,
424 .no_path_retry = NO_PATH_RETRY_UNDEF,
425 .minio = DEFAULT_MINIO,
426 .minio_rq = DEFAULT_MINIO_RQ,
427 .checker_name = DIRECTIO,
428 .prio_name = DEFAULT_PRIO,
432 /* IBM FAStT 1722-600 */
434 .product = "^1722-600",
435 .getuid = DEFAULT_GETUID,
436 .features = "1 queue_if_no_path",
437 .hwhandler = "1 rdac",
438 .selector = DEFAULT_SELECTOR,
439 .pgpolicy = GROUP_BY_PRIO,
440 .pgfailback = -FAILBACK_IMMEDIATE,
441 .rr_weight = RR_WEIGHT_NONE,
442 .no_path_retry = 300,
443 .minio = DEFAULT_MINIO,
444 .minio_rq = DEFAULT_MINIO_RQ,
445 .checker_name = RDAC,
446 .prio_name = PRIO_RDAC,
453 .getuid = DEFAULT_GETUID,
454 .features = "1 queue_if_no_path",
455 .hwhandler = "1 rdac",
456 .selector = DEFAULT_SELECTOR,
457 .pgpolicy = GROUP_BY_PRIO,
458 .pgfailback = -FAILBACK_IMMEDIATE,
459 .rr_weight = RR_WEIGHT_NONE,
460 .no_path_retry = 300,
461 .minio = DEFAULT_MINIO,
462 .minio_rq = DEFAULT_MINIO_RQ,
463 .checker_name = RDAC,
464 .prio_name = PRIO_RDAC,
468 /* IBM DS3200 / DS3300 / DS3400 */
471 .getuid = DEFAULT_GETUID,
472 .features = "1 queue_if_no_path",
473 .hwhandler = "1 rdac",
474 .selector = DEFAULT_SELECTOR,
475 .pgpolicy = GROUP_BY_PRIO,
476 .pgfailback = -FAILBACK_IMMEDIATE,
477 .rr_weight = RR_WEIGHT_NONE,
478 .no_path_retry = 300,
479 .minio = DEFAULT_MINIO,
480 .minio_rq = DEFAULT_MINIO_RQ,
481 .checker_name = RDAC,
482 .prio_name = PRIO_RDAC,
486 /* IBM DS4400 / DS4500 / FAStT700 */
489 .getuid = DEFAULT_GETUID,
490 .features = DEFAULT_FEATURES,
491 .hwhandler = "1 rdac",
492 .selector = DEFAULT_SELECTOR,
493 .pgpolicy = GROUP_BY_PRIO,
494 .pgfailback = -FAILBACK_IMMEDIATE,
495 .rr_weight = RR_WEIGHT_NONE,
496 .no_path_retry = NO_PATH_RETRY_QUEUE,
497 .minio = DEFAULT_MINIO,
498 .minio_rq = DEFAULT_MINIO_RQ,
499 .checker_name = RDAC,
500 .prio_name = PRIO_RDAC,
505 .product = "^1745|^1746",
506 .getuid = DEFAULT_GETUID,
507 .features = "2 pg_init_retries 50",
508 .hwhandler = "1 rdac",
509 .selector = DEFAULT_SELECTOR,
510 .pgpolicy = GROUP_BY_PRIO,
511 .pgfailback = -FAILBACK_IMMEDIATE,
512 .rr_weight = RR_WEIGHT_NONE,
514 .minio = DEFAULT_MINIO,
515 .minio_rq = DEFAULT_MINIO_RQ,
516 .checker_name = RDAC,
517 .prio_name = PRIO_RDAC,
524 .getuid = DEFAULT_GETUID,
525 .features = DEFAULT_FEATURES,
526 .hwhandler = "1 rdac",
527 .selector = DEFAULT_SELECTOR,
528 .pgpolicy = GROUP_BY_PRIO,
529 .pgfailback = -FAILBACK_IMMEDIATE,
530 .rr_weight = RR_WEIGHT_NONE,
531 .no_path_retry = NO_PATH_RETRY_QUEUE,
532 .minio = DEFAULT_MINIO,
533 .minio_rq = DEFAULT_MINIO_RQ,
534 .checker_name = RDAC,
535 .prio_name = PRIO_RDAC,
542 .getuid = DEFAULT_GETUID,
543 .features = DEFAULT_FEATURES,
544 .hwhandler = "1 rdac",
545 .selector = DEFAULT_SELECTOR,
546 .pgpolicy = GROUP_BY_PRIO,
547 .pgfailback = -FAILBACK_IMMEDIATE,
548 .rr_weight = RR_WEIGHT_NONE,
549 .no_path_retry = NO_PATH_RETRY_QUEUE,
550 .minio = DEFAULT_MINIO,
551 .minio_rq = DEFAULT_MINIO_RQ,
552 .checker_name = RDAC,
553 .prio_name = PRIO_RDAC,
560 .getuid = DEFAULT_GETUID,
561 .features = DEFAULT_FEATURES,
562 .hwhandler = "1 rdac",
563 .selector = DEFAULT_SELECTOR,
564 .pgpolicy = GROUP_BY_PRIO,
565 .pgfailback = -FAILBACK_IMMEDIATE,
566 .rr_weight = RR_WEIGHT_NONE,
567 .no_path_retry = NO_PATH_RETRY_QUEUE,
568 .minio = DEFAULT_MINIO,
569 .minio_rq = DEFAULT_MINIO_RQ,
570 .checker_name = RDAC,
571 .prio_name = PRIO_RDAC,
575 /* IBM Netfinity Fibre Channel RAID Controller Unit */
578 .getuid = DEFAULT_GETUID,
579 .features = DEFAULT_FEATURES,
580 .hwhandler = "1 rdac",
581 .selector = DEFAULT_SELECTOR,
582 .pgpolicy = GROUP_BY_PRIO,
583 .pgfailback = -FAILBACK_IMMEDIATE,
584 .rr_weight = RR_WEIGHT_NONE,
585 .no_path_retry = NO_PATH_RETRY_QUEUE,
586 .minio = DEFAULT_MINIO,
587 .minio_rq = DEFAULT_MINIO_RQ,
588 .checker_name = RDAC,
589 .prio_name = PRIO_RDAC,
593 /* IBM DS4200 / FAStT200 */
596 .getuid = DEFAULT_GETUID,
597 .features = DEFAULT_FEATURES,
598 .hwhandler = DEFAULT_HWHANDLER,
599 .selector = DEFAULT_SELECTOR,
600 .pgpolicy = GROUP_BY_SERIAL,
601 .pgfailback = FAILBACK_UNDEF,
602 .rr_weight = RR_WEIGHT_NONE,
603 .no_path_retry = NO_PATH_RETRY_UNDEF,
604 .minio = DEFAULT_MINIO,
605 .minio_rq = DEFAULT_MINIO_RQ,
607 .prio_name = DEFAULT_PRIO,
611 /* IBM ESS F20 aka Shark */
613 .product = "^2105800",
614 .getuid = DEFAULT_GETUID,
615 .features = "1 queue_if_no_path",
616 .hwhandler = DEFAULT_HWHANDLER,
617 .selector = DEFAULT_SELECTOR,
618 .pgpolicy = GROUP_BY_SERIAL,
619 .pgfailback = FAILBACK_UNDEF,
620 .rr_weight = RR_WEIGHT_NONE,
621 .no_path_retry = NO_PATH_RETRY_UNDEF,
622 .minio = DEFAULT_MINIO,
623 .minio_rq = DEFAULT_MINIO_RQ,
625 .prio_name = DEFAULT_PRIO,
629 /* IBM ESS F20 aka Shark */
631 .product = "^2105F20",
632 .getuid = DEFAULT_GETUID,
633 .features = "1 queue_if_no_path",
634 .hwhandler = DEFAULT_HWHANDLER,
635 .selector = DEFAULT_SELECTOR,
636 .pgpolicy = GROUP_BY_SERIAL,
637 .pgfailback = FAILBACK_UNDEF,
638 .rr_weight = RR_WEIGHT_NONE,
639 .no_path_retry = NO_PATH_RETRY_UNDEF,
640 .minio = DEFAULT_MINIO,
641 .minio_rq = DEFAULT_MINIO_RQ,
643 .prio_name = DEFAULT_PRIO,
649 .product = "^1750500",
650 .getuid = DEFAULT_GETUID,
651 .features = "1 queue_if_no_path",
652 .hwhandler = DEFAULT_HWHANDLER,
653 .selector = DEFAULT_SELECTOR,
654 .pgpolicy = GROUP_BY_PRIO,
655 .pgfailback = -FAILBACK_IMMEDIATE,
656 .rr_weight = RR_WEIGHT_NONE,
657 .no_path_retry = NO_PATH_RETRY_UNDEF,
658 .minio = DEFAULT_MINIO,
659 .minio_rq = DEFAULT_MINIO_RQ,
661 .prio_name = PRIO_ALUA,
667 .product = "^2107900",
668 .getuid = DEFAULT_GETUID,
669 .features = "1 queue_if_no_path",
670 .hwhandler = DEFAULT_HWHANDLER,
671 .selector = DEFAULT_SELECTOR,
672 .pgpolicy = MULTIBUS,
673 .pgfailback = FAILBACK_UNDEF,
674 .rr_weight = RR_WEIGHT_NONE,
675 .no_path_retry = NO_PATH_RETRY_UNDEF,
676 .minio = DEFAULT_MINIO,
677 .minio_rq = DEFAULT_MINIO_RQ,
679 .prio_name = DEFAULT_PRIO,
683 /* IBM SAN Volume Controller */
686 .getuid = DEFAULT_GETUID,
687 .features = "1 queue_if_no_path",
688 .hwhandler = DEFAULT_HWHANDLER,
689 .selector = DEFAULT_SELECTOR,
690 .pgpolicy = GROUP_BY_PRIO,
691 .pgfailback = -FAILBACK_IMMEDIATE,
692 .rr_weight = RR_WEIGHT_NONE,
693 .no_path_retry = NO_PATH_RETRY_UNDEF,
694 .minio = DEFAULT_MINIO,
695 .minio_rq = DEFAULT_MINIO_RQ,
697 .prio_name = PRIO_ALUA,
701 /* IBM S/390 ECKD DASD */
703 .product = "S/390 DASD ECKD",
704 .bl_product = "S/390.*",
705 .getuid = "/sbin/dasdinfo -u -b %n",
706 .features = "1 queue_if_no_path",
707 .hwhandler = DEFAULT_HWHANDLER,
708 .selector = DEFAULT_SELECTOR,
709 .pgpolicy = MULTIBUS,
710 .pgfailback = FAILBACK_UNDEF,
711 .rr_weight = RR_WEIGHT_NONE,
712 .no_path_retry = NO_PATH_RETRY_UNDEF,
713 .minio = DEFAULT_MINIO,
714 .minio_rq = DEFAULT_MINIO_RQ,
715 .checker_name = DIRECTIO,
716 .prio_name = DEFAULT_PRIO,
720 /* IBM S/390 FBA DASD */
722 .product = "S/390 DASD FBA",
723 .bl_product = "S/390.*",
724 .getuid = "/sbin/dasdinfo -u -b %n",
725 .features = "1 queue_if_no_path",
726 .hwhandler = DEFAULT_HWHANDLER,
727 .selector = DEFAULT_SELECTOR,
728 .pgpolicy = MULTIBUS,
729 .pgfailback = FAILBACK_UNDEF,
730 .rr_weight = RR_WEIGHT_NONE,
731 .no_path_retry = NO_PATH_RETRY_UNDEF,
732 .minio = DEFAULT_MINIO,
733 .minio_rq = DEFAULT_MINIO_RQ,
734 .checker_name = DIRECTIO,
735 .prio_name = DEFAULT_PRIO,
742 .getuid = DEFAULT_GETUID,
743 .features = "1 queue_if_no_path",
744 .hwhandler = "1 alua",
745 .selector = DEFAULT_SELECTOR,
746 .pgpolicy = GROUP_BY_PRIO,
747 .pgfailback = -FAILBACK_IMMEDIATE,
748 .rr_weight = RR_WEIGHT_NONE,
749 .no_path_retry = NO_PATH_RETRY_UNDEF,
750 .minio = DEFAULT_MINIO,
751 .minio_rq = DEFAULT_MINIO_RQ,
753 .prio_name = PRIO_ALUA,
759 .product = "1820N00",
760 .getuid = DEFAULT_GETUID,
761 .features = DEFAULT_FEATURES,
762 .hwhandler = DEFAULT_HWHANDLER,
763 .selector = DEFAULT_SELECTOR,
764 .pgpolicy = GROUP_BY_PRIO,
765 .pgfailback = -FAILBACK_IMMEDIATE,
766 .rr_weight = RR_WEIGHT_NONE,
767 .no_path_retry = NO_PATH_RETRY_QUEUE,
769 .minio_rq = DEFAULT_MINIO_RQ,
771 .prio_name = PRIO_ALUA,
775 * IBM Power Virtual SCSI Devices
777 * Maintainer : Brian King, IBM
778 * Mail : brking@linux.vnet.ibm.com
784 .getuid = DEFAULT_GETUID,
785 .features = DEFAULT_FEATURES,
786 .hwhandler = DEFAULT_HWHANDLER,
787 .selector = DEFAULT_SELECTOR,
788 .pgpolicy = MULTIBUS,
789 .pgfailback = -FAILBACK_IMMEDIATE,
790 .rr_weight = RR_WEIGHT_NONE,
791 .no_path_retry = (300 / DEFAULT_CHECKINT),
792 .minio = DEFAULT_MINIO,
793 .minio_rq = DEFAULT_MINIO_RQ,
794 .checker_name = DIRECTIO,
795 .prio_name = DEFAULT_PRIO,
799 /* IBM 3303 NVDISK */
801 .product = "3303 NVDISK",
802 .getuid = DEFAULT_GETUID,
803 .features = DEFAULT_FEATURES,
804 .hwhandler = DEFAULT_HWHANDLER,
805 .selector = DEFAULT_SELECTOR,
806 .pgpolicy = FAILOVER,
807 .pgfailback = -FAILBACK_IMMEDIATE,
808 .rr_weight = RR_WEIGHT_NONE,
809 .no_path_retry = (300 / DEFAULT_CHECKINT),
810 .minio = DEFAULT_MINIO,
811 .minio_rq = DEFAULT_MINIO_RQ,
813 .prio_name = DEFAULT_PRIO,
820 .getuid = DEFAULT_GETUID,
821 .features = DEFAULT_FEATURES,
822 .hwhandler = "1 alua",
823 .selector = DEFAULT_SELECTOR,
824 .pgpolicy = GROUP_BY_PRIO,
825 .pgfailback = -FAILBACK_IMMEDIATE,
826 .rr_weight = RR_WEIGHT_NONE,
827 .no_path_retry = (300 / DEFAULT_CHECKINT),
828 .minio = DEFAULT_MINIO,
829 .minio_rq = DEFAULT_MINIO_RQ,
831 .prio_name = PRIO_ALUA,
838 .getuid = DEFAULT_GETUID,
839 .features = "2 pg_init_retries 50",
840 .hwhandler = "1 rdac",
841 .selector = DEFAULT_SELECTOR,
842 .pgpolicy = GROUP_BY_PRIO,
843 .pgfailback = -FAILBACK_IMMEDIATE,
844 .rr_weight = RR_WEIGHT_NONE,
846 .minio = DEFAULT_MINIO,
847 .minio_rq = DEFAULT_MINIO_RQ,
848 .checker_name = RDAC,
849 .prio_name = PRIO_RDAC,
855 .product = "MD3000i",
856 .getuid = DEFAULT_GETUID,
857 .features = "2 pg_init_retries 50",
858 .hwhandler = "1 rdac",
859 .selector = DEFAULT_SELECTOR,
860 .pgpolicy = GROUP_BY_PRIO,
861 .pgfailback = -FAILBACK_IMMEDIATE,
862 .rr_weight = RR_WEIGHT_NONE,
864 .minio = DEFAULT_MINIO,
865 .minio_rq = DEFAULT_MINIO_RQ,
866 .checker_name = RDAC,
867 .prio_name = PRIO_RDAC,
874 .getuid = DEFAULT_GETUID,
875 .features = "2 pg_init_retries 50",
876 .hwhandler = "1 rdac",
877 .selector = DEFAULT_SELECTOR,
878 .pgpolicy = GROUP_BY_PRIO,
879 .pgfailback = -FAILBACK_IMMEDIATE,
880 .rr_weight = RR_WEIGHT_NONE,
882 .minio = DEFAULT_MINIO,
883 .minio_rq = DEFAULT_MINIO_RQ,
884 .checker_name = RDAC,
885 .prio_name = PRIO_RDAC,
891 .product = "MD32xxi",
892 .getuid = DEFAULT_GETUID,
893 .features = "2 pg_init_retries 50",
894 .hwhandler = "1 rdac",
895 .selector = DEFAULT_SELECTOR,
896 .pgpolicy = GROUP_BY_PRIO,
897 .pgfailback = -FAILBACK_IMMEDIATE,
898 .rr_weight = RR_WEIGHT_NONE,
900 .minio = DEFAULT_MINIO,
901 .minio_rq = DEFAULT_MINIO_RQ,
902 .checker_name = RDAC,
903 .prio_name = PRIO_RDAC,
907 * NETAPP controller family
909 * Maintainer : Dave Wysochanski
910 * Mail : davidw@netapp.com
915 .getuid = DEFAULT_GETUID,
916 .features = "1 queue_if_no_path",
917 .hwhandler = DEFAULT_HWHANDLER,
918 .selector = DEFAULT_SELECTOR,
919 .pgpolicy = GROUP_BY_PRIO,
920 .pgfailback = -FAILBACK_IMMEDIATE,
921 .rr_weight = RR_WEIGHT_NONE,
922 .no_path_retry = NO_PATH_RETRY_UNDEF,
924 .checker_name = DIRECTIO,
925 .prio_name = PRIO_ONTAP,
929 * NEXENTA/COMSTAR controller family
931 * Maintainer : Yacine Kheddache
932 * Mail : yacine@alyseo.com
936 .product = "COMSTAR",
937 .getuid = DEFAULT_GETUID,
938 .features = "1 queue_if_no_path",
939 .hwhandler = DEFAULT_HWHANDLER,
940 .selector = DEFAULT_SELECTOR,
941 .pgpolicy = GROUP_BY_SERIAL,
942 .pgfailback = -FAILBACK_IMMEDIATE,
943 .rr_weight = RR_WEIGHT_NONE,
946 .checker_name = DIRECTIO,
947 .prio_name = DEFAULT_PRIO,
951 * IBM NSeries (NETAPP) controller family
953 * Maintainer : Dave Wysochanski
954 * Mail : davidw@netapp.com
958 .product = "Nseries.*",
959 .getuid = DEFAULT_GETUID,
960 .features = "1 queue_if_no_path",
961 .hwhandler = DEFAULT_HWHANDLER,
962 .selector = DEFAULT_SELECTOR,
963 .pgpolicy = GROUP_BY_PRIO,
964 .pgfailback = -FAILBACK_IMMEDIATE,
965 .rr_weight = RR_WEIGHT_NONE,
966 .no_path_retry = NO_PATH_RETRY_UNDEF,
968 .checker_name = DIRECTIO,
969 .prio_name = PRIO_ONTAP,
973 * Pillar Data controller family
975 * Maintainer : Srinivasan Ramani
976 * Mail : sramani@pillardata.com
980 .product = "Axiom.*",
981 .getuid = DEFAULT_GETUID,
982 .features = DEFAULT_FEATURES,
983 .hwhandler = DEFAULT_HWHANDLER,
984 .selector = DEFAULT_SELECTOR,
985 .pgpolicy = GROUP_BY_PRIO,
986 .pgfailback = FAILBACK_UNDEF,
987 .rr_weight = RR_WEIGHT_NONE,
988 .no_path_retry = NO_PATH_RETRY_UNDEF,
989 .minio = DEFAULT_MINIO,
990 .minio_rq = DEFAULT_MINIO_RQ,
992 .prio_name = PRIO_ALUA,
999 * Maintainer : Christophe Varoqui
1000 * Mail : christophe.varoqui@opensvc.com
1004 .product = "TP9[13]00",
1005 .getuid = DEFAULT_GETUID,
1006 .features = DEFAULT_FEATURES,
1007 .hwhandler = DEFAULT_HWHANDLER,
1008 .selector = DEFAULT_SELECTOR,
1009 .pgpolicy = MULTIBUS,
1010 .pgfailback = FAILBACK_UNDEF,
1011 .rr_weight = RR_WEIGHT_NONE,
1012 .no_path_retry = NO_PATH_RETRY_UNDEF,
1013 .minio = DEFAULT_MINIO,
1014 .minio_rq = DEFAULT_MINIO_RQ,
1015 .checker_name = DIRECTIO,
1016 .prio_name = DEFAULT_PRIO,
1021 .product = "TP9[45]00",
1022 .getuid = DEFAULT_GETUID,
1023 .features = DEFAULT_FEATURES,
1024 .hwhandler = "1 rdac",
1025 .selector = DEFAULT_SELECTOR,
1026 .pgpolicy = GROUP_BY_PRIO,
1027 .pgfailback = -FAILBACK_IMMEDIATE,
1028 .rr_weight = RR_WEIGHT_NONE,
1029 .no_path_retry = NO_PATH_RETRY_QUEUE,
1030 .minio = DEFAULT_MINIO,
1031 .minio_rq = DEFAULT_MINIO_RQ,
1032 .checker_name = RDAC,
1033 .prio_name = PRIO_RDAC,
1039 .getuid = DEFAULT_GETUID,
1040 .features = "2 pg_init_retries 50",
1041 .hwhandler = "1 rdac",
1042 .selector = DEFAULT_SELECTOR,
1043 .pgpolicy = GROUP_BY_PRIO,
1044 .pgfailback = -FAILBACK_IMMEDIATE,
1045 .rr_weight = RR_WEIGHT_NONE,
1046 .no_path_retry = 15,
1047 .minio = DEFAULT_MINIO,
1048 .minio_rq = DEFAULT_MINIO_RQ,
1049 .checker_name = RDAC,
1050 .prio_name = PRIO_RDAC,
1053 /* NEC Storage M Series */
1056 .product = "DISK ARRAY",
1057 .getuid = DEFAULT_GETUID,
1058 .features = DEFAULT_FEATURES,
1059 .hwhandler = "1 alua",
1060 .selector = DEFAULT_SELECTOR,
1061 .pgpolicy = GROUP_BY_PRIO,
1062 .pgfailback = -FAILBACK_IMMEDIATE,
1063 .rr_weight = RR_WEIGHT_NONE,
1064 .no_path_retry = NO_PATH_RETRY_UNDEF,
1065 .minio = DEFAULT_MINIO,
1066 .minio_rq = DEFAULT_MINIO_RQ,
1067 .checker_name = TUR,
1068 .prio_name = PRIO_ALUA,
1074 * Maintainer : Christophe Varoqui
1075 * Mail : christophe.varoqui@opensvc.com
1079 .product = "OPENstorage D280",
1080 .getuid = DEFAULT_GETUID,
1081 .features = DEFAULT_FEATURES,
1082 .hwhandler = "1 rdac",
1083 .selector = DEFAULT_SELECTOR,
1084 .pgpolicy = GROUP_BY_PRIO,
1085 .pgfailback = -FAILBACK_IMMEDIATE,
1086 .rr_weight = RR_WEIGHT_NONE,
1087 .no_path_retry = NO_PATH_RETRY_UNDEF,
1088 .minio = DEFAULT_MINIO,
1089 .minio_rq = DEFAULT_MINIO_RQ,
1090 .checker_name = TUR,
1091 .prio_name = PRIO_RDAC,
1097 * Maintainer : Christophe Varoqui
1098 * Mail : christophe.varoqui@opensvc.com
1102 .product = "(StorEdge 3510|T4)",
1103 .getuid = DEFAULT_GETUID,
1104 .features = DEFAULT_FEATURES,
1105 .hwhandler = DEFAULT_HWHANDLER,
1106 .selector = DEFAULT_SELECTOR,
1107 .pgpolicy = MULTIBUS,
1108 .pgfailback = FAILBACK_UNDEF,
1109 .rr_weight = RR_WEIGHT_NONE,
1110 .no_path_retry = NO_PATH_RETRY_UNDEF,
1111 .minio = DEFAULT_MINIO,
1112 .minio_rq = DEFAULT_MINIO_RQ,
1113 .checker_name = DIRECTIO,
1114 .prio_name = DEFAULT_PRIO,
1118 .vendor = "EUROLOGC",
1119 .product = "FC2502",
1120 .getuid ="/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1121 .features = DEFAULT_FEATURES,
1122 .hwhandler = DEFAULT_HWHANDLER,
1123 .selector = DEFAULT_SELECTOR,
1124 .pgpolicy = GROUP_BY_PRIO,
1125 .pgfailback = FAILBACK_UNDEF,
1126 .rr_weight = RR_WEIGHT_NONE,
1127 .no_path_retry = NO_PATH_RETRY_UNDEF,
1128 .minio = DEFAULT_MINIO,
1129 .minio_rq = DEFAULT_MINIO_RQ,
1130 .checker_name = DEFAULT_CHECKER,
1131 .prio_name = DEFAULT_PRIO,
1137 * Maintainer : Bart Brooks, Pivot3
1138 * Mail : bartb@pivot3.com
1142 .product = "RAIGE VOLUME",
1143 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1144 .features = "1 queue_if_no_path",
1145 .hwhandler = DEFAULT_HWHANDLER,
1146 .selector = DEFAULT_SELECTOR,
1147 .pgpolicy = MULTIBUS,
1148 .pgfailback = FAILBACK_UNDEF,
1149 .rr_weight = RR_WEIGHT_NONE,
1150 .no_path_retry = NO_PATH_RETRY_UNDEF,
1152 .checker_name = TUR,
1153 .prio_name = DEFAULT_PRIO,
1158 .product = "CSM200_R",
1159 .getuid = DEFAULT_GETUID,
1160 .features = DEFAULT_FEATURES,
1161 .hwhandler = "1 rdac",
1162 .selector = DEFAULT_SELECTOR,
1163 .pgpolicy = GROUP_BY_PRIO,
1164 .pgfailback = -FAILBACK_IMMEDIATE,
1165 .rr_weight = RR_WEIGHT_NONE,
1166 .no_path_retry = NO_PATH_RETRY_QUEUE,
1167 .minio = DEFAULT_MINIO,
1168 .minio_rq = DEFAULT_MINIO_RQ,
1169 .checker_name = RDAC,
1170 .prio_name = PRIO_RDAC,
1173 /* SUN/LSI 2510, 2540, 2530, 2540 */
1176 .product = "LCSM100_[IEFS]",
1177 .getuid = DEFAULT_GETUID,
1178 .features = DEFAULT_FEATURES,
1179 .hwhandler = "1 rdac",
1180 .selector = DEFAULT_SELECTOR,
1181 .pgpolicy = GROUP_BY_PRIO,
1182 .pgfailback = -FAILBACK_IMMEDIATE,
1183 .rr_weight = RR_WEIGHT_NONE,
1184 .no_path_retry = NO_PATH_RETRY_QUEUE,
1185 .minio = DEFAULT_MINIO,
1186 .minio_rq = DEFAULT_MINIO_RQ,
1187 .checker_name = RDAC,
1188 .prio_name = PRIO_RDAC,
1191 /* LSI/Engenio/NetApp E-Series RDAC storage */
1193 .vendor = "(LSI|ENGENIO)",
1194 .product = "INF-01-00",
1195 .getuid = DEFAULT_GETUID,
1196 .features = "2 pg_init_retries 50",
1197 .hwhandler = "1 rdac",
1198 .selector = DEFAULT_SELECTOR,
1199 .pgpolicy = GROUP_BY_PRIO,
1200 .pgfailback = -FAILBACK_IMMEDIATE,
1201 .rr_weight = RR_WEIGHT_NONE,
1202 .no_path_retry = 15,
1203 .minio = DEFAULT_MINIO,
1204 .minio_rq = DEFAULT_MINIO_RQ,
1205 .checker_name = RDAC,
1206 .prio_name = PRIO_RDAC,
1211 .product = "FLEXLINE 380",
1212 .bl_product = "Universal Xport",
1213 .getuid = DEFAULT_GETUID,
1214 .features = DEFAULT_FEATURES,
1215 .hwhandler = "1 rdac",
1216 .selector = DEFAULT_SELECTOR,
1217 .pgpolicy = GROUP_BY_PRIO,
1218 .pgfailback = -FAILBACK_IMMEDIATE,
1219 .rr_weight = RR_WEIGHT_NONE,
1220 .no_path_retry = NO_PATH_RETRY_QUEUE,
1221 .minio = DEFAULT_MINIO,
1222 .minio_rq = DEFAULT_MINIO_RQ,
1223 .checker_name = RDAC,
1224 .prio_name = PRIO_RDAC,
1243 .checker_name = NULL,
1250 setup_default_hwtable (vector hw)
1253 struct hwentry * hwe = default_hw;
1255 while (hwe->vendor) {
1256 r += store_hwe(hw, hwe);