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 .bl_product = "Universal Xport",
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,
470 .bl_product = "Universal Xport",
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 DS3200 / DS3300 / DS3400 */
489 .bl_product = "Universal Xport",
490 .getuid = DEFAULT_GETUID,
491 .features = "1 queue_if_no_path",
492 .hwhandler = "1 rdac",
493 .selector = DEFAULT_SELECTOR,
494 .pgpolicy = GROUP_BY_PRIO,
495 .pgfailback = -FAILBACK_IMMEDIATE,
496 .rr_weight = RR_WEIGHT_NONE,
497 .no_path_retry = 300,
498 .minio = DEFAULT_MINIO,
499 .minio_rq = DEFAULT_MINIO_RQ,
500 .checker_name = RDAC,
501 .prio_name = PRIO_RDAC,
505 /* IBM DS4400 / DS4500 / FAStT700 */
508 .bl_product = "Universal Xport",
509 .getuid = DEFAULT_GETUID,
510 .features = DEFAULT_FEATURES,
511 .hwhandler = "1 rdac",
512 .selector = DEFAULT_SELECTOR,
513 .pgpolicy = GROUP_BY_PRIO,
514 .pgfailback = -FAILBACK_IMMEDIATE,
515 .rr_weight = RR_WEIGHT_NONE,
516 .no_path_retry = NO_PATH_RETRY_QUEUE,
517 .minio = DEFAULT_MINIO,
518 .minio_rq = DEFAULT_MINIO_RQ,
519 .checker_name = RDAC,
520 .prio_name = PRIO_RDAC,
525 .product = "^1745|^1746",
526 .bl_product = "Universal Xport",
527 .getuid = DEFAULT_GETUID,
528 .features = "2 pg_init_retries 50",
529 .hwhandler = "1 rdac",
530 .selector = DEFAULT_SELECTOR,
531 .pgpolicy = GROUP_BY_PRIO,
532 .pgfailback = -FAILBACK_IMMEDIATE,
533 .rr_weight = RR_WEIGHT_NONE,
535 .minio = DEFAULT_MINIO,
536 .minio_rq = DEFAULT_MINIO_RQ,
537 .checker_name = RDAC,
538 .prio_name = PRIO_RDAC,
545 .bl_product = "Universal Xport",
546 .getuid = DEFAULT_GETUID,
547 .features = DEFAULT_FEATURES,
548 .hwhandler = "1 rdac",
549 .selector = DEFAULT_SELECTOR,
550 .pgpolicy = GROUP_BY_PRIO,
551 .pgfailback = -FAILBACK_IMMEDIATE,
552 .rr_weight = RR_WEIGHT_NONE,
553 .no_path_retry = NO_PATH_RETRY_QUEUE,
554 .minio = DEFAULT_MINIO,
555 .minio_rq = DEFAULT_MINIO_RQ,
556 .checker_name = RDAC,
557 .prio_name = PRIO_RDAC,
564 .bl_product = "Universal Xport",
565 .getuid = DEFAULT_GETUID,
566 .features = DEFAULT_FEATURES,
567 .hwhandler = "1 rdac",
568 .selector = DEFAULT_SELECTOR,
569 .pgpolicy = GROUP_BY_PRIO,
570 .pgfailback = -FAILBACK_IMMEDIATE,
571 .rr_weight = RR_WEIGHT_NONE,
572 .no_path_retry = NO_PATH_RETRY_QUEUE,
573 .minio = DEFAULT_MINIO,
574 .minio_rq = DEFAULT_MINIO_RQ,
575 .checker_name = RDAC,
576 .prio_name = PRIO_RDAC,
583 .bl_product = "Universal Xport",
584 .getuid = DEFAULT_GETUID,
585 .features = DEFAULT_FEATURES,
586 .hwhandler = "1 rdac",
587 .selector = DEFAULT_SELECTOR,
588 .pgpolicy = GROUP_BY_PRIO,
589 .pgfailback = -FAILBACK_IMMEDIATE,
590 .rr_weight = RR_WEIGHT_NONE,
591 .no_path_retry = NO_PATH_RETRY_QUEUE,
592 .minio = DEFAULT_MINIO,
593 .minio_rq = DEFAULT_MINIO_RQ,
594 .checker_name = RDAC,
595 .prio_name = PRIO_RDAC,
599 /* IBM Netfinity Fibre Channel RAID Controller Unit */
602 .bl_product = "Universal Xport",
603 .getuid = DEFAULT_GETUID,
604 .features = DEFAULT_FEATURES,
605 .hwhandler = "1 rdac",
606 .selector = DEFAULT_SELECTOR,
607 .pgpolicy = GROUP_BY_PRIO,
608 .pgfailback = -FAILBACK_IMMEDIATE,
609 .rr_weight = RR_WEIGHT_NONE,
610 .no_path_retry = NO_PATH_RETRY_QUEUE,
611 .minio = DEFAULT_MINIO,
612 .minio_rq = DEFAULT_MINIO_RQ,
613 .checker_name = RDAC,
614 .prio_name = PRIO_RDAC,
618 /* IBM DS4200 / FAStT200 */
621 .getuid = DEFAULT_GETUID,
622 .features = DEFAULT_FEATURES,
623 .hwhandler = DEFAULT_HWHANDLER,
624 .selector = DEFAULT_SELECTOR,
625 .pgpolicy = GROUP_BY_SERIAL,
626 .pgfailback = FAILBACK_UNDEF,
627 .rr_weight = RR_WEIGHT_NONE,
628 .no_path_retry = NO_PATH_RETRY_UNDEF,
629 .minio = DEFAULT_MINIO,
630 .minio_rq = DEFAULT_MINIO_RQ,
632 .prio_name = DEFAULT_PRIO,
636 /* IBM ESS F20 aka Shark */
638 .product = "^2105800",
639 .getuid = DEFAULT_GETUID,
640 .features = "1 queue_if_no_path",
641 .hwhandler = DEFAULT_HWHANDLER,
642 .selector = DEFAULT_SELECTOR,
643 .pgpolicy = GROUP_BY_SERIAL,
644 .pgfailback = FAILBACK_UNDEF,
645 .rr_weight = RR_WEIGHT_NONE,
646 .no_path_retry = NO_PATH_RETRY_UNDEF,
647 .minio = DEFAULT_MINIO,
648 .minio_rq = DEFAULT_MINIO_RQ,
650 .prio_name = DEFAULT_PRIO,
654 /* IBM ESS F20 aka Shark */
656 .product = "^2105F20",
657 .getuid = DEFAULT_GETUID,
658 .features = "1 queue_if_no_path",
659 .hwhandler = DEFAULT_HWHANDLER,
660 .selector = DEFAULT_SELECTOR,
661 .pgpolicy = GROUP_BY_SERIAL,
662 .pgfailback = FAILBACK_UNDEF,
663 .rr_weight = RR_WEIGHT_NONE,
664 .no_path_retry = NO_PATH_RETRY_UNDEF,
665 .minio = DEFAULT_MINIO,
666 .minio_rq = DEFAULT_MINIO_RQ,
668 .prio_name = DEFAULT_PRIO,
674 .product = "^1750500",
675 .getuid = DEFAULT_GETUID,
676 .features = "1 queue_if_no_path",
677 .hwhandler = DEFAULT_HWHANDLER,
678 .selector = DEFAULT_SELECTOR,
679 .pgpolicy = GROUP_BY_PRIO,
680 .pgfailback = -FAILBACK_IMMEDIATE,
681 .rr_weight = RR_WEIGHT_NONE,
682 .no_path_retry = NO_PATH_RETRY_UNDEF,
683 .minio = DEFAULT_MINIO,
684 .minio_rq = DEFAULT_MINIO_RQ,
686 .prio_name = PRIO_ALUA,
692 .product = "^2107900",
693 .getuid = DEFAULT_GETUID,
694 .features = "1 queue_if_no_path",
695 .hwhandler = DEFAULT_HWHANDLER,
696 .selector = DEFAULT_SELECTOR,
697 .pgpolicy = MULTIBUS,
698 .pgfailback = FAILBACK_UNDEF,
699 .rr_weight = RR_WEIGHT_NONE,
700 .no_path_retry = NO_PATH_RETRY_UNDEF,
701 .minio = DEFAULT_MINIO,
702 .minio_rq = DEFAULT_MINIO_RQ,
704 .prio_name = DEFAULT_PRIO,
708 /* IBM SAN Volume Controller */
711 .getuid = DEFAULT_GETUID,
712 .features = "1 queue_if_no_path",
713 .hwhandler = DEFAULT_HWHANDLER,
714 .selector = DEFAULT_SELECTOR,
715 .pgpolicy = GROUP_BY_PRIO,
716 .pgfailback = -FAILBACK_IMMEDIATE,
717 .rr_weight = RR_WEIGHT_NONE,
718 .no_path_retry = NO_PATH_RETRY_UNDEF,
719 .minio = DEFAULT_MINIO,
720 .minio_rq = DEFAULT_MINIO_RQ,
722 .prio_name = PRIO_ALUA,
726 /* IBM S/390 ECKD DASD */
728 .product = "S/390 DASD ECKD",
729 .bl_product = "S/390.*",
730 .getuid = "/sbin/dasdinfo -u -b %n",
731 .features = "1 queue_if_no_path",
732 .hwhandler = DEFAULT_HWHANDLER,
733 .selector = DEFAULT_SELECTOR,
734 .pgpolicy = MULTIBUS,
735 .pgfailback = FAILBACK_UNDEF,
736 .rr_weight = RR_WEIGHT_NONE,
737 .no_path_retry = NO_PATH_RETRY_UNDEF,
738 .minio = DEFAULT_MINIO,
739 .minio_rq = DEFAULT_MINIO_RQ,
740 .checker_name = DIRECTIO,
741 .prio_name = DEFAULT_PRIO,
745 /* IBM S/390 FBA DASD */
747 .product = "S/390 DASD FBA",
748 .bl_product = "S/390.*",
749 .getuid = "/sbin/dasdinfo -u -b %n",
750 .features = "1 queue_if_no_path",
751 .hwhandler = DEFAULT_HWHANDLER,
752 .selector = DEFAULT_SELECTOR,
753 .pgpolicy = MULTIBUS,
754 .pgfailback = FAILBACK_UNDEF,
755 .rr_weight = RR_WEIGHT_NONE,
756 .no_path_retry = NO_PATH_RETRY_UNDEF,
757 .minio = DEFAULT_MINIO,
758 .minio_rq = DEFAULT_MINIO_RQ,
759 .checker_name = DIRECTIO,
760 .prio_name = DEFAULT_PRIO,
767 .getuid = DEFAULT_GETUID,
768 .features = "1 queue_if_no_path",
769 .hwhandler = "1 alua",
770 .selector = DEFAULT_SELECTOR,
771 .pgpolicy = GROUP_BY_PRIO,
772 .pgfailback = -FAILBACK_IMMEDIATE,
773 .rr_weight = RR_WEIGHT_NONE,
774 .no_path_retry = NO_PATH_RETRY_UNDEF,
775 .minio = DEFAULT_MINIO,
776 .minio_rq = DEFAULT_MINIO_RQ,
778 .prio_name = PRIO_ALUA,
784 .product = "1820N00",
785 .getuid = DEFAULT_GETUID,
786 .features = DEFAULT_FEATURES,
787 .hwhandler = DEFAULT_HWHANDLER,
788 .selector = DEFAULT_SELECTOR,
789 .pgpolicy = GROUP_BY_PRIO,
790 .pgfailback = -FAILBACK_IMMEDIATE,
791 .rr_weight = RR_WEIGHT_NONE,
792 .no_path_retry = NO_PATH_RETRY_QUEUE,
794 .minio_rq = DEFAULT_MINIO_RQ,
796 .prio_name = PRIO_ALUA,
800 /* IBM XIV Storage System */
802 .product = "2810XIV",
803 .getuid = DEFAULT_GETUID,
804 .features = "1 queue_if_no_path",
805 .hwhandler = DEFAULT_HWHANDLER,
806 .selector = DEFAULT_SELECTOR,
807 .pgpolicy = MULTIBUS,
809 .rr_weight = RR_WEIGHT_NONE,
810 .no_path_retry = NO_PATH_RETRY_UNDEF,
812 .minio_rq = DEFAULT_MINIO_RQ,
814 .prio_name = DEFAULT_PRIO,
818 * IBM Power Virtual SCSI Devices
820 * Maintainer : Brian King, IBM
821 * Mail : brking@linux.vnet.ibm.com
827 .getuid = DEFAULT_GETUID,
828 .features = DEFAULT_FEATURES,
829 .hwhandler = DEFAULT_HWHANDLER,
830 .selector = DEFAULT_SELECTOR,
831 .pgpolicy = MULTIBUS,
832 .pgfailback = -FAILBACK_IMMEDIATE,
833 .rr_weight = RR_WEIGHT_NONE,
834 .no_path_retry = (300 / DEFAULT_CHECKINT),
835 .minio = DEFAULT_MINIO,
836 .minio_rq = DEFAULT_MINIO_RQ,
837 .checker_name = DIRECTIO,
838 .prio_name = DEFAULT_PRIO,
842 /* IBM 3303 NVDISK */
844 .product = "3303 NVDISK",
845 .getuid = DEFAULT_GETUID,
846 .features = DEFAULT_FEATURES,
847 .hwhandler = DEFAULT_HWHANDLER,
848 .selector = DEFAULT_SELECTOR,
849 .pgpolicy = FAILOVER,
850 .pgfailback = -FAILBACK_IMMEDIATE,
851 .rr_weight = RR_WEIGHT_NONE,
852 .no_path_retry = (300 / DEFAULT_CHECKINT),
853 .minio = DEFAULT_MINIO,
854 .minio_rq = DEFAULT_MINIO_RQ,
856 .prio_name = DEFAULT_PRIO,
863 .getuid = DEFAULT_GETUID,
864 .features = DEFAULT_FEATURES,
865 .hwhandler = "1 alua",
866 .selector = DEFAULT_SELECTOR,
867 .pgpolicy = GROUP_BY_PRIO,
868 .pgfailback = -FAILBACK_IMMEDIATE,
869 .rr_weight = RR_WEIGHT_NONE,
870 .no_path_retry = (300 / DEFAULT_CHECKINT),
871 .minio = DEFAULT_MINIO,
872 .minio_rq = DEFAULT_MINIO_RQ,
874 .prio_name = PRIO_ALUA,
881 .bl_product = "Universal Xport",
882 .getuid = DEFAULT_GETUID,
883 .features = "2 pg_init_retries 50",
884 .hwhandler = "1 rdac",
885 .selector = DEFAULT_SELECTOR,
886 .pgpolicy = GROUP_BY_PRIO,
887 .pgfailback = -FAILBACK_IMMEDIATE,
888 .rr_weight = RR_WEIGHT_NONE,
890 .minio = DEFAULT_MINIO,
891 .minio_rq = DEFAULT_MINIO_RQ,
892 .checker_name = RDAC,
893 .prio_name = PRIO_RDAC,
899 .product = "MD3000i",
900 .bl_product = "Universal Xport",
901 .getuid = DEFAULT_GETUID,
902 .features = "2 pg_init_retries 50",
903 .hwhandler = "1 rdac",
904 .selector = DEFAULT_SELECTOR,
905 .pgpolicy = GROUP_BY_PRIO,
906 .pgfailback = -FAILBACK_IMMEDIATE,
907 .rr_weight = RR_WEIGHT_NONE,
909 .minio = DEFAULT_MINIO,
910 .minio_rq = DEFAULT_MINIO_RQ,
911 .checker_name = RDAC,
912 .prio_name = PRIO_RDAC,
919 .bl_product = "Universal Xport",
920 .getuid = DEFAULT_GETUID,
921 .features = "2 pg_init_retries 50",
922 .hwhandler = "1 rdac",
923 .selector = DEFAULT_SELECTOR,
924 .pgpolicy = GROUP_BY_PRIO,
925 .pgfailback = -FAILBACK_IMMEDIATE,
926 .rr_weight = RR_WEIGHT_NONE,
928 .minio = DEFAULT_MINIO,
929 .minio_rq = DEFAULT_MINIO_RQ,
930 .checker_name = RDAC,
931 .prio_name = PRIO_RDAC,
937 .product = "MD32xxi",
938 .bl_product = "Universal Xport",
939 .getuid = DEFAULT_GETUID,
940 .features = "2 pg_init_retries 50",
941 .hwhandler = "1 rdac",
942 .selector = DEFAULT_SELECTOR,
943 .pgpolicy = GROUP_BY_PRIO,
944 .pgfailback = -FAILBACK_IMMEDIATE,
945 .rr_weight = RR_WEIGHT_NONE,
947 .minio = DEFAULT_MINIO,
948 .minio_rq = DEFAULT_MINIO_RQ,
949 .checker_name = RDAC,
950 .prio_name = PRIO_RDAC,
954 * NETAPP controller family
956 * Maintainer : Dave Wysochanski
957 * Mail : davidw@netapp.com
962 .getuid = DEFAULT_GETUID,
963 .features = "1 queue_if_no_path",
964 .hwhandler = DEFAULT_HWHANDLER,
965 .selector = DEFAULT_SELECTOR,
966 .pgpolicy = GROUP_BY_PRIO,
967 .pgfailback = -FAILBACK_IMMEDIATE,
968 .rr_weight = RR_WEIGHT_NONE,
969 .no_path_retry = NO_PATH_RETRY_UNDEF,
972 .prio_name = PRIO_ONTAP,
976 * NEXENTA/COMSTAR controller family
978 * Maintainer : Yacine Kheddache
979 * Mail : yacine@alyseo.com
983 .product = "COMSTAR",
984 .getuid = DEFAULT_GETUID,
985 .features = "1 queue_if_no_path",
986 .hwhandler = DEFAULT_HWHANDLER,
987 .selector = DEFAULT_SELECTOR,
988 .pgpolicy = GROUP_BY_SERIAL,
989 .pgfailback = -FAILBACK_IMMEDIATE,
990 .rr_weight = RR_WEIGHT_NONE,
993 .checker_name = DIRECTIO,
994 .prio_name = DEFAULT_PRIO,
998 * IBM NSeries (NETAPP) controller family
1000 * Maintainer : Dave Wysochanski
1001 * Mail : davidw@netapp.com
1005 .product = "Nseries.*",
1006 .getuid = DEFAULT_GETUID,
1007 .features = "1 queue_if_no_path",
1008 .hwhandler = DEFAULT_HWHANDLER,
1009 .selector = DEFAULT_SELECTOR,
1010 .pgpolicy = GROUP_BY_PRIO,
1011 .pgfailback = -FAILBACK_IMMEDIATE,
1012 .rr_weight = RR_WEIGHT_NONE,
1013 .no_path_retry = NO_PATH_RETRY_UNDEF,
1015 .checker_name = DIRECTIO,
1016 .prio_name = PRIO_ONTAP,
1020 * Pillar Data controller family
1022 * Maintainer : Srinivasan Ramani
1023 * Mail : sramani@pillardata.com
1027 .product = "Axiom.*",
1028 .getuid = DEFAULT_GETUID,
1029 .features = DEFAULT_FEATURES,
1030 .hwhandler = DEFAULT_HWHANDLER,
1031 .selector = DEFAULT_SELECTOR,
1032 .pgpolicy = GROUP_BY_PRIO,
1033 .pgfailback = FAILBACK_UNDEF,
1034 .rr_weight = RR_WEIGHT_NONE,
1035 .no_path_retry = NO_PATH_RETRY_UNDEF,
1036 .minio = DEFAULT_MINIO,
1037 .minio_rq = DEFAULT_MINIO_RQ,
1038 .checker_name = TUR,
1039 .prio_name = PRIO_ALUA,
1046 * Maintainer : Christophe Varoqui
1047 * Mail : christophe.varoqui@opensvc.com
1051 .product = "TP9[13]00",
1052 .getuid = DEFAULT_GETUID,
1053 .features = DEFAULT_FEATURES,
1054 .hwhandler = DEFAULT_HWHANDLER,
1055 .selector = DEFAULT_SELECTOR,
1056 .pgpolicy = MULTIBUS,
1057 .pgfailback = FAILBACK_UNDEF,
1058 .rr_weight = RR_WEIGHT_NONE,
1059 .no_path_retry = NO_PATH_RETRY_UNDEF,
1060 .minio = DEFAULT_MINIO,
1061 .minio_rq = DEFAULT_MINIO_RQ,
1062 .checker_name = DIRECTIO,
1063 .prio_name = DEFAULT_PRIO,
1068 .product = "TP9[45]00",
1069 .bl_product = "Universal Xport",
1070 .getuid = DEFAULT_GETUID,
1071 .features = DEFAULT_FEATURES,
1072 .hwhandler = "1 rdac",
1073 .selector = DEFAULT_SELECTOR,
1074 .pgpolicy = GROUP_BY_PRIO,
1075 .pgfailback = -FAILBACK_IMMEDIATE,
1076 .rr_weight = RR_WEIGHT_NONE,
1077 .no_path_retry = NO_PATH_RETRY_QUEUE,
1078 .minio = DEFAULT_MINIO,
1079 .minio_rq = DEFAULT_MINIO_RQ,
1080 .checker_name = RDAC,
1081 .prio_name = PRIO_RDAC,
1087 .bl_product = "Universal Xport",
1088 .getuid = DEFAULT_GETUID,
1089 .features = "2 pg_init_retries 50",
1090 .hwhandler = "1 rdac",
1091 .selector = DEFAULT_SELECTOR,
1092 .pgpolicy = GROUP_BY_PRIO,
1093 .pgfailback = -FAILBACK_IMMEDIATE,
1094 .rr_weight = RR_WEIGHT_NONE,
1095 .no_path_retry = 15,
1096 .minio = DEFAULT_MINIO,
1097 .minio_rq = DEFAULT_MINIO_RQ,
1098 .checker_name = RDAC,
1099 .prio_name = PRIO_RDAC,
1102 /* NEC Storage M Series */
1105 .product = "DISK ARRAY",
1106 .getuid = DEFAULT_GETUID,
1107 .features = DEFAULT_FEATURES,
1108 .hwhandler = "1 alua",
1109 .selector = DEFAULT_SELECTOR,
1110 .pgpolicy = GROUP_BY_PRIO,
1111 .pgfailback = -FAILBACK_IMMEDIATE,
1112 .rr_weight = RR_WEIGHT_NONE,
1113 .no_path_retry = NO_PATH_RETRY_UNDEF,
1114 .minio = DEFAULT_MINIO,
1115 .minio_rq = DEFAULT_MINIO_RQ,
1116 .checker_name = TUR,
1117 .prio_name = PRIO_ALUA,
1123 * Maintainer : Christophe Varoqui
1124 * Mail : christophe.varoqui@opensvc.com
1128 .product = "OPENstorage D280",
1129 .bl_product = "Universal Xport",
1130 .getuid = DEFAULT_GETUID,
1131 .features = DEFAULT_FEATURES,
1132 .hwhandler = "1 rdac",
1133 .selector = DEFAULT_SELECTOR,
1134 .pgpolicy = GROUP_BY_PRIO,
1135 .pgfailback = -FAILBACK_IMMEDIATE,
1136 .rr_weight = RR_WEIGHT_NONE,
1137 .no_path_retry = NO_PATH_RETRY_UNDEF,
1138 .minio = DEFAULT_MINIO,
1139 .minio_rq = DEFAULT_MINIO_RQ,
1140 .checker_name = TUR,
1141 .prio_name = PRIO_RDAC,
1147 * Maintainer : Christophe Varoqui
1148 * Mail : christophe.varoqui@opensvc.com
1152 .product = "(StorEdge 3510|T4)",
1153 .getuid = DEFAULT_GETUID,
1154 .features = DEFAULT_FEATURES,
1155 .hwhandler = DEFAULT_HWHANDLER,
1156 .selector = DEFAULT_SELECTOR,
1157 .pgpolicy = MULTIBUS,
1158 .pgfailback = FAILBACK_UNDEF,
1159 .rr_weight = RR_WEIGHT_NONE,
1160 .no_path_retry = NO_PATH_RETRY_UNDEF,
1161 .minio = DEFAULT_MINIO,
1162 .minio_rq = DEFAULT_MINIO_RQ,
1163 .checker_name = DIRECTIO,
1164 .prio_name = DEFAULT_PRIO,
1168 .vendor = "EUROLOGC",
1169 .product = "FC2502",
1170 .getuid ="/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1171 .features = DEFAULT_FEATURES,
1172 .hwhandler = DEFAULT_HWHANDLER,
1173 .selector = DEFAULT_SELECTOR,
1174 .pgpolicy = GROUP_BY_PRIO,
1175 .pgfailback = FAILBACK_UNDEF,
1176 .rr_weight = RR_WEIGHT_NONE,
1177 .no_path_retry = NO_PATH_RETRY_UNDEF,
1178 .minio = DEFAULT_MINIO,
1179 .minio_rq = DEFAULT_MINIO_RQ,
1180 .checker_name = DEFAULT_CHECKER,
1181 .prio_name = DEFAULT_PRIO,
1187 * Maintainer : Bart Brooks, Pivot3
1188 * Mail : bartb@pivot3.com
1192 .product = "RAIGE VOLUME",
1193 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1194 .features = "1 queue_if_no_path",
1195 .hwhandler = DEFAULT_HWHANDLER,
1196 .selector = DEFAULT_SELECTOR,
1197 .pgpolicy = MULTIBUS,
1198 .pgfailback = FAILBACK_UNDEF,
1199 .rr_weight = RR_WEIGHT_NONE,
1200 .no_path_retry = NO_PATH_RETRY_UNDEF,
1202 .checker_name = TUR,
1203 .prio_name = DEFAULT_PRIO,
1208 .product = "CSM200_R",
1209 .bl_product = "Universal Xport",
1210 .getuid = DEFAULT_GETUID,
1211 .features = DEFAULT_FEATURES,
1212 .hwhandler = "1 rdac",
1213 .selector = DEFAULT_SELECTOR,
1214 .pgpolicy = GROUP_BY_PRIO,
1215 .pgfailback = -FAILBACK_IMMEDIATE,
1216 .rr_weight = RR_WEIGHT_NONE,
1217 .no_path_retry = NO_PATH_RETRY_QUEUE,
1218 .minio = DEFAULT_MINIO,
1219 .minio_rq = DEFAULT_MINIO_RQ,
1220 .checker_name = RDAC,
1221 .prio_name = PRIO_RDAC,
1224 /* SUN/LSI 2510, 2540, 2530, 2540 */
1227 .product = "LCSM100_[IEFS]",
1228 .bl_product = "Universal Xport",
1229 .getuid = DEFAULT_GETUID,
1230 .features = DEFAULT_FEATURES,
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 = NO_PATH_RETRY_QUEUE,
1237 .minio = DEFAULT_MINIO,
1238 .minio_rq = DEFAULT_MINIO_RQ,
1239 .checker_name = RDAC,
1240 .prio_name = PRIO_RDAC,
1243 /* LSI/Engenio/NetApp E-Series RDAC storage */
1245 .vendor = "(LSI|ENGENIO)",
1246 .product = "INF-01-00",
1247 .bl_product = "Universal Xport",
1248 .getuid = DEFAULT_GETUID,
1249 .features = "2 pg_init_retries 50",
1250 .hwhandler = "1 rdac",
1251 .selector = DEFAULT_SELECTOR,
1252 .pgpolicy = GROUP_BY_PRIO,
1253 .pgfailback = -FAILBACK_IMMEDIATE,
1254 .rr_weight = RR_WEIGHT_NONE,
1255 .no_path_retry = 15,
1256 .minio = DEFAULT_MINIO,
1257 .minio_rq = DEFAULT_MINIO_RQ,
1258 .checker_name = RDAC,
1259 .prio_name = PRIO_RDAC,
1264 .product = "FLEXLINE 380",
1265 .bl_product = "Universal Xport",
1266 .getuid = DEFAULT_GETUID,
1267 .features = DEFAULT_FEATURES,
1268 .hwhandler = "1 rdac",
1269 .selector = DEFAULT_SELECTOR,
1270 .pgpolicy = GROUP_BY_PRIO,
1271 .pgfailback = -FAILBACK_IMMEDIATE,
1272 .rr_weight = RR_WEIGHT_NONE,
1273 .no_path_retry = NO_PATH_RETRY_QUEUE,
1274 .minio = DEFAULT_MINIO,
1275 .minio_rq = DEFAULT_MINIO_RQ,
1276 .checker_name = RDAC,
1277 .prio_name = PRIO_RDAC,
1296 .checker_name = NULL,
1303 setup_default_hwtable (vector hw)
1306 struct hwentry * hwe = default_hw;
1308 while (hwe->vendor) {
1309 r += store_hwe(hw, hwe);