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,
370 .product = "ETERNUS_DX(L|400|8000)",
371 .getuid = DEFAULT_GETUID,
372 .features = "1 queue_if_no_path",
373 .hwhandler = DEFAULT_HWHANDLER,
374 .selector = DEFAULT_SELECTOR,
375 .pgpolicy = GROUP_BY_PRIO,
376 .pgfailback = -FAILBACK_IMMEDIATE,
377 .rr_weight = RR_WEIGHT_NONE,
379 .minio = DEFAULT_MINIO,
381 .prio_name = PRIO_ALUA,
385 * Hitachi controller family
387 * Maintainer : Matthias Rudolph
388 * Mail : matthias.rudolph@hds.com
391 .vendor = "(HITACHI|HP)",
392 .product = "OPEN-.*",
393 .getuid = DEFAULT_GETUID,
394 .features = DEFAULT_FEATURES,
395 .hwhandler = DEFAULT_HWHANDLER,
396 .selector = DEFAULT_SELECTOR,
397 .pgpolicy = MULTIBUS,
398 .pgfailback = FAILBACK_UNDEF,
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 = DEFAULT_PRIO,
410 .getuid = DEFAULT_GETUID,
411 .features = "1 queue_if_no_path",
412 .hwhandler = DEFAULT_HWHANDLER,
413 .selector = DEFAULT_SELECTOR,
414 .pgpolicy = GROUP_BY_PRIO,
415 .pgfailback = -FAILBACK_IMMEDIATE,
416 .rr_weight = RR_WEIGHT_NONE,
417 .no_path_retry = NO_PATH_RETRY_UNDEF,
418 .minio = DEFAULT_MINIO,
419 .minio_rq = DEFAULT_MINIO_RQ,
421 .prio_name = PRIO_HDS,
425 * IBM controller family
427 * Maintainer : Hannes Reinecke, SuSE
428 * Mail : hare@suse.de
432 .product = "ProFibre 4000R",
433 .getuid = DEFAULT_GETUID,
434 .features = DEFAULT_FEATURES,
435 .hwhandler = DEFAULT_HWHANDLER,
436 .selector = DEFAULT_SELECTOR,
437 .pgpolicy = MULTIBUS,
438 .pgfailback = FAILBACK_UNDEF,
439 .rr_weight = RR_WEIGHT_NONE,
440 .no_path_retry = NO_PATH_RETRY_UNDEF,
441 .minio = DEFAULT_MINIO,
442 .minio_rq = DEFAULT_MINIO_RQ,
443 .checker_name = DIRECTIO,
444 .prio_name = DEFAULT_PRIO,
448 /* IBM FAStT 1722-600 */
450 .product = "^1722-600",
451 .getuid = DEFAULT_GETUID,
452 .features = "1 queue_if_no_path",
453 .hwhandler = "1 rdac",
454 .selector = DEFAULT_SELECTOR,
455 .pgpolicy = GROUP_BY_PRIO,
456 .pgfailback = -FAILBACK_IMMEDIATE,
457 .rr_weight = RR_WEIGHT_NONE,
458 .no_path_retry = 300,
459 .minio = DEFAULT_MINIO,
460 .minio_rq = DEFAULT_MINIO_RQ,
461 .checker_name = RDAC,
462 .prio_name = PRIO_RDAC,
469 .getuid = DEFAULT_GETUID,
470 .features = "1 queue_if_no_path",
471 .hwhandler = "1 rdac",
472 .selector = DEFAULT_SELECTOR,
473 .pgpolicy = GROUP_BY_PRIO,
474 .pgfailback = -FAILBACK_IMMEDIATE,
475 .rr_weight = RR_WEIGHT_NONE,
476 .no_path_retry = 300,
477 .minio = DEFAULT_MINIO,
478 .minio_rq = DEFAULT_MINIO_RQ,
479 .checker_name = RDAC,
480 .prio_name = PRIO_RDAC,
484 /* IBM DS3200 / DS3300 / DS3400 */
487 .getuid = DEFAULT_GETUID,
488 .features = "1 queue_if_no_path",
489 .hwhandler = "1 rdac",
490 .selector = DEFAULT_SELECTOR,
491 .pgpolicy = GROUP_BY_PRIO,
492 .pgfailback = -FAILBACK_IMMEDIATE,
493 .rr_weight = RR_WEIGHT_NONE,
494 .no_path_retry = 300,
495 .minio = DEFAULT_MINIO,
496 .minio_rq = DEFAULT_MINIO_RQ,
497 .checker_name = RDAC,
498 .prio_name = PRIO_RDAC,
502 /* IBM DS4400 / DS4500 / FAStT700 */
505 .getuid = DEFAULT_GETUID,
506 .features = DEFAULT_FEATURES,
507 .hwhandler = "1 rdac",
508 .selector = DEFAULT_SELECTOR,
509 .pgpolicy = GROUP_BY_PRIO,
510 .pgfailback = -FAILBACK_IMMEDIATE,
511 .rr_weight = RR_WEIGHT_NONE,
512 .no_path_retry = NO_PATH_RETRY_QUEUE,
513 .minio = DEFAULT_MINIO,
514 .minio_rq = DEFAULT_MINIO_RQ,
515 .checker_name = RDAC,
516 .prio_name = PRIO_RDAC,
521 .product = "^1745|^1746",
522 .getuid = DEFAULT_GETUID,
523 .features = "2 pg_init_retries 50",
524 .hwhandler = "1 rdac",
525 .selector = DEFAULT_SELECTOR,
526 .pgpolicy = GROUP_BY_PRIO,
527 .pgfailback = -FAILBACK_IMMEDIATE,
528 .rr_weight = RR_WEIGHT_NONE,
530 .minio = DEFAULT_MINIO,
531 .minio_rq = DEFAULT_MINIO_RQ,
532 .checker_name = RDAC,
533 .prio_name = PRIO_RDAC,
540 .getuid = DEFAULT_GETUID,
541 .features = DEFAULT_FEATURES,
542 .hwhandler = "1 rdac",
543 .selector = DEFAULT_SELECTOR,
544 .pgpolicy = GROUP_BY_PRIO,
545 .pgfailback = -FAILBACK_IMMEDIATE,
546 .rr_weight = RR_WEIGHT_NONE,
547 .no_path_retry = NO_PATH_RETRY_QUEUE,
548 .minio = DEFAULT_MINIO,
549 .minio_rq = DEFAULT_MINIO_RQ,
550 .checker_name = RDAC,
551 .prio_name = PRIO_RDAC,
558 .getuid = DEFAULT_GETUID,
559 .features = DEFAULT_FEATURES,
560 .hwhandler = "1 rdac",
561 .selector = DEFAULT_SELECTOR,
562 .pgpolicy = GROUP_BY_PRIO,
563 .pgfailback = -FAILBACK_IMMEDIATE,
564 .rr_weight = RR_WEIGHT_NONE,
565 .no_path_retry = NO_PATH_RETRY_QUEUE,
566 .minio = DEFAULT_MINIO,
567 .minio_rq = DEFAULT_MINIO_RQ,
568 .checker_name = RDAC,
569 .prio_name = PRIO_RDAC,
576 .getuid = DEFAULT_GETUID,
577 .features = DEFAULT_FEATURES,
578 .hwhandler = "1 rdac",
579 .selector = DEFAULT_SELECTOR,
580 .pgpolicy = GROUP_BY_PRIO,
581 .pgfailback = -FAILBACK_IMMEDIATE,
582 .rr_weight = RR_WEIGHT_NONE,
583 .no_path_retry = NO_PATH_RETRY_QUEUE,
584 .minio = DEFAULT_MINIO,
585 .minio_rq = DEFAULT_MINIO_RQ,
586 .checker_name = RDAC,
587 .prio_name = PRIO_RDAC,
591 /* IBM Netfinity Fibre Channel RAID Controller Unit */
594 .getuid = DEFAULT_GETUID,
595 .features = DEFAULT_FEATURES,
596 .hwhandler = "1 rdac",
597 .selector = DEFAULT_SELECTOR,
598 .pgpolicy = GROUP_BY_PRIO,
599 .pgfailback = -FAILBACK_IMMEDIATE,
600 .rr_weight = RR_WEIGHT_NONE,
601 .no_path_retry = NO_PATH_RETRY_QUEUE,
602 .minio = DEFAULT_MINIO,
603 .minio_rq = DEFAULT_MINIO_RQ,
604 .checker_name = RDAC,
605 .prio_name = PRIO_RDAC,
609 /* IBM DS4200 / FAStT200 */
612 .getuid = DEFAULT_GETUID,
613 .features = DEFAULT_FEATURES,
614 .hwhandler = DEFAULT_HWHANDLER,
615 .selector = DEFAULT_SELECTOR,
616 .pgpolicy = GROUP_BY_SERIAL,
617 .pgfailback = FAILBACK_UNDEF,
618 .rr_weight = RR_WEIGHT_NONE,
619 .no_path_retry = NO_PATH_RETRY_UNDEF,
620 .minio = DEFAULT_MINIO,
621 .minio_rq = DEFAULT_MINIO_RQ,
623 .prio_name = DEFAULT_PRIO,
627 /* IBM ESS F20 aka Shark */
629 .product = "^2105800",
630 .getuid = DEFAULT_GETUID,
631 .features = "1 queue_if_no_path",
632 .hwhandler = DEFAULT_HWHANDLER,
633 .selector = DEFAULT_SELECTOR,
634 .pgpolicy = GROUP_BY_SERIAL,
635 .pgfailback = FAILBACK_UNDEF,
636 .rr_weight = RR_WEIGHT_NONE,
637 .no_path_retry = NO_PATH_RETRY_UNDEF,
638 .minio = DEFAULT_MINIO,
639 .minio_rq = DEFAULT_MINIO_RQ,
641 .prio_name = DEFAULT_PRIO,
645 /* IBM ESS F20 aka Shark */
647 .product = "^2105F20",
648 .getuid = DEFAULT_GETUID,
649 .features = "1 queue_if_no_path",
650 .hwhandler = DEFAULT_HWHANDLER,
651 .selector = DEFAULT_SELECTOR,
652 .pgpolicy = GROUP_BY_SERIAL,
653 .pgfailback = FAILBACK_UNDEF,
654 .rr_weight = RR_WEIGHT_NONE,
655 .no_path_retry = NO_PATH_RETRY_UNDEF,
656 .minio = DEFAULT_MINIO,
657 .minio_rq = DEFAULT_MINIO_RQ,
659 .prio_name = DEFAULT_PRIO,
665 .product = "^1750500",
666 .getuid = DEFAULT_GETUID,
667 .features = "1 queue_if_no_path",
668 .hwhandler = DEFAULT_HWHANDLER,
669 .selector = DEFAULT_SELECTOR,
670 .pgpolicy = GROUP_BY_PRIO,
671 .pgfailback = -FAILBACK_IMMEDIATE,
672 .rr_weight = RR_WEIGHT_NONE,
673 .no_path_retry = NO_PATH_RETRY_UNDEF,
674 .minio = DEFAULT_MINIO,
675 .minio_rq = DEFAULT_MINIO_RQ,
677 .prio_name = PRIO_ALUA,
683 .product = "^2107900",
684 .getuid = DEFAULT_GETUID,
685 .features = "1 queue_if_no_path",
686 .hwhandler = DEFAULT_HWHANDLER,
687 .selector = DEFAULT_SELECTOR,
688 .pgpolicy = MULTIBUS,
689 .pgfailback = FAILBACK_UNDEF,
690 .rr_weight = RR_WEIGHT_NONE,
691 .no_path_retry = NO_PATH_RETRY_UNDEF,
692 .minio = DEFAULT_MINIO,
693 .minio_rq = DEFAULT_MINIO_RQ,
695 .prio_name = DEFAULT_PRIO,
699 /* IBM SAN Volume Controller */
702 .getuid = DEFAULT_GETUID,
703 .features = "1 queue_if_no_path",
704 .hwhandler = DEFAULT_HWHANDLER,
705 .selector = DEFAULT_SELECTOR,
706 .pgpolicy = GROUP_BY_PRIO,
707 .pgfailback = -FAILBACK_IMMEDIATE,
708 .rr_weight = RR_WEIGHT_NONE,
709 .no_path_retry = NO_PATH_RETRY_UNDEF,
710 .minio = DEFAULT_MINIO,
711 .minio_rq = DEFAULT_MINIO_RQ,
713 .prio_name = PRIO_ALUA,
717 /* IBM S/390 ECKD DASD */
719 .product = "S/390 DASD ECKD",
720 .bl_product = "S/390.*",
721 .getuid = "/sbin/dasdinfo -u -b %n",
722 .features = "1 queue_if_no_path",
723 .hwhandler = DEFAULT_HWHANDLER,
724 .selector = DEFAULT_SELECTOR,
725 .pgpolicy = MULTIBUS,
726 .pgfailback = FAILBACK_UNDEF,
727 .rr_weight = RR_WEIGHT_NONE,
728 .no_path_retry = NO_PATH_RETRY_UNDEF,
729 .minio = DEFAULT_MINIO,
730 .minio_rq = DEFAULT_MINIO_RQ,
731 .checker_name = DIRECTIO,
732 .prio_name = DEFAULT_PRIO,
736 /* IBM S/390 FBA DASD */
738 .product = "S/390 DASD FBA",
739 .bl_product = "S/390.*",
740 .getuid = "/sbin/dasdinfo -u -b %n",
741 .features = "1 queue_if_no_path",
742 .hwhandler = DEFAULT_HWHANDLER,
743 .selector = DEFAULT_SELECTOR,
744 .pgpolicy = MULTIBUS,
745 .pgfailback = FAILBACK_UNDEF,
746 .rr_weight = RR_WEIGHT_NONE,
747 .no_path_retry = NO_PATH_RETRY_UNDEF,
748 .minio = DEFAULT_MINIO,
749 .minio_rq = DEFAULT_MINIO_RQ,
750 .checker_name = DIRECTIO,
751 .prio_name = DEFAULT_PRIO,
758 .getuid = DEFAULT_GETUID,
759 .features = "1 queue_if_no_path",
760 .hwhandler = "1 alua",
761 .selector = DEFAULT_SELECTOR,
762 .pgpolicy = GROUP_BY_PRIO,
763 .pgfailback = -FAILBACK_IMMEDIATE,
764 .rr_weight = RR_WEIGHT_NONE,
765 .no_path_retry = NO_PATH_RETRY_UNDEF,
766 .minio = DEFAULT_MINIO,
767 .minio_rq = DEFAULT_MINIO_RQ,
769 .prio_name = PRIO_ALUA,
775 .product = "1820N00",
776 .getuid = DEFAULT_GETUID,
777 .features = DEFAULT_FEATURES,
778 .hwhandler = DEFAULT_HWHANDLER,
779 .selector = DEFAULT_SELECTOR,
780 .pgpolicy = GROUP_BY_PRIO,
781 .pgfailback = -FAILBACK_IMMEDIATE,
782 .rr_weight = RR_WEIGHT_NONE,
783 .no_path_retry = NO_PATH_RETRY_QUEUE,
785 .minio_rq = DEFAULT_MINIO_RQ,
787 .prio_name = PRIO_ALUA,
791 /* IBM XIV Storage System */
793 .product = "2810XIV",
794 .getuid = DEFAULT_GETUID,
795 .features = "1 queue_if_no_path",
796 .hwhandler = DEFAULT_HWHANDLER,
797 .selector = DEFAULT_SELECTOR,
798 .pgpolicy = MULTIBUS,
800 .rr_weight = RR_WEIGHT_NONE,
801 .no_path_retry = NO_PATH_RETRY_UNDEF,
803 .minio_rq = DEFAULT_MINIO_RQ,
805 .prio_name = DEFAULT_PRIO,
809 * IBM Power Virtual SCSI Devices
811 * Maintainer : Brian King, IBM
812 * Mail : brking@linux.vnet.ibm.com
818 .getuid = DEFAULT_GETUID,
819 .features = DEFAULT_FEATURES,
820 .hwhandler = DEFAULT_HWHANDLER,
821 .selector = DEFAULT_SELECTOR,
822 .pgpolicy = MULTIBUS,
823 .pgfailback = -FAILBACK_IMMEDIATE,
824 .rr_weight = RR_WEIGHT_NONE,
825 .no_path_retry = (300 / DEFAULT_CHECKINT),
826 .minio = DEFAULT_MINIO,
827 .minio_rq = DEFAULT_MINIO_RQ,
828 .checker_name = DIRECTIO,
829 .prio_name = DEFAULT_PRIO,
833 /* IBM 3303 NVDISK */
835 .product = "3303 NVDISK",
836 .getuid = DEFAULT_GETUID,
837 .features = DEFAULT_FEATURES,
838 .hwhandler = DEFAULT_HWHANDLER,
839 .selector = DEFAULT_SELECTOR,
840 .pgpolicy = FAILOVER,
841 .pgfailback = -FAILBACK_IMMEDIATE,
842 .rr_weight = RR_WEIGHT_NONE,
843 .no_path_retry = (300 / DEFAULT_CHECKINT),
844 .minio = DEFAULT_MINIO,
845 .minio_rq = DEFAULT_MINIO_RQ,
847 .prio_name = DEFAULT_PRIO,
854 .getuid = DEFAULT_GETUID,
855 .features = DEFAULT_FEATURES,
856 .hwhandler = "1 alua",
857 .selector = DEFAULT_SELECTOR,
858 .pgpolicy = GROUP_BY_PRIO,
859 .pgfailback = -FAILBACK_IMMEDIATE,
860 .rr_weight = RR_WEIGHT_NONE,
861 .no_path_retry = (300 / DEFAULT_CHECKINT),
862 .minio = DEFAULT_MINIO,
863 .minio_rq = DEFAULT_MINIO_RQ,
865 .prio_name = PRIO_ALUA,
872 .getuid = DEFAULT_GETUID,
873 .features = "2 pg_init_retries 50",
874 .hwhandler = "1 rdac",
875 .selector = DEFAULT_SELECTOR,
876 .pgpolicy = GROUP_BY_PRIO,
877 .pgfailback = -FAILBACK_IMMEDIATE,
878 .rr_weight = RR_WEIGHT_NONE,
880 .minio = DEFAULT_MINIO,
881 .minio_rq = DEFAULT_MINIO_RQ,
882 .checker_name = RDAC,
883 .prio_name = PRIO_RDAC,
889 .product = "MD3000i",
890 .getuid = DEFAULT_GETUID,
891 .features = "2 pg_init_retries 50",
892 .hwhandler = "1 rdac",
893 .selector = DEFAULT_SELECTOR,
894 .pgpolicy = GROUP_BY_PRIO,
895 .pgfailback = -FAILBACK_IMMEDIATE,
896 .rr_weight = RR_WEIGHT_NONE,
898 .minio = DEFAULT_MINIO,
899 .minio_rq = DEFAULT_MINIO_RQ,
900 .checker_name = RDAC,
901 .prio_name = PRIO_RDAC,
908 .getuid = DEFAULT_GETUID,
909 .features = "2 pg_init_retries 50",
910 .hwhandler = "1 rdac",
911 .selector = DEFAULT_SELECTOR,
912 .pgpolicy = GROUP_BY_PRIO,
913 .pgfailback = -FAILBACK_IMMEDIATE,
914 .rr_weight = RR_WEIGHT_NONE,
916 .minio = DEFAULT_MINIO,
917 .minio_rq = DEFAULT_MINIO_RQ,
918 .checker_name = RDAC,
919 .prio_name = PRIO_RDAC,
925 .product = "MD32xxi",
926 .getuid = DEFAULT_GETUID,
927 .features = "2 pg_init_retries 50",
928 .hwhandler = "1 rdac",
929 .selector = DEFAULT_SELECTOR,
930 .pgpolicy = GROUP_BY_PRIO,
931 .pgfailback = -FAILBACK_IMMEDIATE,
932 .rr_weight = RR_WEIGHT_NONE,
934 .minio = DEFAULT_MINIO,
935 .minio_rq = DEFAULT_MINIO_RQ,
936 .checker_name = RDAC,
937 .prio_name = PRIO_RDAC,
941 * NETAPP controller family
943 * Maintainer : Dave Wysochanski
944 * Mail : davidw@netapp.com
949 .getuid = DEFAULT_GETUID,
950 .features = "1 queue_if_no_path",
951 .hwhandler = DEFAULT_HWHANDLER,
952 .selector = DEFAULT_SELECTOR,
953 .pgpolicy = GROUP_BY_PRIO,
954 .pgfailback = -FAILBACK_IMMEDIATE,
955 .rr_weight = RR_WEIGHT_NONE,
956 .no_path_retry = NO_PATH_RETRY_UNDEF,
958 .checker_name = DIRECTIO,
959 .prio_name = PRIO_ONTAP,
963 * NEXENTA/COMSTAR controller family
965 * Maintainer : Yacine Kheddache
966 * Mail : yacine@alyseo.com
970 .product = "COMSTAR",
971 .getuid = DEFAULT_GETUID,
972 .features = "1 queue_if_no_path",
973 .hwhandler = DEFAULT_HWHANDLER,
974 .selector = DEFAULT_SELECTOR,
975 .pgpolicy = GROUP_BY_SERIAL,
976 .pgfailback = -FAILBACK_IMMEDIATE,
977 .rr_weight = RR_WEIGHT_NONE,
980 .checker_name = DIRECTIO,
981 .prio_name = DEFAULT_PRIO,
985 * IBM NSeries (NETAPP) controller family
987 * Maintainer : Dave Wysochanski
988 * Mail : davidw@netapp.com
992 .product = "Nseries.*",
993 .getuid = DEFAULT_GETUID,
994 .features = "1 queue_if_no_path",
995 .hwhandler = DEFAULT_HWHANDLER,
996 .selector = DEFAULT_SELECTOR,
997 .pgpolicy = GROUP_BY_PRIO,
998 .pgfailback = -FAILBACK_IMMEDIATE,
999 .rr_weight = RR_WEIGHT_NONE,
1000 .no_path_retry = NO_PATH_RETRY_UNDEF,
1002 .checker_name = DIRECTIO,
1003 .prio_name = PRIO_ONTAP,
1007 * Pillar Data controller family
1009 * Maintainer : Srinivasan Ramani
1010 * Mail : sramani@pillardata.com
1014 .product = "Axiom.*",
1015 .getuid = DEFAULT_GETUID,
1016 .features = DEFAULT_FEATURES,
1017 .hwhandler = DEFAULT_HWHANDLER,
1018 .selector = DEFAULT_SELECTOR,
1019 .pgpolicy = GROUP_BY_PRIO,
1020 .pgfailback = FAILBACK_UNDEF,
1021 .rr_weight = RR_WEIGHT_NONE,
1022 .no_path_retry = NO_PATH_RETRY_UNDEF,
1023 .minio = DEFAULT_MINIO,
1024 .minio_rq = DEFAULT_MINIO_RQ,
1025 .checker_name = TUR,
1026 .prio_name = PRIO_ALUA,
1033 * Maintainer : Christophe Varoqui
1034 * Mail : christophe.varoqui@opensvc.com
1038 .product = "TP9[13]00",
1039 .getuid = DEFAULT_GETUID,
1040 .features = DEFAULT_FEATURES,
1041 .hwhandler = DEFAULT_HWHANDLER,
1042 .selector = DEFAULT_SELECTOR,
1043 .pgpolicy = MULTIBUS,
1044 .pgfailback = FAILBACK_UNDEF,
1045 .rr_weight = RR_WEIGHT_NONE,
1046 .no_path_retry = NO_PATH_RETRY_UNDEF,
1047 .minio = DEFAULT_MINIO,
1048 .minio_rq = DEFAULT_MINIO_RQ,
1049 .checker_name = DIRECTIO,
1050 .prio_name = DEFAULT_PRIO,
1055 .product = "TP9[45]00",
1056 .getuid = DEFAULT_GETUID,
1057 .features = DEFAULT_FEATURES,
1058 .hwhandler = "1 rdac",
1059 .selector = DEFAULT_SELECTOR,
1060 .pgpolicy = GROUP_BY_PRIO,
1061 .pgfailback = -FAILBACK_IMMEDIATE,
1062 .rr_weight = RR_WEIGHT_NONE,
1063 .no_path_retry = NO_PATH_RETRY_QUEUE,
1064 .minio = DEFAULT_MINIO,
1065 .minio_rq = DEFAULT_MINIO_RQ,
1066 .checker_name = RDAC,
1067 .prio_name = PRIO_RDAC,
1073 .getuid = DEFAULT_GETUID,
1074 .features = "2 pg_init_retries 50",
1075 .hwhandler = "1 rdac",
1076 .selector = DEFAULT_SELECTOR,
1077 .pgpolicy = GROUP_BY_PRIO,
1078 .pgfailback = -FAILBACK_IMMEDIATE,
1079 .rr_weight = RR_WEIGHT_NONE,
1080 .no_path_retry = 15,
1081 .minio = DEFAULT_MINIO,
1082 .minio_rq = DEFAULT_MINIO_RQ,
1083 .checker_name = RDAC,
1084 .prio_name = PRIO_RDAC,
1087 /* NEC Storage M Series */
1090 .product = "DISK ARRAY",
1091 .getuid = DEFAULT_GETUID,
1092 .features = DEFAULT_FEATURES,
1093 .hwhandler = "1 alua",
1094 .selector = DEFAULT_SELECTOR,
1095 .pgpolicy = GROUP_BY_PRIO,
1096 .pgfailback = -FAILBACK_IMMEDIATE,
1097 .rr_weight = RR_WEIGHT_NONE,
1098 .no_path_retry = NO_PATH_RETRY_UNDEF,
1099 .minio = DEFAULT_MINIO,
1100 .minio_rq = DEFAULT_MINIO_RQ,
1101 .checker_name = TUR,
1102 .prio_name = PRIO_ALUA,
1108 * Maintainer : Christophe Varoqui
1109 * Mail : christophe.varoqui@opensvc.com
1113 .product = "OPENstorage D280",
1114 .getuid = DEFAULT_GETUID,
1115 .features = DEFAULT_FEATURES,
1116 .hwhandler = "1 rdac",
1117 .selector = DEFAULT_SELECTOR,
1118 .pgpolicy = GROUP_BY_PRIO,
1119 .pgfailback = -FAILBACK_IMMEDIATE,
1120 .rr_weight = RR_WEIGHT_NONE,
1121 .no_path_retry = NO_PATH_RETRY_UNDEF,
1122 .minio = DEFAULT_MINIO,
1123 .minio_rq = DEFAULT_MINIO_RQ,
1124 .checker_name = TUR,
1125 .prio_name = PRIO_RDAC,
1131 * Maintainer : Christophe Varoqui
1132 * Mail : christophe.varoqui@opensvc.com
1136 .product = "(StorEdge 3510|T4)",
1137 .getuid = DEFAULT_GETUID,
1138 .features = DEFAULT_FEATURES,
1139 .hwhandler = DEFAULT_HWHANDLER,
1140 .selector = DEFAULT_SELECTOR,
1141 .pgpolicy = MULTIBUS,
1142 .pgfailback = FAILBACK_UNDEF,
1143 .rr_weight = RR_WEIGHT_NONE,
1144 .no_path_retry = NO_PATH_RETRY_UNDEF,
1145 .minio = DEFAULT_MINIO,
1146 .minio_rq = DEFAULT_MINIO_RQ,
1147 .checker_name = DIRECTIO,
1148 .prio_name = DEFAULT_PRIO,
1152 .vendor = "EUROLOGC",
1153 .product = "FC2502",
1154 .getuid ="/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1155 .features = DEFAULT_FEATURES,
1156 .hwhandler = DEFAULT_HWHANDLER,
1157 .selector = DEFAULT_SELECTOR,
1158 .pgpolicy = GROUP_BY_PRIO,
1159 .pgfailback = FAILBACK_UNDEF,
1160 .rr_weight = RR_WEIGHT_NONE,
1161 .no_path_retry = NO_PATH_RETRY_UNDEF,
1162 .minio = DEFAULT_MINIO,
1163 .minio_rq = DEFAULT_MINIO_RQ,
1164 .checker_name = DEFAULT_CHECKER,
1165 .prio_name = DEFAULT_PRIO,
1171 * Maintainer : Bart Brooks, Pivot3
1172 * Mail : bartb@pivot3.com
1176 .product = "RAIGE VOLUME",
1177 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1178 .features = "1 queue_if_no_path",
1179 .hwhandler = DEFAULT_HWHANDLER,
1180 .selector = DEFAULT_SELECTOR,
1181 .pgpolicy = MULTIBUS,
1182 .pgfailback = FAILBACK_UNDEF,
1183 .rr_weight = RR_WEIGHT_NONE,
1184 .no_path_retry = NO_PATH_RETRY_UNDEF,
1186 .checker_name = TUR,
1187 .prio_name = DEFAULT_PRIO,
1192 .product = "CSM200_R",
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,
1207 /* SUN/LSI 2510, 2540, 2530, 2540 */
1210 .product = "LCSM100_[IEFS]",
1211 .getuid = DEFAULT_GETUID,
1212 .features = DEFAULT_FEATURES,
1213 .hwhandler = "1 rdac",
1214 .selector = DEFAULT_SELECTOR,
1215 .pgpolicy = GROUP_BY_PRIO,
1216 .pgfailback = -FAILBACK_IMMEDIATE,
1217 .rr_weight = RR_WEIGHT_NONE,
1218 .no_path_retry = NO_PATH_RETRY_QUEUE,
1219 .minio = DEFAULT_MINIO,
1220 .minio_rq = DEFAULT_MINIO_RQ,
1221 .checker_name = RDAC,
1222 .prio_name = PRIO_RDAC,
1225 /* LSI/Engenio/NetApp E-Series RDAC storage */
1227 .vendor = "(LSI|ENGENIO)",
1228 .product = "INF-01-00",
1229 .getuid = DEFAULT_GETUID,
1230 .features = "2 pg_init_retries 50",
1231 .hwhandler = "1 rdac",
1232 .selector = DEFAULT_SELECTOR,
1233 .pgpolicy = GROUP_BY_PRIO,
1234 .pgfailback = -FAILBACK_IMMEDIATE,
1235 .rr_weight = RR_WEIGHT_NONE,
1236 .no_path_retry = 15,
1237 .minio = DEFAULT_MINIO,
1238 .minio_rq = DEFAULT_MINIO_RQ,
1239 .checker_name = RDAC,
1240 .prio_name = PRIO_RDAC,
1245 .product = "FLEXLINE 380",
1246 .bl_product = "Universal Xport",
1247 .getuid = DEFAULT_GETUID,
1248 .features = DEFAULT_FEATURES,
1249 .hwhandler = "1 rdac",
1250 .selector = DEFAULT_SELECTOR,
1251 .pgpolicy = GROUP_BY_PRIO,
1252 .pgfailback = -FAILBACK_IMMEDIATE,
1253 .rr_weight = RR_WEIGHT_NONE,
1254 .no_path_retry = NO_PATH_RETRY_QUEUE,
1255 .minio = DEFAULT_MINIO,
1256 .minio_rq = DEFAULT_MINIO_RQ,
1257 .checker_name = RDAC,
1258 .prio_name = PRIO_RDAC,
1277 .checker_name = NULL,
1284 setup_default_hwtable (vector hw)
1287 struct hwentry * hwe = default_hw;
1289 while (hwe->vendor) {
1290 r += store_hwe(hw, hwe);