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 * DDN controller family
248 * Maintainer : Christophe Varoqui
249 * Mail : christophe.varoqui@opensvc.com
253 .product = "SAN DataDirector",
254 .getuid = DEFAULT_GETUID,
255 .features = DEFAULT_FEATURES,
256 .hwhandler = DEFAULT_HWHANDLER,
257 .selector = DEFAULT_SELECTOR,
258 .pgpolicy = MULTIBUS,
259 .pgfailback = FAILBACK_UNDEF,
260 .rr_weight = RR_WEIGHT_NONE,
261 .no_path_retry = NO_PATH_RETRY_UNDEF,
262 .minio = DEFAULT_MINIO,
263 .minio_rq = DEFAULT_MINIO_RQ,
264 .checker_name = DIRECTIO,
265 .prio_name = DEFAULT_PRIO,
269 * EMC / Clariion controller family
271 * Maintainer : Edward Goggin, EMC
272 * Mail : egoggin@emc.com
276 .product = "SYMMETRIX",
277 .getuid = "/lib/udev/scsi_id --page=pre-spc3-83 --whitelisted --device=/dev/%n",
278 .features = DEFAULT_FEATURES,
279 .hwhandler = DEFAULT_HWHANDLER,
280 .selector = DEFAULT_SELECTOR,
281 .pgpolicy = MULTIBUS,
282 .pgfailback = FAILBACK_UNDEF,
283 .rr_weight = RR_WEIGHT_NONE,
284 .no_path_retry = NO_PATH_RETRY_UNDEF,
285 .minio = DEFAULT_MINIO,
286 .minio_rq = DEFAULT_MINIO_RQ,
287 .checker_name = DIRECTIO,
288 .prio_name = DEFAULT_PRIO,
294 .bl_product = "LUNZ",
295 .getuid = DEFAULT_GETUID,
296 .features = "1 queue_if_no_path",
297 .hwhandler = "1 emc",
298 .selector = DEFAULT_SELECTOR,
299 .pgpolicy = GROUP_BY_PRIO,
300 .pgfailback = -FAILBACK_IMMEDIATE,
301 .rr_weight = RR_WEIGHT_NONE,
302 .no_path_retry = (300 / DEFAULT_CHECKINT),
303 .minio = DEFAULT_MINIO,
304 .minio_rq = DEFAULT_MINIO_RQ,
305 .checker_name = EMC_CLARIION,
306 .prio_name = PRIO_EMC,
311 .product = "Invista",
312 .bl_product = "LUNZ",
313 .getuid = DEFAULT_GETUID,
314 .features = DEFAULT_FEATURES,
315 .hwhandler = DEFAULT_HWHANDLER,
316 .selector = DEFAULT_SELECTOR,
317 .pgpolicy = MULTIBUS,
318 .pgfailback = FAILBACK_UNDEF,
319 .rr_weight = RR_WEIGHT_NONE,
321 .minio = DEFAULT_MINIO,
322 .minio_rq = DEFAULT_MINIO_RQ,
323 .prio_name = DEFAULT_PRIO,
327 * Fujitsu controller family
329 * Maintainer : Christophe Varoqui
330 * Mail : christophe.varoqui@opensvc.com
334 .product = "CentricStor",
335 .getuid = DEFAULT_GETUID,
336 .features = DEFAULT_FEATURES,
337 .hwhandler = DEFAULT_HWHANDLER,
338 .selector = DEFAULT_SELECTOR,
339 .pgpolicy = GROUP_BY_SERIAL,
340 .pgfailback = FAILBACK_UNDEF,
341 .rr_weight = RR_WEIGHT_NONE,
342 .no_path_retry = NO_PATH_RETRY_UNDEF,
343 .minio = DEFAULT_MINIO,
344 .minio_rq = DEFAULT_MINIO_RQ,
345 .checker_name = DIRECTIO,
346 .prio_name = DEFAULT_PRIO,
351 .product = "Invista",
352 .bl_product = "LUNZ",
353 .getuid = DEFAULT_GETUID,
354 .features = DEFAULT_FEATURES,
355 .hwhandler = DEFAULT_HWHANDLER,
356 .selector = DEFAULT_SELECTOR,
357 .pgpolicy = FAILOVER,
358 .pgfailback = FAILBACK_UNDEF,
359 .rr_weight = RR_WEIGHT_NONE,
361 .minio = DEFAULT_MINIO,
362 .minio_rq = DEFAULT_MINIO_RQ,
364 .prio_name = DEFAULT_PRIO,
368 * Hitachi controller family
370 * Maintainer : Matthias Rudolph
371 * Mail : matthias.rudolph@hds.com
374 .vendor = "(HITACHI|HP)",
375 .product = "OPEN-.*",
376 .getuid = DEFAULT_GETUID,
377 .features = DEFAULT_FEATURES,
378 .hwhandler = DEFAULT_HWHANDLER,
379 .selector = DEFAULT_SELECTOR,
380 .pgpolicy = MULTIBUS,
381 .pgfailback = FAILBACK_UNDEF,
382 .rr_weight = RR_WEIGHT_NONE,
383 .no_path_retry = NO_PATH_RETRY_UNDEF,
384 .minio = DEFAULT_MINIO,
385 .minio_rq = DEFAULT_MINIO_RQ,
387 .prio_name = DEFAULT_PRIO,
393 .getuid = DEFAULT_GETUID,
394 .features = "1 queue_if_no_path",
395 .hwhandler = DEFAULT_HWHANDLER,
396 .selector = DEFAULT_SELECTOR,
397 .pgpolicy = GROUP_BY_PRIO,
398 .pgfailback = -FAILBACK_IMMEDIATE,
399 .rr_weight = RR_WEIGHT_NONE,
400 .no_path_retry = NO_PATH_RETRY_UNDEF,
401 .minio = DEFAULT_MINIO,
402 .minio_rq = DEFAULT_MINIO_RQ,
404 .prio_name = PRIO_HDS,
408 * IBM controller family
410 * Maintainer : Hannes Reinecke, SuSE
411 * Mail : hare@suse.de
415 .product = "ProFibre 4000R",
416 .getuid = DEFAULT_GETUID,
417 .features = DEFAULT_FEATURES,
418 .hwhandler = DEFAULT_HWHANDLER,
419 .selector = DEFAULT_SELECTOR,
420 .pgpolicy = MULTIBUS,
421 .pgfailback = FAILBACK_UNDEF,
422 .rr_weight = RR_WEIGHT_NONE,
423 .no_path_retry = NO_PATH_RETRY_UNDEF,
424 .minio = DEFAULT_MINIO,
425 .minio_rq = DEFAULT_MINIO_RQ,
426 .checker_name = DIRECTIO,
427 .prio_name = DEFAULT_PRIO,
431 /* IBM FAStT 1722-600 */
433 .product = "1722-600",
434 .getuid = DEFAULT_GETUID,
435 .features = "1 queue_if_no_path",
436 .hwhandler = "1 rdac",
437 .selector = DEFAULT_SELECTOR,
438 .pgpolicy = GROUP_BY_PRIO,
439 .pgfailback = -FAILBACK_IMMEDIATE,
440 .rr_weight = RR_WEIGHT_NONE,
441 .no_path_retry = 300,
442 .minio = DEFAULT_MINIO,
443 .minio_rq = DEFAULT_MINIO_RQ,
444 .checker_name = RDAC,
445 .prio_name = PRIO_RDAC,
452 .getuid = DEFAULT_GETUID,
453 .features = "1 queue_if_no_path",
454 .hwhandler = "1 rdac",
455 .selector = DEFAULT_SELECTOR,
456 .pgpolicy = GROUP_BY_PRIO,
457 .pgfailback = -FAILBACK_IMMEDIATE,
458 .rr_weight = RR_WEIGHT_NONE,
459 .no_path_retry = 300,
460 .minio = DEFAULT_MINIO,
461 .minio_rq = DEFAULT_MINIO_RQ,
462 .checker_name = RDAC,
463 .prio_name = PRIO_RDAC,
467 /* IBM DS3200 / DS3300 / DS3400 */
470 .getuid = DEFAULT_GETUID,
471 .features = "1 queue_if_no_path",
472 .hwhandler = "1 rdac",
473 .selector = DEFAULT_SELECTOR,
474 .pgpolicy = GROUP_BY_PRIO,
475 .pgfailback = -FAILBACK_IMMEDIATE,
476 .rr_weight = RR_WEIGHT_NONE,
477 .no_path_retry = 300,
478 .minio = DEFAULT_MINIO,
479 .minio_rq = DEFAULT_MINIO_RQ,
480 .checker_name = RDAC,
481 .prio_name = PRIO_RDAC,
485 /* IBM DS4400 / DS4500 / FAStT700 */
488 .getuid = DEFAULT_GETUID,
489 .features = DEFAULT_FEATURES,
490 .hwhandler = "1 rdac",
491 .selector = DEFAULT_SELECTOR,
492 .pgpolicy = GROUP_BY_PRIO,
493 .pgfailback = -FAILBACK_IMMEDIATE,
494 .rr_weight = RR_WEIGHT_NONE,
495 .no_path_retry = NO_PATH_RETRY_QUEUE,
496 .minio = DEFAULT_MINIO,
497 .minio_rq = DEFAULT_MINIO_RQ,
498 .checker_name = RDAC,
499 .prio_name = PRIO_RDAC,
504 .product = "1745|1746",
505 .getuid = DEFAULT_GETUID,
506 .features = "2 pg_init_retries 50",
507 .hwhandler = "1 rdac",
508 .selector = DEFAULT_SELECTOR,
509 .pgpolicy = GROUP_BY_PRIO,
510 .pgfailback = -FAILBACK_IMMEDIATE,
511 .rr_weight = RR_WEIGHT_NONE,
513 .minio = DEFAULT_MINIO,
514 .minio_rq = DEFAULT_MINIO_RQ,
515 .checker_name = RDAC,
516 .prio_name = PRIO_RDAC,
523 .getuid = DEFAULT_GETUID,
524 .features = DEFAULT_FEATURES,
525 .hwhandler = "1 rdac",
526 .selector = DEFAULT_SELECTOR,
527 .pgpolicy = GROUP_BY_PRIO,
528 .pgfailback = -FAILBACK_IMMEDIATE,
529 .rr_weight = RR_WEIGHT_NONE,
530 .no_path_retry = NO_PATH_RETRY_QUEUE,
531 .minio = DEFAULT_MINIO,
532 .minio_rq = DEFAULT_MINIO_RQ,
533 .checker_name = RDAC,
534 .prio_name = PRIO_RDAC,
541 .getuid = DEFAULT_GETUID,
542 .features = DEFAULT_FEATURES,
543 .hwhandler = "1 rdac",
544 .selector = DEFAULT_SELECTOR,
545 .pgpolicy = GROUP_BY_PRIO,
546 .pgfailback = -FAILBACK_IMMEDIATE,
547 .rr_weight = RR_WEIGHT_NONE,
548 .no_path_retry = NO_PATH_RETRY_QUEUE,
549 .minio = DEFAULT_MINIO,
550 .minio_rq = DEFAULT_MINIO_RQ,
551 .checker_name = RDAC,
552 .prio_name = PRIO_RDAC,
559 .getuid = DEFAULT_GETUID,
560 .features = DEFAULT_FEATURES,
561 .hwhandler = "1 rdac",
562 .selector = DEFAULT_SELECTOR,
563 .pgpolicy = GROUP_BY_PRIO,
564 .pgfailback = -FAILBACK_IMMEDIATE,
565 .rr_weight = RR_WEIGHT_NONE,
566 .no_path_retry = NO_PATH_RETRY_QUEUE,
567 .minio = DEFAULT_MINIO,
568 .minio_rq = DEFAULT_MINIO_RQ,
569 .checker_name = RDAC,
570 .prio_name = PRIO_RDAC,
574 /* IBM Netfinity Fibre Channel RAID Controller Unit */
577 .getuid = DEFAULT_GETUID,
578 .features = DEFAULT_FEATURES,
579 .hwhandler = "1 rdac",
580 .selector = DEFAULT_SELECTOR,
581 .pgpolicy = GROUP_BY_PRIO,
582 .pgfailback = -FAILBACK_IMMEDIATE,
583 .rr_weight = RR_WEIGHT_NONE,
584 .no_path_retry = NO_PATH_RETRY_QUEUE,
585 .minio = DEFAULT_MINIO,
586 .minio_rq = DEFAULT_MINIO_RQ,
587 .checker_name = RDAC,
588 .prio_name = PRIO_RDAC,
592 /* IBM DS4200 / FAStT200 */
595 .getuid = DEFAULT_GETUID,
596 .features = DEFAULT_FEATURES,
597 .hwhandler = DEFAULT_HWHANDLER,
598 .selector = DEFAULT_SELECTOR,
599 .pgpolicy = GROUP_BY_SERIAL,
600 .pgfailback = FAILBACK_UNDEF,
601 .rr_weight = RR_WEIGHT_NONE,
602 .no_path_retry = NO_PATH_RETRY_UNDEF,
603 .minio = DEFAULT_MINIO,
604 .minio_rq = DEFAULT_MINIO_RQ,
606 .prio_name = DEFAULT_PRIO,
610 /* IBM ESS F20 aka Shark */
612 .product = "2105800",
613 .getuid = DEFAULT_GETUID,
614 .features = "1 queue_if_no_path",
615 .hwhandler = DEFAULT_HWHANDLER,
616 .selector = DEFAULT_SELECTOR,
617 .pgpolicy = GROUP_BY_SERIAL,
618 .pgfailback = FAILBACK_UNDEF,
619 .rr_weight = RR_WEIGHT_NONE,
620 .no_path_retry = NO_PATH_RETRY_UNDEF,
621 .minio = DEFAULT_MINIO,
622 .minio_rq = DEFAULT_MINIO_RQ,
624 .prio_name = DEFAULT_PRIO,
628 /* IBM ESS F20 aka Shark */
630 .product = "2105F20",
631 .getuid = DEFAULT_GETUID,
632 .features = "1 queue_if_no_path",
633 .hwhandler = DEFAULT_HWHANDLER,
634 .selector = DEFAULT_SELECTOR,
635 .pgpolicy = GROUP_BY_SERIAL,
636 .pgfailback = FAILBACK_UNDEF,
637 .rr_weight = RR_WEIGHT_NONE,
638 .no_path_retry = NO_PATH_RETRY_UNDEF,
639 .minio = DEFAULT_MINIO,
640 .minio_rq = DEFAULT_MINIO_RQ,
642 .prio_name = DEFAULT_PRIO,
648 .product = "1750500",
649 .getuid = DEFAULT_GETUID,
650 .features = "1 queue_if_no_path",
651 .hwhandler = DEFAULT_HWHANDLER,
652 .selector = DEFAULT_SELECTOR,
653 .pgpolicy = GROUP_BY_PRIO,
654 .pgfailback = -FAILBACK_IMMEDIATE,
655 .rr_weight = RR_WEIGHT_NONE,
656 .no_path_retry = NO_PATH_RETRY_UNDEF,
657 .minio = DEFAULT_MINIO,
658 .minio_rq = DEFAULT_MINIO_RQ,
660 .prio_name = PRIO_ALUA,
666 .product = "2107900",
667 .getuid = DEFAULT_GETUID,
668 .features = "1 queue_if_no_path",
669 .hwhandler = DEFAULT_HWHANDLER,
670 .selector = DEFAULT_SELECTOR,
671 .pgpolicy = MULTIBUS,
672 .pgfailback = FAILBACK_UNDEF,
673 .rr_weight = RR_WEIGHT_NONE,
674 .no_path_retry = NO_PATH_RETRY_UNDEF,
675 .minio = DEFAULT_MINIO,
676 .minio_rq = DEFAULT_MINIO_RQ,
678 .prio_name = DEFAULT_PRIO,
682 /* IBM SAN Volume Controller */
685 .getuid = DEFAULT_GETUID,
686 .features = "1 queue_if_no_path",
687 .hwhandler = DEFAULT_HWHANDLER,
688 .selector = DEFAULT_SELECTOR,
689 .pgpolicy = GROUP_BY_PRIO,
690 .pgfailback = -FAILBACK_IMMEDIATE,
691 .rr_weight = RR_WEIGHT_NONE,
692 .no_path_retry = NO_PATH_RETRY_UNDEF,
693 .minio = DEFAULT_MINIO,
694 .minio_rq = DEFAULT_MINIO_RQ,
696 .prio_name = PRIO_ALUA,
700 /* IBM S/390 ECKD DASD */
702 .product = "S/390 DASD ECKD",
703 .bl_product = "S/390.*",
704 .getuid = "/sbin/dasdinfo -u -b %n",
705 .features = "1 queue_if_no_path",
706 .hwhandler = DEFAULT_HWHANDLER,
707 .selector = DEFAULT_SELECTOR,
708 .pgpolicy = MULTIBUS,
709 .pgfailback = FAILBACK_UNDEF,
710 .rr_weight = RR_WEIGHT_NONE,
711 .no_path_retry = NO_PATH_RETRY_UNDEF,
712 .minio = DEFAULT_MINIO,
713 .minio_rq = DEFAULT_MINIO_RQ,
714 .checker_name = DIRECTIO,
715 .prio_name = DEFAULT_PRIO,
719 /* IBM S/390 FBA DASD */
721 .product = "S/390 DASD FBA",
722 .bl_product = "S/390.*",
723 .getuid = "/sbin/dasdinfo -u -b %n",
724 .features = "1 queue_if_no_path",
725 .hwhandler = DEFAULT_HWHANDLER,
726 .selector = DEFAULT_SELECTOR,
727 .pgpolicy = MULTIBUS,
728 .pgfailback = FAILBACK_UNDEF,
729 .rr_weight = RR_WEIGHT_NONE,
730 .no_path_retry = NO_PATH_RETRY_UNDEF,
731 .minio = DEFAULT_MINIO,
732 .minio_rq = DEFAULT_MINIO_RQ,
733 .checker_name = DIRECTIO,
734 .prio_name = DEFAULT_PRIO,
741 .getuid = DEFAULT_GETUID,
742 .features = "1 queue_if_no_path",
743 .hwhandler = "1 alua",
744 .selector = DEFAULT_SELECTOR,
745 .pgpolicy = GROUP_BY_PRIO,
746 .pgfailback = -FAILBACK_IMMEDIATE,
747 .rr_weight = RR_WEIGHT_NONE,
748 .no_path_retry = NO_PATH_RETRY_UNDEF,
749 .minio = DEFAULT_MINIO,
750 .minio_rq = DEFAULT_MINIO_RQ,
752 .prio_name = PRIO_ALUA,
756 * IBM Power Virtual SCSI Devices
758 * Maintainer : Brian King, IBM
759 * Mail : brking@linux.vnet.ibm.com
765 .getuid = DEFAULT_GETUID,
766 .features = DEFAULT_FEATURES,
767 .hwhandler = DEFAULT_HWHANDLER,
768 .selector = DEFAULT_SELECTOR,
769 .pgpolicy = MULTIBUS,
770 .pgfailback = -FAILBACK_IMMEDIATE,
771 .rr_weight = RR_WEIGHT_NONE,
772 .no_path_retry = (300 / DEFAULT_CHECKINT),
773 .minio = DEFAULT_MINIO,
774 .minio_rq = DEFAULT_MINIO_RQ,
775 .checker_name = DIRECTIO,
776 .prio_name = DEFAULT_PRIO,
780 /* IBM 3303 NVDISK */
782 .product = "3303 NVDISK",
783 .getuid = DEFAULT_GETUID,
784 .features = DEFAULT_FEATURES,
785 .hwhandler = DEFAULT_HWHANDLER,
786 .selector = DEFAULT_SELECTOR,
787 .pgpolicy = FAILOVER,
788 .pgfailback = -FAILBACK_IMMEDIATE,
789 .rr_weight = RR_WEIGHT_NONE,
790 .no_path_retry = (300 / DEFAULT_CHECKINT),
791 .minio = DEFAULT_MINIO,
792 .minio_rq = DEFAULT_MINIO_RQ,
794 .prio_name = DEFAULT_PRIO,
801 .getuid = DEFAULT_GETUID,
802 .features = DEFAULT_FEATURES,
803 .hwhandler = "1 alua",
804 .selector = DEFAULT_SELECTOR,
805 .pgpolicy = GROUP_BY_PRIO,
806 .pgfailback = -FAILBACK_IMMEDIATE,
807 .rr_weight = RR_WEIGHT_NONE,
808 .no_path_retry = (300 / DEFAULT_CHECKINT),
809 .minio = DEFAULT_MINIO,
810 .minio_rq = DEFAULT_MINIO_RQ,
812 .prio_name = PRIO_ALUA,
819 .getuid = DEFAULT_GETUID,
820 .features = "2 pg_init_retries 50",
821 .hwhandler = "1 rdac",
822 .selector = DEFAULT_SELECTOR,
823 .pgpolicy = GROUP_BY_PRIO,
824 .pgfailback = -FAILBACK_IMMEDIATE,
825 .rr_weight = RR_WEIGHT_NONE,
827 .minio = DEFAULT_MINIO,
828 .minio_rq = DEFAULT_MINIO_RQ,
829 .checker_name = RDAC,
830 .prio_name = PRIO_RDAC,
836 .product = "MD3000i",
837 .getuid = DEFAULT_GETUID,
838 .features = "2 pg_init_retries 50",
839 .hwhandler = "1 rdac",
840 .selector = DEFAULT_SELECTOR,
841 .pgpolicy = GROUP_BY_PRIO,
842 .pgfailback = -FAILBACK_IMMEDIATE,
843 .rr_weight = RR_WEIGHT_NONE,
845 .minio = DEFAULT_MINIO,
846 .minio_rq = DEFAULT_MINIO_RQ,
847 .checker_name = RDAC,
848 .prio_name = PRIO_RDAC,
855 .getuid = DEFAULT_GETUID,
856 .features = "2 pg_init_retries 50",
857 .hwhandler = "1 rdac",
858 .selector = DEFAULT_SELECTOR,
859 .pgpolicy = GROUP_BY_PRIO,
860 .pgfailback = -FAILBACK_IMMEDIATE,
861 .rr_weight = RR_WEIGHT_NONE,
863 .minio = DEFAULT_MINIO,
864 .minio_rq = DEFAULT_MINIO_RQ,
865 .checker_name = RDAC,
866 .prio_name = PRIO_RDAC,
872 .product = "MD32xxi",
873 .getuid = DEFAULT_GETUID,
874 .features = "2 pg_init_retries 50",
875 .hwhandler = "1 rdac",
876 .selector = DEFAULT_SELECTOR,
877 .pgpolicy = GROUP_BY_PRIO,
878 .pgfailback = -FAILBACK_IMMEDIATE,
879 .rr_weight = RR_WEIGHT_NONE,
881 .minio = DEFAULT_MINIO,
882 .minio_rq = DEFAULT_MINIO_RQ,
883 .checker_name = RDAC,
884 .prio_name = PRIO_RDAC,
888 * NETAPP controller family
890 * Maintainer : Dave Wysochanski
891 * Mail : davidw@netapp.com
896 .getuid = DEFAULT_GETUID,
897 .features = "1 queue_if_no_path",
898 .hwhandler = DEFAULT_HWHANDLER,
899 .selector = DEFAULT_SELECTOR,
900 .pgpolicy = GROUP_BY_PRIO,
901 .pgfailback = -FAILBACK_IMMEDIATE,
902 .rr_weight = RR_WEIGHT_NONE,
903 .no_path_retry = NO_PATH_RETRY_UNDEF,
905 .checker_name = DIRECTIO,
906 .prio_name = PRIO_ONTAP,
910 * NEXENTA/COMSTAR controller family
912 * Maintainer : Yacine Kheddache
913 * Mail : yacine@alyseo.com
917 .product = "COMSTAR",
918 .getuid = DEFAULT_GETUID,
919 .features = "1 queue_if_no_path",
920 .hwhandler = DEFAULT_HWHANDLER,
921 .selector = DEFAULT_SELECTOR,
922 .pgpolicy = GROUP_BY_SERIAL,
923 .pgfailback = -FAILBACK_IMMEDIATE,
924 .rr_weight = RR_WEIGHT_NONE,
927 .checker_name = DIRECTIO,
928 .prio_name = DEFAULT_PRIO,
932 * IBM NSeries (NETAPP) controller family
934 * Maintainer : Dave Wysochanski
935 * Mail : davidw@netapp.com
939 .product = "Nseries.*",
940 .getuid = DEFAULT_GETUID,
941 .features = "1 queue_if_no_path",
942 .hwhandler = DEFAULT_HWHANDLER,
943 .selector = DEFAULT_SELECTOR,
944 .pgpolicy = GROUP_BY_PRIO,
945 .pgfailback = -FAILBACK_IMMEDIATE,
946 .rr_weight = RR_WEIGHT_NONE,
947 .no_path_retry = NO_PATH_RETRY_UNDEF,
949 .checker_name = DIRECTIO,
950 .prio_name = PRIO_ONTAP,
954 * Pillar Data controller family
956 * Maintainer : Srinivasan Ramani
957 * Mail : sramani@pillardata.com
961 .product = "Axiom.*",
962 .getuid = DEFAULT_GETUID,
963 .features = DEFAULT_FEATURES,
964 .hwhandler = DEFAULT_HWHANDLER,
965 .selector = DEFAULT_SELECTOR,
966 .pgpolicy = GROUP_BY_PRIO,
967 .pgfailback = FAILBACK_UNDEF,
968 .rr_weight = RR_WEIGHT_NONE,
969 .no_path_retry = NO_PATH_RETRY_UNDEF,
970 .minio = DEFAULT_MINIO,
971 .minio_rq = DEFAULT_MINIO_RQ,
973 .prio_name = PRIO_ALUA,
980 * Maintainer : Christophe Varoqui
981 * Mail : christophe.varoqui@opensvc.com
985 .product = "TP9[13]00",
986 .getuid = DEFAULT_GETUID,
987 .features = DEFAULT_FEATURES,
988 .hwhandler = DEFAULT_HWHANDLER,
989 .selector = DEFAULT_SELECTOR,
990 .pgpolicy = MULTIBUS,
991 .pgfailback = FAILBACK_UNDEF,
992 .rr_weight = RR_WEIGHT_NONE,
993 .no_path_retry = NO_PATH_RETRY_UNDEF,
994 .minio = DEFAULT_MINIO,
995 .minio_rq = DEFAULT_MINIO_RQ,
996 .checker_name = DIRECTIO,
997 .prio_name = DEFAULT_PRIO,
1002 .product = "TP9[45]00",
1003 .getuid = DEFAULT_GETUID,
1004 .features = DEFAULT_FEATURES,
1005 .hwhandler = "1 rdac",
1006 .selector = DEFAULT_SELECTOR,
1007 .pgpolicy = GROUP_BY_PRIO,
1008 .pgfailback = -FAILBACK_IMMEDIATE,
1009 .rr_weight = RR_WEIGHT_NONE,
1010 .no_path_retry = NO_PATH_RETRY_QUEUE,
1011 .minio = DEFAULT_MINIO,
1012 .minio_rq = DEFAULT_MINIO_RQ,
1013 .checker_name = RDAC,
1014 .prio_name = PRIO_RDAC,
1020 .getuid = DEFAULT_GETUID,
1021 .features = "2 pg_init_retries 50",
1022 .hwhandler = "1 rdac",
1023 .selector = DEFAULT_SELECTOR,
1024 .pgpolicy = GROUP_BY_PRIO,
1025 .pgfailback = -FAILBACK_IMMEDIATE,
1026 .rr_weight = RR_WEIGHT_NONE,
1027 .no_path_retry = 15,
1028 .minio = DEFAULT_MINIO,
1029 .minio_rq = DEFAULT_MINIO_RQ,
1030 .checker_name = RDAC,
1031 .prio_name = PRIO_RDAC,
1034 /* NEC Storage M Series */
1037 .product = "DISK ARRAY",
1038 .getuid = DEFAULT_GETUID,
1039 .features = DEFAULT_FEATURES,
1040 .hwhandler = "1 alua",
1041 .selector = DEFAULT_SELECTOR,
1042 .pgpolicy = GROUP_BY_PRIO,
1043 .pgfailback = -FAILBACK_IMMEDIATE,
1044 .rr_weight = RR_WEIGHT_NONE,
1045 .no_path_retry = NO_PATH_RETRY_UNDEF,
1046 .minio = DEFAULT_MINIO,
1047 .minio_rq = DEFAULT_MINIO_RQ,
1048 .checker_name = TUR,
1049 .prio_name = PRIO_ALUA,
1055 * Maintainer : Christophe Varoqui
1056 * Mail : christophe.varoqui@opensvc.com
1060 .product = "OPENstorage D280",
1061 .getuid = DEFAULT_GETUID,
1062 .features = DEFAULT_FEATURES,
1063 .hwhandler = "1 rdac",
1064 .selector = DEFAULT_SELECTOR,
1065 .pgpolicy = GROUP_BY_PRIO,
1066 .pgfailback = -FAILBACK_IMMEDIATE,
1067 .rr_weight = RR_WEIGHT_NONE,
1068 .no_path_retry = NO_PATH_RETRY_UNDEF,
1069 .minio = DEFAULT_MINIO,
1070 .minio_rq = DEFAULT_MINIO_RQ,
1071 .checker_name = TUR,
1072 .prio_name = PRIO_RDAC,
1078 * Maintainer : Christophe Varoqui
1079 * Mail : christophe.varoqui@opensvc.com
1083 .product = "(StorEdge 3510|T4)",
1084 .getuid = DEFAULT_GETUID,
1085 .features = DEFAULT_FEATURES,
1086 .hwhandler = DEFAULT_HWHANDLER,
1087 .selector = DEFAULT_SELECTOR,
1088 .pgpolicy = MULTIBUS,
1089 .pgfailback = FAILBACK_UNDEF,
1090 .rr_weight = RR_WEIGHT_NONE,
1091 .no_path_retry = NO_PATH_RETRY_UNDEF,
1092 .minio = DEFAULT_MINIO,
1093 .minio_rq = DEFAULT_MINIO_RQ,
1094 .checker_name = DIRECTIO,
1095 .prio_name = DEFAULT_PRIO,
1099 .vendor = "EUROLOGC",
1100 .product = "FC2502",
1101 .getuid ="/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1102 .features = DEFAULT_FEATURES,
1103 .hwhandler = DEFAULT_HWHANDLER,
1104 .selector = DEFAULT_SELECTOR,
1105 .pgpolicy = GROUP_BY_PRIO,
1106 .pgfailback = FAILBACK_UNDEF,
1107 .rr_weight = RR_WEIGHT_NONE,
1108 .no_path_retry = NO_PATH_RETRY_UNDEF,
1109 .minio = DEFAULT_MINIO,
1110 .minio_rq = DEFAULT_MINIO_RQ,
1111 .checker_name = DEFAULT_CHECKER,
1112 .prio_name = DEFAULT_PRIO,
1117 * Maintainer : Bart Brooks, Pivot3
1118 * Mail : bartb@pivot3.com
1122 .product = "RAIGE VOLUME",
1123 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1124 .features = "1 queue_if_no_path",
1125 .hwhandler = DEFAULT_HWHANDLER,
1126 .selector = DEFAULT_SELECTOR,
1127 .pgpolicy = MULTIBUS,
1128 .pgfailback = FAILBACK_UNDEF,
1129 .rr_weight = RR_WEIGHT_NONE,
1130 .no_path_retry = NO_PATH_RETRY_UNDEF,
1132 .checker_name = TUR,
1133 .prio_name = DEFAULT_PRIO,
1138 .product = "CSM200_R",
1139 .getuid = DEFAULT_GETUID,
1140 .features = DEFAULT_FEATURES,
1141 .hwhandler = "1 rdac",
1142 .selector = DEFAULT_SELECTOR,
1143 .pgpolicy = GROUP_BY_PRIO,
1144 .pgfailback = -FAILBACK_IMMEDIATE,
1145 .rr_weight = RR_WEIGHT_NONE,
1146 .no_path_retry = NO_PATH_RETRY_QUEUE,
1147 .minio = DEFAULT_MINIO,
1148 .minio_rq = DEFAULT_MINIO_RQ,
1149 .checker_name = RDAC,
1150 .prio_name = PRIO_RDAC,
1153 /* SUN/LSI 2510, 2540, 2530, 2540 */
1156 .product = "LCSM100_[IEFS]",
1157 .getuid = DEFAULT_GETUID,
1158 .features = DEFAULT_FEATURES,
1159 .hwhandler = "1 rdac",
1160 .selector = DEFAULT_SELECTOR,
1161 .pgpolicy = GROUP_BY_PRIO,
1162 .pgfailback = -FAILBACK_IMMEDIATE,
1163 .rr_weight = RR_WEIGHT_NONE,
1164 .no_path_retry = NO_PATH_RETRY_QUEUE,
1165 .minio = DEFAULT_MINIO,
1166 .minio_rq = DEFAULT_MINIO_RQ,
1167 .checker_name = RDAC,
1168 .prio_name = PRIO_RDAC,
1171 /* LSI Generic rdac storage */
1173 .vendor = "(LSI|ENGENIO)",
1174 .product = "INF-01-00",
1175 .getuid = DEFAULT_GETUID,
1176 .features = "2 pg_init_retries 50",
1177 .hwhandler = "1 rdac",
1178 .selector = DEFAULT_SELECTOR,
1179 .pgpolicy = GROUP_BY_PRIO,
1180 .pgfailback = -FAILBACK_IMMEDIATE,
1181 .rr_weight = RR_WEIGHT_NONE,
1182 .no_path_retry = 15,
1183 .minio = DEFAULT_MINIO,
1184 .minio_rq = DEFAULT_MINIO_RQ,
1185 .checker_name = RDAC,
1186 .prio_name = PRIO_RDAC,
1191 .product = "FLEXLINE 380",
1192 .bl_product = "Universal Xport",
1193 .getuid = DEFAULT_GETUID,
1194 .features = DEFAULT_FEATURES,
1195 .hwhandler = "1 rdac",
1196 .selector = DEFAULT_SELECTOR,
1197 .pgpolicy = GROUP_BY_PRIO,
1198 .pgfailback = -FAILBACK_IMMEDIATE,
1199 .rr_weight = RR_WEIGHT_NONE,
1200 .no_path_retry = NO_PATH_RETRY_QUEUE,
1201 .minio = DEFAULT_MINIO,
1202 .minio_rq = DEFAULT_MINIO_RQ,
1203 .checker_name = RDAC,
1204 .prio_name = PRIO_RDAC,
1223 .checker_name = NULL,
1230 setup_default_hwtable (vector hw)
1233 struct hwentry * hwe = default_hw;
1235 while (hwe->vendor) {
1236 r += store_hwe(hw, hwe);