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,
39 .prio_name = DEFAULT_PRIO,
42 * Apple controller family
44 * Maintainer : Shyam Sundar
45 * Mail : g.shyamsundar@yahoo.co.in
49 .product = "Xserve RAID ",
50 .getuid = DEFAULT_GETUID,
51 .features = DEFAULT_FEATURES,
52 .hwhandler = DEFAULT_HWHANDLER,
53 .selector = DEFAULT_SELECTOR,
55 .pgfailback = FAILBACK_UNDEF,
56 .rr_weight = RR_WEIGHT_NONE,
57 .no_path_retry = NO_PATH_RETRY_UNDEF,
58 .minio = DEFAULT_MINIO,
59 .checker_name = DEFAULT_CHECKER,
60 .prio_name = DEFAULT_PRIO,
63 * StorageWorks controller family
65 * Maintainer : Christophe Varoqui
66 * Mail : christophe.varoqui@opensvc.com
71 .getuid = DEFAULT_GETUID,
72 .features = DEFAULT_FEATURES,
73 .hwhandler = DEFAULT_HWHANDLER,
74 .selector = DEFAULT_SELECTOR,
76 .pgfailback = FAILBACK_UNDEF,
77 .rr_weight = RR_WEIGHT_NONE,
78 .no_path_retry = NO_PATH_RETRY_UNDEF,
79 .minio = DEFAULT_MINIO,
80 .checker_name = DEFAULT_CHECKER,
81 .prio_name = DEFAULT_PRIO,
86 .getuid = DEFAULT_GETUID,
87 .features = "1 queue_if_no_path",
88 .hwhandler = "1 hp_sw",
89 .selector = DEFAULT_SELECTOR,
90 .pgpolicy = GROUP_BY_PRIO,
91 .pgfailback = FAILBACK_UNDEF,
92 .rr_weight = RR_WEIGHT_NONE,
93 .no_path_retry = NO_PATH_RETRY_UNDEF,
94 .minio = DEFAULT_MINIO,
95 .checker_name = HP_SW,
96 .prio_name = PRIO_HP_SW,
101 .getuid = DEFAULT_GETUID,
102 .features = DEFAULT_FEATURES,
103 .hwhandler = DEFAULT_HWHANDLER,
104 .selector = DEFAULT_SELECTOR,
105 .pgpolicy = MULTIBUS,
106 .pgfailback = FAILBACK_UNDEF,
107 .rr_weight = RR_WEIGHT_NONE,
109 .minio = DEFAULT_MINIO,
110 .checker_name = DIRECTIO,
111 .prio_name = DEFAULT_PRIO,
114 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
115 .vendor = "(COMPAQ|HP)",
116 .product = "(MSA|HSV)1.0.*",
117 .getuid = DEFAULT_GETUID,
118 .features = "1 queue_if_no_path",
119 .hwhandler = "1 hp_sw",
120 .selector = DEFAULT_SELECTOR,
121 .pgpolicy = GROUP_BY_PRIO,
122 .pgfailback = FAILBACK_UNDEF,
123 .rr_weight = RR_WEIGHT_NONE,
126 .checker_name = HP_SW,
127 .prio_name = PRIO_HP_SW,
130 /* MSA 1000/1500 with new firmware */
131 .vendor = "(COMPAQ|HP)",
132 .product = "MSA VOLUME",
133 .getuid = DEFAULT_GETUID,
134 .features = DEFAULT_FEATURES,
135 .hwhandler = DEFAULT_HWHANDLER,
136 .selector = DEFAULT_SELECTOR,
137 .pgpolicy = GROUP_BY_PRIO,
138 .pgfailback = -FAILBACK_IMMEDIATE,
139 .rr_weight = RR_WEIGHT_NONE,
143 .prio_name = PRIO_ALUA,
146 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
147 .vendor = "(COMPAQ|HP)",
148 .product = "HSV1[01]1|HSV2[01]0|HSV300|HSV4[05]0",
149 .getuid = DEFAULT_GETUID,
150 .features = DEFAULT_FEATURES,
151 .hwhandler = DEFAULT_HWHANDLER,
152 .selector = DEFAULT_SELECTOR,
153 .pgpolicy = GROUP_BY_PRIO,
154 .pgfailback = -FAILBACK_IMMEDIATE,
155 .rr_weight = RR_WEIGHT_NONE,
159 .prio_name = PRIO_ALUA,
162 /* HP MSA2000 product family with old firmware */
164 .product = "MSA2[02]12fc|MSA2012i",
165 .getuid = DEFAULT_GETUID,
166 .features = DEFAULT_FEATURES,
167 .hwhandler = DEFAULT_HWHANDLER,
168 .selector = DEFAULT_SELECTOR,
169 .pgpolicy = MULTIBUS,
170 .pgfailback = -FAILBACK_IMMEDIATE,
171 .rr_weight = RR_WEIGHT_NONE,
175 .prio_name = DEFAULT_PRIO,
178 /* HP MSA2000 product family with new firmware */
180 .product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
181 .getuid = DEFAULT_GETUID,
182 .features = DEFAULT_FEATURES,
183 .hwhandler = DEFAULT_HWHANDLER,
184 .selector = DEFAULT_SELECTOR,
185 .pgpolicy = GROUP_BY_PRIO,
186 .pgfailback = -FAILBACK_IMMEDIATE,
187 .rr_weight = RR_WEIGHT_NONE,
191 .prio_name = PRIO_ALUA,
197 .product = "HSVX700",
198 .getuid = DEFAULT_GETUID,
199 .features = DEFAULT_FEATURES,
200 .hwhandler = "1 alua",
201 .selector = DEFAULT_SELECTOR,
202 .pgpolicy = GROUP_BY_PRIO,
203 .pgfailback = -FAILBACK_IMMEDIATE,
204 .rr_weight = RR_WEIGHT_NONE,
208 .prio_name = PRIO_ALUA,
214 .product = "LOGICAL VOLUME.*",
215 .getuid = DEFAULT_GETUID,
216 .features = DEFAULT_FEATURES,
217 .hwhandler = DEFAULT_HWHANDLER,
218 .selector = DEFAULT_SELECTOR,
219 .pgpolicy = MULTIBUS,
220 .pgfailback = FAILBACK_UNDEF,
221 .rr_weight = RR_WEIGHT_NONE,
223 .minio = DEFAULT_MINIO,
224 .checker_name = CCISS_TUR,
225 .prio_name = DEFAULT_PRIO,
228 * DDN controller family
230 * Maintainer : Christophe Varoqui
231 * Mail : christophe.varoqui@opensvc.com
235 .product = "SAN DataDirector",
236 .getuid = DEFAULT_GETUID,
237 .features = DEFAULT_FEATURES,
238 .hwhandler = DEFAULT_HWHANDLER,
239 .selector = DEFAULT_SELECTOR,
240 .pgpolicy = MULTIBUS,
241 .pgfailback = FAILBACK_UNDEF,
242 .rr_weight = RR_WEIGHT_NONE,
243 .no_path_retry = NO_PATH_RETRY_UNDEF,
244 .minio = DEFAULT_MINIO,
245 .checker_name = DIRECTIO,
246 .prio_name = DEFAULT_PRIO,
249 * EMC / Clariion controller family
251 * Maintainer : Edward Goggin, EMC
252 * Mail : egoggin@emc.com
256 .product = "SYMMETRIX",
257 .getuid = "/lib/udev/scsi_id --page=pre-spc3-83 --whitelisted --device=/dev/%n",
258 .features = DEFAULT_FEATURES,
259 .hwhandler = DEFAULT_HWHANDLER,
260 .selector = DEFAULT_SELECTOR,
261 .pgpolicy = MULTIBUS,
262 .pgfailback = FAILBACK_UNDEF,
263 .rr_weight = RR_WEIGHT_NONE,
264 .no_path_retry = NO_PATH_RETRY_UNDEF,
265 .minio = DEFAULT_MINIO,
266 .checker_name = DIRECTIO,
267 .prio_name = DEFAULT_PRIO,
272 .bl_product = "LUNZ",
273 .getuid = DEFAULT_GETUID,
274 .features = "1 queue_if_no_path",
275 .hwhandler = "1 emc",
276 .selector = DEFAULT_SELECTOR,
277 .pgpolicy = GROUP_BY_PRIO,
278 .pgfailback = -FAILBACK_IMMEDIATE,
279 .rr_weight = RR_WEIGHT_NONE,
280 .no_path_retry = (300 / DEFAULT_CHECKINT),
281 .minio = DEFAULT_MINIO,
282 .checker_name = EMC_CLARIION,
283 .prio_name = PRIO_EMC,
287 .product = "Invista",
288 .bl_product = "LUNZ",
289 .getuid = DEFAULT_GETUID,
290 .features = DEFAULT_FEATURES,
291 .hwhandler = DEFAULT_HWHANDLER,
292 .selector = DEFAULT_SELECTOR,
293 .pgpolicy = MULTIBUS,
294 .pgfailback = FAILBACK_UNDEF,
295 .rr_weight = RR_WEIGHT_NONE,
297 .minio = DEFAULT_MINIO,
298 .prio_name = DEFAULT_PRIO,
301 * Fujitsu controller family
303 * Maintainer : Christophe Varoqui
304 * Mail : christophe.varoqui@opensvc.com
308 .product = "CentricStor",
309 .getuid = DEFAULT_GETUID,
310 .features = DEFAULT_FEATURES,
311 .hwhandler = DEFAULT_HWHANDLER,
312 .selector = DEFAULT_SELECTOR,
313 .pgpolicy = GROUP_BY_SERIAL,
314 .pgfailback = FAILBACK_UNDEF,
315 .rr_weight = RR_WEIGHT_NONE,
316 .no_path_retry = NO_PATH_RETRY_UNDEF,
317 .minio = DEFAULT_MINIO,
318 .checker_name = DIRECTIO,
319 .prio_name = DEFAULT_PRIO,
323 .product = "Invista",
324 .bl_product = "LUNZ",
325 .getuid = DEFAULT_GETUID,
326 .features = DEFAULT_FEATURES,
327 .hwhandler = DEFAULT_HWHANDLER,
328 .selector = DEFAULT_SELECTOR,
329 .pgpolicy = FAILOVER,
330 .pgfailback = FAILBACK_UNDEF,
331 .rr_weight = RR_WEIGHT_NONE,
333 .minio = DEFAULT_MINIO,
335 .prio_name = DEFAULT_PRIO,
338 * Hitachi controller family
340 * Maintainer : Matthias Rudolph
341 * Mail : matthias.rudolph@hds.com
344 .vendor = "(HITACHI|HP)",
345 .product = "OPEN-.*",
346 .getuid = DEFAULT_GETUID,
347 .features = DEFAULT_FEATURES,
348 .hwhandler = DEFAULT_HWHANDLER,
349 .selector = DEFAULT_SELECTOR,
350 .pgpolicy = MULTIBUS,
351 .pgfailback = FAILBACK_UNDEF,
352 .rr_weight = RR_WEIGHT_NONE,
353 .no_path_retry = NO_PATH_RETRY_UNDEF,
354 .minio = DEFAULT_MINIO,
356 .prio_name = DEFAULT_PRIO,
361 .getuid = DEFAULT_GETUID,
362 .features = "1 queue_if_no_path",
363 .hwhandler = DEFAULT_HWHANDLER,
364 .selector = DEFAULT_SELECTOR,
365 .pgpolicy = GROUP_BY_PRIO,
366 .pgfailback = -FAILBACK_IMMEDIATE,
367 .rr_weight = RR_WEIGHT_NONE,
368 .no_path_retry = NO_PATH_RETRY_UNDEF,
369 .minio = DEFAULT_MINIO,
371 .prio_name = PRIO_HDS,
374 * IBM controller family
376 * Maintainer : Hannes Reinecke, SuSE
377 * Mail : hare@suse.de
381 .product = "ProFibre 4000R",
382 .getuid = DEFAULT_GETUID,
383 .features = DEFAULT_FEATURES,
384 .hwhandler = DEFAULT_HWHANDLER,
385 .selector = DEFAULT_SELECTOR,
386 .pgpolicy = MULTIBUS,
387 .pgfailback = FAILBACK_UNDEF,
388 .rr_weight = RR_WEIGHT_NONE,
389 .no_path_retry = NO_PATH_RETRY_UNDEF,
390 .minio = DEFAULT_MINIO,
391 .checker_name = DIRECTIO,
392 .prio_name = DEFAULT_PRIO,
395 /* IBM FAStT 1722-600 */
397 .product = "1722-600",
398 .getuid = DEFAULT_GETUID,
399 .features = "1 queue_if_no_path",
400 .hwhandler = "1 rdac",
401 .selector = DEFAULT_SELECTOR,
402 .pgpolicy = GROUP_BY_PRIO,
403 .pgfailback = -FAILBACK_IMMEDIATE,
404 .rr_weight = RR_WEIGHT_NONE,
405 .no_path_retry = 300,
406 .minio = DEFAULT_MINIO,
407 .checker_name = RDAC,
408 .prio_name = PRIO_RDAC,
414 .getuid = DEFAULT_GETUID,
415 .features = "1 queue_if_no_path",
416 .hwhandler = "1 rdac",
417 .selector = DEFAULT_SELECTOR,
418 .pgpolicy = GROUP_BY_PRIO,
419 .pgfailback = -FAILBACK_IMMEDIATE,
420 .rr_weight = RR_WEIGHT_NONE,
421 .no_path_retry = 300,
422 .minio = DEFAULT_MINIO,
423 .checker_name = RDAC,
424 .prio_name = PRIO_RDAC,
427 /* IBM DS3200 / DS3300 / DS3400 */
430 .getuid = DEFAULT_GETUID,
431 .features = "1 queue_if_no_path",
432 .hwhandler = "1 rdac",
433 .selector = DEFAULT_SELECTOR,
434 .pgpolicy = GROUP_BY_PRIO,
435 .pgfailback = -FAILBACK_IMMEDIATE,
436 .rr_weight = RR_WEIGHT_NONE,
437 .no_path_retry = 300,
438 .minio = DEFAULT_MINIO,
439 .checker_name = RDAC,
440 .prio_name = PRIO_RDAC,
443 /* IBM DS4400 / DS4500 / FAStT700 */
446 .getuid = DEFAULT_GETUID,
447 .features = DEFAULT_FEATURES,
448 .hwhandler = "1 rdac",
449 .selector = DEFAULT_SELECTOR,
450 .pgpolicy = GROUP_BY_PRIO,
451 .pgfailback = -FAILBACK_IMMEDIATE,
452 .rr_weight = RR_WEIGHT_NONE,
453 .no_path_retry = NO_PATH_RETRY_QUEUE,
454 .minio = DEFAULT_MINIO,
455 .checker_name = RDAC,
456 .prio_name = PRIO_RDAC,
460 .product = "1745|1746",
461 .getuid = DEFAULT_GETUID,
462 .features = "2 pg_init_retries 50",
463 .hwhandler = "1 rdac",
464 .selector = DEFAULT_SELECTOR,
465 .pgpolicy = GROUP_BY_PRIO,
466 .pgfailback = -FAILBACK_IMMEDIATE,
467 .rr_weight = RR_WEIGHT_NONE,
469 .minio = DEFAULT_MINIO,
470 .checker_name = RDAC,
471 .prio_name = PRIO_RDAC,
477 .getuid = DEFAULT_GETUID,
478 .features = DEFAULT_FEATURES,
479 .hwhandler = "1 rdac",
480 .selector = DEFAULT_SELECTOR,
481 .pgpolicy = GROUP_BY_PRIO,
482 .pgfailback = -FAILBACK_IMMEDIATE,
483 .rr_weight = RR_WEIGHT_NONE,
484 .no_path_retry = NO_PATH_RETRY_QUEUE,
485 .minio = DEFAULT_MINIO,
486 .checker_name = RDAC,
487 .prio_name = PRIO_RDAC,
493 .getuid = DEFAULT_GETUID,
494 .features = DEFAULT_FEATURES,
495 .hwhandler = "1 rdac",
496 .selector = DEFAULT_SELECTOR,
497 .pgpolicy = GROUP_BY_PRIO,
498 .pgfailback = -FAILBACK_IMMEDIATE,
499 .rr_weight = RR_WEIGHT_NONE,
500 .no_path_retry = NO_PATH_RETRY_QUEUE,
501 .minio = DEFAULT_MINIO,
502 .checker_name = RDAC,
503 .prio_name = PRIO_RDAC,
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 .checker_name = RDAC,
519 .prio_name = PRIO_RDAC,
522 /* IBM Netfinity Fibre Channel RAID Controller Unit */
525 .getuid = DEFAULT_GETUID,
526 .features = DEFAULT_FEATURES,
527 .hwhandler = "1 rdac",
528 .selector = DEFAULT_SELECTOR,
529 .pgpolicy = GROUP_BY_PRIO,
530 .pgfailback = -FAILBACK_IMMEDIATE,
531 .rr_weight = RR_WEIGHT_NONE,
532 .no_path_retry = NO_PATH_RETRY_QUEUE,
533 .minio = DEFAULT_MINIO,
534 .checker_name = RDAC,
535 .prio_name = PRIO_RDAC,
538 /* IBM DS4200 / FAStT200 */
541 .getuid = DEFAULT_GETUID,
542 .features = DEFAULT_FEATURES,
543 .hwhandler = DEFAULT_HWHANDLER,
544 .selector = DEFAULT_SELECTOR,
545 .pgpolicy = GROUP_BY_SERIAL,
546 .pgfailback = FAILBACK_UNDEF,
547 .rr_weight = RR_WEIGHT_NONE,
548 .no_path_retry = NO_PATH_RETRY_UNDEF,
549 .minio = DEFAULT_MINIO,
551 .prio_name = DEFAULT_PRIO,
554 /* IBM ESS F20 aka Shark */
556 .product = "2105800",
557 .getuid = DEFAULT_GETUID,
558 .features = "1 queue_if_no_path",
559 .hwhandler = DEFAULT_HWHANDLER,
560 .selector = DEFAULT_SELECTOR,
561 .pgpolicy = GROUP_BY_SERIAL,
562 .pgfailback = FAILBACK_UNDEF,
563 .rr_weight = RR_WEIGHT_NONE,
564 .no_path_retry = NO_PATH_RETRY_UNDEF,
565 .minio = DEFAULT_MINIO,
567 .prio_name = DEFAULT_PRIO,
570 /* IBM ESS F20 aka Shark */
572 .product = "2105F20",
573 .getuid = DEFAULT_GETUID,
574 .features = "1 queue_if_no_path",
575 .hwhandler = DEFAULT_HWHANDLER,
576 .selector = DEFAULT_SELECTOR,
577 .pgpolicy = GROUP_BY_SERIAL,
578 .pgfailback = FAILBACK_UNDEF,
579 .rr_weight = RR_WEIGHT_NONE,
580 .no_path_retry = NO_PATH_RETRY_UNDEF,
581 .minio = DEFAULT_MINIO,
583 .prio_name = DEFAULT_PRIO,
588 .product = "1750500",
589 .getuid = DEFAULT_GETUID,
590 .features = "1 queue_if_no_path",
591 .hwhandler = DEFAULT_HWHANDLER,
592 .selector = DEFAULT_SELECTOR,
593 .pgpolicy = GROUP_BY_PRIO,
594 .pgfailback = -FAILBACK_IMMEDIATE,
595 .rr_weight = RR_WEIGHT_NONE,
596 .no_path_retry = NO_PATH_RETRY_UNDEF,
597 .minio = DEFAULT_MINIO,
599 .prio_name = PRIO_ALUA,
604 .product = "2107900",
605 .getuid = DEFAULT_GETUID,
606 .features = "1 queue_if_no_path",
607 .hwhandler = DEFAULT_HWHANDLER,
608 .selector = DEFAULT_SELECTOR,
609 .pgpolicy = MULTIBUS,
610 .pgfailback = FAILBACK_UNDEF,
611 .rr_weight = RR_WEIGHT_NONE,
612 .no_path_retry = NO_PATH_RETRY_UNDEF,
613 .minio = DEFAULT_MINIO,
615 .prio_name = DEFAULT_PRIO,
618 /* IBM SAN Volume Controller */
621 .getuid = DEFAULT_GETUID,
622 .features = "1 queue_if_no_path",
623 .hwhandler = DEFAULT_HWHANDLER,
624 .selector = DEFAULT_SELECTOR,
625 .pgpolicy = GROUP_BY_PRIO,
626 .pgfailback = -FAILBACK_IMMEDIATE,
627 .rr_weight = RR_WEIGHT_NONE,
628 .no_path_retry = NO_PATH_RETRY_UNDEF,
629 .minio = DEFAULT_MINIO,
631 .prio_name = PRIO_ALUA,
634 /* IBM S/390 ECKD DASD */
636 .product = "S/390 DASD ECKD",
637 .bl_product = "S/390.*",
638 .getuid = "/sbin/dasdinfo -u -b %n",
639 .features = "1 queue_if_no_path",
640 .hwhandler = DEFAULT_HWHANDLER,
641 .selector = DEFAULT_SELECTOR,
642 .pgpolicy = MULTIBUS,
643 .pgfailback = FAILBACK_UNDEF,
644 .rr_weight = RR_WEIGHT_NONE,
645 .no_path_retry = NO_PATH_RETRY_UNDEF,
646 .minio = DEFAULT_MINIO,
647 .checker_name = DIRECTIO,
648 .prio_name = DEFAULT_PRIO,
651 /* IBM S/390 FBA DASD */
653 .product = "S/390 DASD FBA",
654 .bl_product = "S/390.*",
655 .getuid = "/sbin/dasdinfo -u -b %n",
656 .features = "1 queue_if_no_path",
657 .hwhandler = DEFAULT_HWHANDLER,
658 .selector = DEFAULT_SELECTOR,
659 .pgpolicy = MULTIBUS,
660 .pgfailback = FAILBACK_UNDEF,
661 .rr_weight = RR_WEIGHT_NONE,
662 .no_path_retry = NO_PATH_RETRY_UNDEF,
663 .minio = DEFAULT_MINIO,
664 .checker_name = DIRECTIO,
665 .prio_name = DEFAULT_PRIO,
671 .getuid = DEFAULT_GETUID,
672 .features = "1 queue_if_no_path",
673 .hwhandler = "1 alua",
674 .selector = DEFAULT_SELECTOR,
675 .pgpolicy = GROUP_BY_PRIO,
676 .pgfailback = -FAILBACK_IMMEDIATE,
677 .rr_weight = RR_WEIGHT_NONE,
678 .no_path_retry = NO_PATH_RETRY_UNDEF,
679 .minio = DEFAULT_MINIO,
681 .prio_name = PRIO_ALUA,
684 * IBM Power Virtual SCSI Devices
686 * Maintainer : Brian King, IBM
687 * Mail : brking@linux.vnet.ibm.com
693 .getuid = DEFAULT_GETUID,
694 .features = DEFAULT_FEATURES,
695 .hwhandler = DEFAULT_HWHANDLER,
696 .selector = DEFAULT_SELECTOR,
697 .pgpolicy = MULTIBUS,
698 .pgfailback = -FAILBACK_IMMEDIATE,
699 .rr_weight = RR_WEIGHT_NONE,
700 .no_path_retry = (300 / DEFAULT_CHECKINT),
701 .minio = DEFAULT_MINIO,
702 .checker_name = DIRECTIO,
703 .prio_name = DEFAULT_PRIO,
706 /* IBM 3303 NVDISK */
708 .product = "3303 NVDISK",
709 .getuid = DEFAULT_GETUID,
710 .features = DEFAULT_FEATURES,
711 .hwhandler = DEFAULT_HWHANDLER,
712 .selector = DEFAULT_SELECTOR,
713 .pgpolicy = FAILOVER,
714 .pgfailback = -FAILBACK_IMMEDIATE,
715 .rr_weight = RR_WEIGHT_NONE,
716 .no_path_retry = (300 / DEFAULT_CHECKINT),
717 .minio = DEFAULT_MINIO,
719 .prio_name = DEFAULT_PRIO,
726 .getuid = DEFAULT_GETUID,
727 .features = "2 pg_init_retries 50",
728 .hwhandler = "1 rdac",
729 .selector = DEFAULT_SELECTOR,
730 .pgpolicy = GROUP_BY_PRIO,
731 .pgfailback = -FAILBACK_IMMEDIATE,
732 .rr_weight = RR_WEIGHT_NONE,
734 .minio = DEFAULT_MINIO,
735 .checker_name = RDAC,
736 .prio_name = PRIO_RDAC,
741 .product = "MD3000i",
742 .getuid = DEFAULT_GETUID,
743 .features = "2 pg_init_retries 50",
744 .hwhandler = "1 rdac",
745 .selector = DEFAULT_SELECTOR,
746 .pgpolicy = GROUP_BY_PRIO,
747 .pgfailback = -FAILBACK_IMMEDIATE,
748 .rr_weight = RR_WEIGHT_NONE,
750 .minio = DEFAULT_MINIO,
751 .checker_name = RDAC,
752 .prio_name = PRIO_RDAC,
758 .getuid = DEFAULT_GETUID,
759 .features = "2 pg_init_retries 50",
760 .hwhandler = "1 rdac",
761 .selector = DEFAULT_SELECTOR,
762 .pgpolicy = GROUP_BY_PRIO,
763 .pgfailback = -FAILBACK_IMMEDIATE,
764 .rr_weight = RR_WEIGHT_NONE,
766 .minio = DEFAULT_MINIO,
767 .checker_name = RDAC,
768 .prio_name = PRIO_RDAC,
773 .product = "MD32xxi",
774 .getuid = DEFAULT_GETUID,
775 .features = "2 pg_init_retries 50",
776 .hwhandler = "1 rdac",
777 .selector = DEFAULT_SELECTOR,
778 .pgpolicy = GROUP_BY_PRIO,
779 .pgfailback = -FAILBACK_IMMEDIATE,
780 .rr_weight = RR_WEIGHT_NONE,
782 .minio = DEFAULT_MINIO,
783 .checker_name = RDAC,
784 .prio_name = PRIO_RDAC,
787 * NETAPP controller family
789 * Maintainer : Dave Wysochanski
790 * Mail : davidw@netapp.com
795 .getuid = DEFAULT_GETUID,
796 .features = "1 queue_if_no_path",
797 .hwhandler = DEFAULT_HWHANDLER,
798 .selector = DEFAULT_SELECTOR,
799 .pgpolicy = GROUP_BY_PRIO,
800 .pgfailback = -FAILBACK_IMMEDIATE,
801 .rr_weight = RR_WEIGHT_NONE,
802 .no_path_retry = NO_PATH_RETRY_UNDEF,
804 .checker_name = DIRECTIO,
805 .prio_name = PRIO_NETAPP,
808 * NEXENTA/COMSTAR controller family
810 * Maintainer : Yacine Kheddache
811 * Mail : yacine@alyseo.com
815 .product = "COMSTAR",
816 .getuid = DEFAULT_GETUID,
817 .features = "1 queue_if_no_path",
818 .hwhandler = DEFAULT_HWHANDLER,
819 .selector = DEFAULT_SELECTOR,
820 .pgpolicy = GROUP_BY_SERIAL,
821 .pgfailback = -FAILBACK_IMMEDIATE,
822 .rr_weight = RR_WEIGHT_NONE,
825 .checker_name = DIRECTIO,
826 .prio_name = DEFAULT_PRIO,
829 * IBM NSeries (NETAPP) controller family
831 * Maintainer : Dave Wysochanski
832 * Mail : davidw@netapp.com
836 .product = "Nseries.*",
837 .getuid = DEFAULT_GETUID,
838 .features = "1 queue_if_no_path",
839 .hwhandler = DEFAULT_HWHANDLER,
840 .selector = DEFAULT_SELECTOR,
841 .pgpolicy = GROUP_BY_PRIO,
842 .pgfailback = -FAILBACK_IMMEDIATE,
843 .rr_weight = RR_WEIGHT_NONE,
844 .no_path_retry = NO_PATH_RETRY_UNDEF,
846 .checker_name = DIRECTIO,
847 .prio_name = PRIO_NETAPP,
850 * Pillar Data controller family
852 * Maintainer : Srinivasan Ramani
853 * Mail : sramani@pillardata.com
857 .product = "Axiom.*",
858 .getuid = DEFAULT_GETUID,
859 .features = DEFAULT_FEATURES,
860 .hwhandler = DEFAULT_HWHANDLER,
861 .selector = DEFAULT_SELECTOR,
862 .pgpolicy = GROUP_BY_PRIO,
863 .pgfailback = FAILBACK_UNDEF,
864 .rr_weight = RR_WEIGHT_NONE,
865 .no_path_retry = NO_PATH_RETRY_UNDEF,
866 .minio = DEFAULT_MINIO,
868 .prio_name = PRIO_ALUA,
873 * Maintainer : Christophe Varoqui
874 * Mail : christophe.varoqui@opensvc.com
878 .product = "TP9[13]00",
879 .getuid = DEFAULT_GETUID,
880 .features = DEFAULT_FEATURES,
881 .hwhandler = DEFAULT_HWHANDLER,
882 .selector = DEFAULT_SELECTOR,
883 .pgpolicy = MULTIBUS,
884 .pgfailback = FAILBACK_UNDEF,
885 .rr_weight = RR_WEIGHT_NONE,
886 .no_path_retry = NO_PATH_RETRY_UNDEF,
887 .minio = DEFAULT_MINIO,
888 .checker_name = DIRECTIO,
889 .prio_name = DEFAULT_PRIO,
893 .product = "TP9[45]00",
894 .getuid = DEFAULT_GETUID,
895 .features = DEFAULT_FEATURES,
896 .hwhandler = "1 rdac",
897 .selector = DEFAULT_SELECTOR,
898 .pgpolicy = GROUP_BY_PRIO,
899 .pgfailback = -FAILBACK_IMMEDIATE,
900 .rr_weight = RR_WEIGHT_NONE,
901 .no_path_retry = NO_PATH_RETRY_QUEUE,
902 .minio = DEFAULT_MINIO,
903 .checker_name = RDAC,
904 .prio_name = PRIO_RDAC,
909 .getuid = DEFAULT_GETUID,
910 .features = DEFAULT_FEATURES,
911 .hwhandler = "1 rdac",
912 .selector = DEFAULT_SELECTOR,
913 .pgpolicy = GROUP_BY_PRIO,
914 .pgfailback = -FAILBACK_IMMEDIATE,
915 .rr_weight = RR_WEIGHT_NONE,
916 .no_path_retry = NO_PATH_RETRY_QUEUE,
917 .minio = DEFAULT_MINIO,
918 .checker_name = RDAC,
919 .prio_name = PRIO_RDAC,
924 * Maintainer : Christophe Varoqui
925 * Mail : christophe.varoqui@opensvc.com
929 .product = "OPENstorage D280",
930 .getuid = DEFAULT_GETUID,
931 .features = DEFAULT_FEATURES,
932 .hwhandler = "1 rdac",
933 .selector = DEFAULT_SELECTOR,
934 .pgpolicy = GROUP_BY_PRIO,
935 .pgfailback = -FAILBACK_IMMEDIATE,
936 .rr_weight = RR_WEIGHT_NONE,
937 .no_path_retry = NO_PATH_RETRY_UNDEF,
938 .minio = DEFAULT_MINIO,
940 .prio_name = PRIO_RDAC,
945 * Maintainer : Christophe Varoqui
946 * Mail : christophe.varoqui@opensvc.com
950 .product = "(StorEdge 3510|T4)",
951 .getuid = DEFAULT_GETUID,
952 .features = DEFAULT_FEATURES,
953 .hwhandler = DEFAULT_HWHANDLER,
954 .selector = DEFAULT_SELECTOR,
955 .pgpolicy = MULTIBUS,
956 .pgfailback = FAILBACK_UNDEF,
957 .rr_weight = RR_WEIGHT_NONE,
958 .no_path_retry = NO_PATH_RETRY_UNDEF,
959 .minio = DEFAULT_MINIO,
960 .checker_name = DIRECTIO,
961 .prio_name = DEFAULT_PRIO,
966 * Maintainer : Bart Brooks, Pivot3
967 * Mail : bartb@pivot3.com
971 .product = "RAIGE VOLUME",
972 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
973 .features = "1 queue_if_no_path",
974 .hwhandler = DEFAULT_HWHANDLER,
975 .selector = DEFAULT_SELECTOR,
976 .pgpolicy = MULTIBUS,
977 .pgfailback = FAILBACK_UNDEF,
978 .rr_weight = RR_WEIGHT_NONE,
979 .no_path_retry = NO_PATH_RETRY_UNDEF,
982 .prio_name = DEFAULT_PRIO,
986 .product = "CSM200_R",
987 .getuid = DEFAULT_GETUID,
988 .features = DEFAULT_FEATURES,
989 .hwhandler = "1 rdac",
990 .selector = DEFAULT_SELECTOR,
991 .pgpolicy = GROUP_BY_PRIO,
992 .pgfailback = -FAILBACK_IMMEDIATE,
993 .rr_weight = RR_WEIGHT_NONE,
994 .no_path_retry = NO_PATH_RETRY_QUEUE,
995 .minio = DEFAULT_MINIO,
996 .checker_name = RDAC,
997 .prio_name = PRIO_RDAC,
999 /* SUN/LSI 2510, 2540, 2530, 2540 */
1002 .product = "LCSM100_[IEFS]",
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 .checker_name = RDAC,
1013 .prio_name = PRIO_RDAC,
1015 /* LSI Generic rdac storage */
1017 .vendor = "(LSI|ENGENIO)",
1018 .product = "INF-01-00",
1019 .getuid = DEFAULT_GETUID,
1020 .features = "2 pg_init_retries 50",
1021 .hwhandler = "1 rdac",
1022 .selector = DEFAULT_SELECTOR,
1023 .pgpolicy = GROUP_BY_PRIO,
1024 .pgfailback = -FAILBACK_IMMEDIATE,
1025 .rr_weight = RR_WEIGHT_NONE,
1026 .no_path_retry = 15,
1027 .minio = DEFAULT_MINIO,
1028 .checker_name = RDAC,
1029 .prio_name = PRIO_RDAC,
1033 .product = "FLEXLINE 380",
1034 .bl_product = "Universal Xport",
1035 .getuid = DEFAULT_GETUID,
1036 .features = DEFAULT_FEATURES,
1037 .hwhandler = "1 rdac",
1038 .selector = DEFAULT_SELECTOR,
1039 .pgpolicy = GROUP_BY_PRIO,
1040 .pgfailback = -FAILBACK_IMMEDIATE,
1041 .rr_weight = RR_WEIGHT_NONE,
1042 .no_path_retry = NO_PATH_RETRY_QUEUE,
1043 .minio = DEFAULT_MINIO,
1044 .checker_name = RDAC,
1045 .prio_name = PRIO_RDAC,
1062 .checker_name = NULL,
1068 setup_default_hwtable (vector hw)
1071 struct hwentry * hwe = default_hw;
1073 while (hwe->vendor) {
1074 r += store_hwe(hw, hwe);