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@free.fr
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 */
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@free.fr
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,
286 * Fujitsu controller family
288 * Maintainer : Christophe Varoqui
289 * Mail : christophe.varoqui@free.fr
293 .product = "CentricStor",
294 .getuid = DEFAULT_GETUID,
295 .features = DEFAULT_FEATURES,
296 .hwhandler = DEFAULT_HWHANDLER,
297 .selector = DEFAULT_SELECTOR,
298 .pgpolicy = GROUP_BY_SERIAL,
299 .pgfailback = FAILBACK_UNDEF,
300 .rr_weight = RR_WEIGHT_NONE,
301 .no_path_retry = NO_PATH_RETRY_UNDEF,
302 .minio = DEFAULT_MINIO,
303 .checker_name = DIRECTIO,
304 .prio_name = DEFAULT_PRIO,
307 * Hitachi controller family
309 * Maintainer : Matthias Rudolph
310 * Mail : matthias.rudolph@hds.com
313 .vendor = "(HITACHI|HP)",
314 .product = "OPEN-.*",
315 .getuid = DEFAULT_GETUID,
316 .features = DEFAULT_FEATURES,
317 .hwhandler = DEFAULT_HWHANDLER,
318 .selector = DEFAULT_SELECTOR,
319 .pgpolicy = MULTIBUS,
320 .pgfailback = FAILBACK_UNDEF,
321 .rr_weight = RR_WEIGHT_NONE,
322 .no_path_retry = NO_PATH_RETRY_UNDEF,
323 .minio = DEFAULT_MINIO,
325 .prio_name = DEFAULT_PRIO,
330 .getuid = DEFAULT_GETUID,
331 .features = "1 queue_if_no_path",
332 .hwhandler = DEFAULT_HWHANDLER,
333 .selector = DEFAULT_SELECTOR,
334 .pgpolicy = GROUP_BY_PRIO,
335 .pgfailback = -FAILBACK_IMMEDIATE,
336 .rr_weight = RR_WEIGHT_NONE,
337 .no_path_retry = NO_PATH_RETRY_UNDEF,
338 .minio = DEFAULT_MINIO,
340 .prio_name = PRIO_HDS,
343 * IBM controller family
345 * Maintainer : Hannes Reinecke, SuSE
346 * Mail : hare@suse.de
350 .product = "ProFibre 4000R",
351 .getuid = DEFAULT_GETUID,
352 .features = DEFAULT_FEATURES,
353 .hwhandler = DEFAULT_HWHANDLER,
354 .selector = DEFAULT_SELECTOR,
355 .pgpolicy = MULTIBUS,
356 .pgfailback = FAILBACK_UNDEF,
357 .rr_weight = RR_WEIGHT_NONE,
358 .no_path_retry = NO_PATH_RETRY_UNDEF,
359 .minio = DEFAULT_MINIO,
360 .checker_name = DIRECTIO,
361 .prio_name = DEFAULT_PRIO,
364 /* IBM FAStT 1722-600 */
366 .product = "1722-600",
367 .getuid = DEFAULT_GETUID,
368 .features = "1 queue_if_no_path",
369 .hwhandler = "1 rdac",
370 .selector = DEFAULT_SELECTOR,
371 .pgpolicy = GROUP_BY_PRIO,
372 .pgfailback = -FAILBACK_IMMEDIATE,
373 .rr_weight = RR_WEIGHT_NONE,
374 .no_path_retry = 300,
375 .minio = DEFAULT_MINIO,
376 .checker_name = RDAC,
377 .prio_name = PRIO_RDAC,
383 .getuid = DEFAULT_GETUID,
384 .features = "1 queue_if_no_path",
385 .hwhandler = "1 rdac",
386 .selector = DEFAULT_SELECTOR,
387 .pgpolicy = GROUP_BY_PRIO,
388 .pgfailback = -FAILBACK_IMMEDIATE,
389 .rr_weight = RR_WEIGHT_NONE,
390 .no_path_retry = 300,
391 .minio = DEFAULT_MINIO,
392 .checker_name = RDAC,
393 .prio_name = PRIO_RDAC,
396 /* IBM DS3200 / DS3300 / DS3400 */
399 .getuid = DEFAULT_GETUID,
400 .features = "1 queue_if_no_path",
401 .hwhandler = "1 rdac",
402 .selector = DEFAULT_SELECTOR,
403 .pgpolicy = GROUP_BY_PRIO,
404 .pgfailback = -FAILBACK_IMMEDIATE,
405 .rr_weight = RR_WEIGHT_NONE,
406 .no_path_retry = 300,
407 .minio = DEFAULT_MINIO,
408 .checker_name = RDAC,
409 .prio_name = PRIO_RDAC,
412 /* IBM DS4400 / DS4500 / FAStT700 */
415 .getuid = DEFAULT_GETUID,
416 .features = DEFAULT_FEATURES,
417 .hwhandler = "1 rdac",
418 .selector = DEFAULT_SELECTOR,
419 .pgpolicy = GROUP_BY_PRIO,
420 .pgfailback = -FAILBACK_IMMEDIATE,
421 .rr_weight = RR_WEIGHT_NONE,
422 .no_path_retry = NO_PATH_RETRY_QUEUE,
423 .minio = DEFAULT_MINIO,
424 .checker_name = RDAC,
425 .prio_name = PRIO_RDAC,
431 .getuid = DEFAULT_GETUID,
432 .features = DEFAULT_FEATURES,
433 .hwhandler = "1 rdac",
434 .selector = DEFAULT_SELECTOR,
435 .pgpolicy = GROUP_BY_PRIO,
436 .pgfailback = -FAILBACK_IMMEDIATE,
437 .rr_weight = RR_WEIGHT_NONE,
438 .no_path_retry = NO_PATH_RETRY_QUEUE,
439 .minio = DEFAULT_MINIO,
440 .checker_name = RDAC,
441 .prio_name = PRIO_RDAC,
447 .getuid = DEFAULT_GETUID,
448 .features = DEFAULT_FEATURES,
449 .hwhandler = "1 rdac",
450 .selector = DEFAULT_SELECTOR,
451 .pgpolicy = GROUP_BY_PRIO,
452 .pgfailback = -FAILBACK_IMMEDIATE,
453 .rr_weight = RR_WEIGHT_NONE,
454 .no_path_retry = NO_PATH_RETRY_QUEUE,
455 .minio = DEFAULT_MINIO,
456 .checker_name = RDAC,
457 .prio_name = PRIO_RDAC,
463 .getuid = DEFAULT_GETUID,
464 .features = DEFAULT_FEATURES,
465 .hwhandler = "1 rdac",
466 .selector = DEFAULT_SELECTOR,
467 .pgpolicy = GROUP_BY_PRIO,
468 .pgfailback = -FAILBACK_IMMEDIATE,
469 .rr_weight = RR_WEIGHT_NONE,
470 .no_path_retry = NO_PATH_RETRY_QUEUE,
471 .minio = DEFAULT_MINIO,
472 .checker_name = RDAC,
473 .prio_name = PRIO_RDAC,
476 /* IBM Netfinity Fibre Channel RAID Controller Unit */
479 .getuid = DEFAULT_GETUID,
480 .features = DEFAULT_FEATURES,
481 .hwhandler = "1 rdac",
482 .selector = DEFAULT_SELECTOR,
483 .pgpolicy = GROUP_BY_PRIO,
484 .pgfailback = -FAILBACK_IMMEDIATE,
485 .rr_weight = RR_WEIGHT_NONE,
486 .no_path_retry = NO_PATH_RETRY_QUEUE,
487 .minio = DEFAULT_MINIO,
488 .checker_name = RDAC,
489 .prio_name = PRIO_RDAC,
492 /* IBM DS4200 / FAStT200 */
495 .getuid = DEFAULT_GETUID,
496 .features = DEFAULT_FEATURES,
497 .hwhandler = DEFAULT_HWHANDLER,
498 .selector = DEFAULT_SELECTOR,
499 .pgpolicy = GROUP_BY_SERIAL,
500 .pgfailback = FAILBACK_UNDEF,
501 .rr_weight = RR_WEIGHT_NONE,
502 .no_path_retry = NO_PATH_RETRY_UNDEF,
503 .minio = DEFAULT_MINIO,
505 .prio_name = DEFAULT_PRIO,
508 /* IBM ESS F20 aka Shark */
510 .product = "2105800",
511 .getuid = DEFAULT_GETUID,
512 .features = "1 queue_if_no_path",
513 .hwhandler = DEFAULT_HWHANDLER,
514 .selector = DEFAULT_SELECTOR,
515 .pgpolicy = GROUP_BY_SERIAL,
516 .pgfailback = FAILBACK_UNDEF,
517 .rr_weight = RR_WEIGHT_NONE,
518 .no_path_retry = NO_PATH_RETRY_UNDEF,
519 .minio = DEFAULT_MINIO,
521 .prio_name = DEFAULT_PRIO,
524 /* IBM ESS F20 aka Shark */
526 .product = "2105F20",
527 .getuid = DEFAULT_GETUID,
528 .features = "1 queue_if_no_path",
529 .hwhandler = DEFAULT_HWHANDLER,
530 .selector = DEFAULT_SELECTOR,
531 .pgpolicy = GROUP_BY_SERIAL,
532 .pgfailback = FAILBACK_UNDEF,
533 .rr_weight = RR_WEIGHT_NONE,
534 .no_path_retry = NO_PATH_RETRY_UNDEF,
535 .minio = DEFAULT_MINIO,
537 .prio_name = DEFAULT_PRIO,
542 .product = "1750500",
543 .getuid = DEFAULT_GETUID,
544 .features = "1 queue_if_no_path",
545 .hwhandler = DEFAULT_HWHANDLER,
546 .selector = DEFAULT_SELECTOR,
547 .pgpolicy = GROUP_BY_PRIO,
548 .pgfailback = -FAILBACK_IMMEDIATE,
549 .rr_weight = RR_WEIGHT_NONE,
550 .no_path_retry = NO_PATH_RETRY_UNDEF,
551 .minio = DEFAULT_MINIO,
553 .prio_name = PRIO_ALUA,
558 .product = "2107900",
559 .getuid = DEFAULT_GETUID,
560 .features = "1 queue_if_no_path",
561 .hwhandler = DEFAULT_HWHANDLER,
562 .selector = DEFAULT_SELECTOR,
563 .pgpolicy = MULTIBUS,
564 .pgfailback = FAILBACK_UNDEF,
565 .rr_weight = RR_WEIGHT_NONE,
566 .no_path_retry = NO_PATH_RETRY_UNDEF,
567 .minio = DEFAULT_MINIO,
569 .prio_name = DEFAULT_PRIO,
572 /* IBM SAN Volume Controller */
575 .getuid = DEFAULT_GETUID,
576 .features = "1 queue_if_no_path",
577 .hwhandler = DEFAULT_HWHANDLER,
578 .selector = DEFAULT_SELECTOR,
579 .pgpolicy = GROUP_BY_PRIO,
580 .pgfailback = -FAILBACK_IMMEDIATE,
581 .rr_weight = RR_WEIGHT_NONE,
582 .no_path_retry = NO_PATH_RETRY_UNDEF,
583 .minio = DEFAULT_MINIO,
585 .prio_name = PRIO_ALUA,
588 /* IBM S/390 ECKD DASD */
590 .product = "S/390 DASD ECKD",
591 .bl_product = "S/390.*",
592 .getuid = "/sbin/dasdinfo -u -b %n",
593 .features = "1 queue_if_no_path",
594 .hwhandler = DEFAULT_HWHANDLER,
595 .selector = DEFAULT_SELECTOR,
596 .pgpolicy = MULTIBUS,
597 .pgfailback = FAILBACK_UNDEF,
598 .rr_weight = RR_WEIGHT_NONE,
599 .no_path_retry = NO_PATH_RETRY_UNDEF,
600 .minio = DEFAULT_MINIO,
601 .checker_name = DIRECTIO,
602 .prio_name = DEFAULT_PRIO,
605 /* IBM S/390 FBA DASD */
607 .product = "S/390 DASD FBA",
608 .bl_product = "S/390.*",
609 .getuid = "/sbin/dasdinfo -u -b %n",
610 .features = "1 queue_if_no_path",
611 .hwhandler = DEFAULT_HWHANDLER,
612 .selector = DEFAULT_SELECTOR,
613 .pgpolicy = MULTIBUS,
614 .pgfailback = FAILBACK_UNDEF,
615 .rr_weight = RR_WEIGHT_NONE,
616 .no_path_retry = NO_PATH_RETRY_UNDEF,
617 .minio = DEFAULT_MINIO,
618 .checker_name = DIRECTIO,
619 .prio_name = DEFAULT_PRIO,
625 .getuid = DEFAULT_GETUID,
626 .features = "1 queue_if_no_path",
627 .hwhandler = "1 alua",
628 .selector = DEFAULT_SELECTOR,
629 .pgpolicy = GROUP_BY_PRIO,
630 .pgfailback = -FAILBACK_IMMEDIATE,
631 .rr_weight = RR_WEIGHT_NONE,
632 .no_path_retry = NO_PATH_RETRY_UNDEF,
633 .minio = DEFAULT_MINIO,
635 .prio_name = PRIO_ALUA,
638 * IBM Power Virtual SCSI Devices
640 * Maintainer : Brian King, IBM
641 * Mail : brking@linux.vnet.ibm.com
647 .getuid = DEFAULT_GETUID,
648 .features = DEFAULT_FEATURES,
649 .hwhandler = DEFAULT_HWHANDLER,
650 .selector = DEFAULT_SELECTOR,
651 .pgpolicy = MULTIBUS,
652 .pgfailback = -FAILBACK_IMMEDIATE,
653 .rr_weight = RR_WEIGHT_NONE,
654 .no_path_retry = (300 / DEFAULT_CHECKINT),
655 .minio = DEFAULT_MINIO,
656 .checker_name = DIRECTIO,
657 .prio_name = DEFAULT_PRIO,
663 .getuid = DEFAULT_GETUID,
664 .features = "1 queue_if_no_path",
665 .hwhandler = "1 rdac",
666 .selector = DEFAULT_SELECTOR,
667 .pgpolicy = GROUP_BY_PRIO,
668 .pgfailback = -FAILBACK_IMMEDIATE,
669 .rr_weight = RR_WEIGHT_NONE,
670 .minio = DEFAULT_MINIO,
671 .checker_name = RDAC,
672 .prio_name = PRIO_RDAC,
677 .product = "MD3000i",
678 .getuid = DEFAULT_GETUID,
679 .features = "1 queue_if_no_path",
680 .hwhandler = "1 rdac",
681 .selector = DEFAULT_SELECTOR,
682 .pgpolicy = GROUP_BY_PRIO,
683 .pgfailback = -FAILBACK_IMMEDIATE,
684 .rr_weight = RR_WEIGHT_NONE,
685 .minio = DEFAULT_MINIO,
686 .checker_name = RDAC,
687 .prio_name = PRIO_RDAC,
693 .getuid = DEFAULT_GETUID,
694 .features = "2 pg_init_retries 50",
695 .hwhandler = "1 rdac",
696 .selector = DEFAULT_SELECTOR,
697 .pgpolicy = GROUP_BY_PRIO,
698 .pgfailback = -FAILBACK_IMMEDIATE,
699 .rr_weight = RR_WEIGHT_NONE,
701 .minio = DEFAULT_MINIO,
702 .checker_name = RDAC,
703 .prio_name = PRIO_RDAC,
708 .product = "MD32xxi",
709 .getuid = DEFAULT_GETUID,
710 .features = "2 pg_init_retries 50",
711 .hwhandler = "1 rdac",
712 .selector = DEFAULT_SELECTOR,
713 .pgpolicy = GROUP_BY_PRIO,
714 .pgfailback = -FAILBACK_IMMEDIATE,
715 .rr_weight = RR_WEIGHT_NONE,
717 .minio = DEFAULT_MINIO,
718 .checker_name = RDAC,
719 .prio_name = PRIO_RDAC,
722 * NETAPP controller family
724 * Maintainer : Dave Wysochanski
725 * Mail : davidw@netapp.com
730 .getuid = DEFAULT_GETUID,
731 .features = "1 queue_if_no_path",
732 .hwhandler = DEFAULT_HWHANDLER,
733 .selector = DEFAULT_SELECTOR,
734 .pgpolicy = GROUP_BY_PRIO,
735 .pgfailback = -FAILBACK_IMMEDIATE,
736 .rr_weight = RR_WEIGHT_NONE,
737 .no_path_retry = NO_PATH_RETRY_UNDEF,
739 .checker_name = DIRECTIO,
740 .prio_name = PRIO_NETAPP,
743 * IBM NSeries (NETAPP) controller family
745 * Maintainer : Dave Wysochanski
746 * Mail : davidw@netapp.com
750 .product = "Nseries.*",
751 .getuid = DEFAULT_GETUID,
752 .features = "1 queue_if_no_path",
753 .hwhandler = DEFAULT_HWHANDLER,
754 .selector = DEFAULT_SELECTOR,
755 .pgpolicy = GROUP_BY_PRIO,
756 .pgfailback = -FAILBACK_IMMEDIATE,
757 .rr_weight = RR_WEIGHT_NONE,
758 .no_path_retry = NO_PATH_RETRY_UNDEF,
760 .checker_name = DIRECTIO,
761 .prio_name = PRIO_NETAPP,
764 * Pillar Data controller family
766 * Maintainer : Srinivasan Ramani
767 * Mail : sramani@pillardata.com
771 .product = "Axiom.*",
772 .getuid = DEFAULT_GETUID,
773 .features = DEFAULT_FEATURES,
774 .hwhandler = DEFAULT_HWHANDLER,
775 .selector = DEFAULT_SELECTOR,
776 .pgpolicy = GROUP_BY_PRIO,
777 .pgfailback = FAILBACK_UNDEF,
778 .rr_weight = RR_WEIGHT_NONE,
779 .no_path_retry = NO_PATH_RETRY_UNDEF,
780 .minio = DEFAULT_MINIO,
782 .prio_name = PRIO_ALUA,
787 * Maintainer : Christophe Varoqui
788 * Mail : christophe.varoqui@free.fr
792 .product = "TP9[13]00",
793 .getuid = DEFAULT_GETUID,
794 .features = DEFAULT_FEATURES,
795 .hwhandler = DEFAULT_HWHANDLER,
796 .selector = DEFAULT_SELECTOR,
797 .pgpolicy = MULTIBUS,
798 .pgfailback = FAILBACK_UNDEF,
799 .rr_weight = RR_WEIGHT_NONE,
800 .no_path_retry = NO_PATH_RETRY_UNDEF,
801 .minio = DEFAULT_MINIO,
802 .checker_name = DIRECTIO,
803 .prio_name = DEFAULT_PRIO,
807 .product = "TP9[45]00",
808 .getuid = DEFAULT_GETUID,
809 .features = DEFAULT_FEATURES,
810 .hwhandler = "1 rdac",
811 .selector = DEFAULT_SELECTOR,
812 .pgpolicy = GROUP_BY_PRIO,
813 .pgfailback = -FAILBACK_IMMEDIATE,
814 .rr_weight = RR_WEIGHT_NONE,
815 .no_path_retry = NO_PATH_RETRY_QUEUE,
816 .minio = DEFAULT_MINIO,
817 .checker_name = RDAC,
818 .prio_name = PRIO_RDAC,
823 .getuid = DEFAULT_GETUID,
824 .features = DEFAULT_FEATURES,
825 .hwhandler = "1 rdac",
826 .selector = DEFAULT_SELECTOR,
827 .pgpolicy = GROUP_BY_PRIO,
828 .pgfailback = -FAILBACK_IMMEDIATE,
829 .rr_weight = RR_WEIGHT_NONE,
830 .no_path_retry = NO_PATH_RETRY_QUEUE,
831 .minio = DEFAULT_MINIO,
832 .checker_name = RDAC,
833 .prio_name = PRIO_RDAC,
838 * Maintainer : Christophe Varoqui
839 * Mail : christophe.varoqui@free.fr
843 .product = "OPENstorage D280",
844 .getuid = DEFAULT_GETUID,
845 .features = DEFAULT_FEATURES,
846 .hwhandler = "1 rdac",
847 .selector = DEFAULT_SELECTOR,
848 .pgpolicy = GROUP_BY_PRIO,
849 .pgfailback = -FAILBACK_IMMEDIATE,
850 .rr_weight = RR_WEIGHT_NONE,
851 .no_path_retry = NO_PATH_RETRY_UNDEF,
852 .minio = DEFAULT_MINIO,
854 .prio_name = PRIO_RDAC,
859 * Maintainer : Christophe Varoqui
860 * Mail : christophe.varoqui@free.fr
864 .product = "(StorEdge 3510|T4)",
865 .getuid = DEFAULT_GETUID,
866 .features = DEFAULT_FEATURES,
867 .hwhandler = DEFAULT_HWHANDLER,
868 .selector = DEFAULT_SELECTOR,
869 .pgpolicy = MULTIBUS,
870 .pgfailback = FAILBACK_UNDEF,
871 .rr_weight = RR_WEIGHT_NONE,
872 .no_path_retry = NO_PATH_RETRY_UNDEF,
873 .minio = DEFAULT_MINIO,
874 .checker_name = DIRECTIO,
875 .prio_name = DEFAULT_PRIO,
880 * Maintainer : Bart Brooks, Pivot3
881 * Mail : bartb@pivot3.com
885 .product = "RAIGE VOLUME",
886 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
887 .features = "1 queue_if_no_path",
888 .hwhandler = DEFAULT_HWHANDLER,
889 .selector = DEFAULT_SELECTOR,
890 .pgpolicy = MULTIBUS,
891 .pgfailback = FAILBACK_UNDEF,
892 .rr_weight = RR_WEIGHT_NONE,
893 .no_path_retry = NO_PATH_RETRY_UNDEF,
896 .prio_name = DEFAULT_PRIO,
900 .product = "CSM200_R",
901 .getuid = DEFAULT_GETUID,
902 .features = DEFAULT_FEATURES,
903 .hwhandler = "1 rdac",
904 .selector = DEFAULT_SELECTOR,
905 .pgpolicy = GROUP_BY_PRIO,
906 .pgfailback = -FAILBACK_IMMEDIATE,
907 .rr_weight = RR_WEIGHT_NONE,
908 .no_path_retry = NO_PATH_RETRY_QUEUE,
909 .minio = DEFAULT_MINIO,
910 .checker_name = RDAC,
911 .prio_name = PRIO_RDAC,
913 /* SUN/LSI 2510, 2540, 2530, 2540 */
916 .product = "LCSM100_[IEFS]",
917 .getuid = DEFAULT_GETUID,
918 .features = DEFAULT_FEATURES,
919 .hwhandler = "1 rdac",
920 .selector = DEFAULT_SELECTOR,
921 .pgpolicy = GROUP_BY_PRIO,
922 .pgfailback = -FAILBACK_IMMEDIATE,
923 .rr_weight = RR_WEIGHT_NONE,
924 .no_path_retry = NO_PATH_RETRY_QUEUE,
925 .minio = DEFAULT_MINIO,
926 .checker_name = RDAC,
927 .prio_name = PRIO_RDAC,
929 /* LSI Generic rdac storage */
931 .vendor = "(LSI|ENGENIO)",
932 .product = "INF-01-00",
933 .getuid = DEFAULT_GETUID,
934 .features = "2 pg_init_retries 50",
935 .hwhandler = "1 rdac",
936 .selector = DEFAULT_SELECTOR,
937 .pgpolicy = GROUP_BY_PRIO,
938 .pgfailback = -FAILBACK_IMMEDIATE,
939 .rr_weight = RR_WEIGHT_NONE,
941 .minio = DEFAULT_MINIO,
942 .checker_name = RDAC,
943 .prio_name = PRIO_RDAC,
960 .checker_name = NULL,
966 setup_default_hwtable (vector hw)
969 struct hwentry * hwe = default_hw;
971 while (hwe->vendor) {
972 r += store_hwe(hw, hwe);