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,
286 * Fujitsu controller family
288 * Maintainer : Christophe Varoqui
289 * Mail : christophe.varoqui@opensvc.com
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,
308 .product = "Invista",
309 .bl_product = "LUNZ",
310 .getuid = DEFAULT_GETUID,
311 .features = DEFAULT_FEATURES,
312 .hwhandler = DEFAULT_HWHANDLER,
313 .selector = DEFAULT_SELECTOR,
314 .pgpolicy = FAILOVER,
315 .pgfailback = FAILBACK_UNDEF,
316 .rr_weight = RR_WEIGHT_NONE,
318 .minio = DEFAULT_MINIO,
320 .prio_name = DEFAULT_PRIO,
323 * Hitachi controller family
325 * Maintainer : Matthias Rudolph
326 * Mail : matthias.rudolph@hds.com
329 .vendor = "(HITACHI|HP)",
330 .product = "OPEN-.*",
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,
338 .no_path_retry = NO_PATH_RETRY_UNDEF,
339 .minio = DEFAULT_MINIO,
341 .prio_name = DEFAULT_PRIO,
346 .getuid = DEFAULT_GETUID,
347 .features = "1 queue_if_no_path",
348 .hwhandler = DEFAULT_HWHANDLER,
349 .selector = DEFAULT_SELECTOR,
350 .pgpolicy = GROUP_BY_PRIO,
351 .pgfailback = -FAILBACK_IMMEDIATE,
352 .rr_weight = RR_WEIGHT_NONE,
353 .no_path_retry = NO_PATH_RETRY_UNDEF,
354 .minio = DEFAULT_MINIO,
356 .prio_name = PRIO_HDS,
359 * IBM controller family
361 * Maintainer : Hannes Reinecke, SuSE
362 * Mail : hare@suse.de
366 .product = "ProFibre 4000R",
367 .getuid = DEFAULT_GETUID,
368 .features = DEFAULT_FEATURES,
369 .hwhandler = DEFAULT_HWHANDLER,
370 .selector = DEFAULT_SELECTOR,
371 .pgpolicy = MULTIBUS,
372 .pgfailback = FAILBACK_UNDEF,
373 .rr_weight = RR_WEIGHT_NONE,
374 .no_path_retry = NO_PATH_RETRY_UNDEF,
375 .minio = DEFAULT_MINIO,
376 .checker_name = DIRECTIO,
377 .prio_name = DEFAULT_PRIO,
380 /* IBM FAStT 1722-600 */
382 .product = "1722-600",
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,
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 DS3200 / DS3300 / DS3400 */
415 .getuid = DEFAULT_GETUID,
416 .features = "1 queue_if_no_path",
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 = 300,
423 .minio = DEFAULT_MINIO,
424 .checker_name = RDAC,
425 .prio_name = PRIO_RDAC,
428 /* IBM DS4400 / DS4500 / FAStT700 */
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,
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 Netfinity Fibre Channel RAID Controller Unit */
495 .getuid = DEFAULT_GETUID,
496 .features = DEFAULT_FEATURES,
497 .hwhandler = "1 rdac",
498 .selector = DEFAULT_SELECTOR,
499 .pgpolicy = GROUP_BY_PRIO,
500 .pgfailback = -FAILBACK_IMMEDIATE,
501 .rr_weight = RR_WEIGHT_NONE,
502 .no_path_retry = NO_PATH_RETRY_QUEUE,
503 .minio = DEFAULT_MINIO,
504 .checker_name = RDAC,
505 .prio_name = PRIO_RDAC,
508 /* IBM DS4200 / FAStT200 */
511 .getuid = DEFAULT_GETUID,
512 .features = DEFAULT_FEATURES,
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 = "2105800",
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,
540 /* IBM ESS F20 aka Shark */
542 .product = "2105F20",
543 .getuid = DEFAULT_GETUID,
544 .features = "1 queue_if_no_path",
545 .hwhandler = DEFAULT_HWHANDLER,
546 .selector = DEFAULT_SELECTOR,
547 .pgpolicy = GROUP_BY_SERIAL,
548 .pgfailback = FAILBACK_UNDEF,
549 .rr_weight = RR_WEIGHT_NONE,
550 .no_path_retry = NO_PATH_RETRY_UNDEF,
551 .minio = DEFAULT_MINIO,
553 .prio_name = DEFAULT_PRIO,
558 .product = "1750500",
559 .getuid = DEFAULT_GETUID,
560 .features = "1 queue_if_no_path",
561 .hwhandler = DEFAULT_HWHANDLER,
562 .selector = DEFAULT_SELECTOR,
563 .pgpolicy = GROUP_BY_PRIO,
564 .pgfailback = -FAILBACK_IMMEDIATE,
565 .rr_weight = RR_WEIGHT_NONE,
566 .no_path_retry = NO_PATH_RETRY_UNDEF,
567 .minio = DEFAULT_MINIO,
569 .prio_name = PRIO_ALUA,
574 .product = "2107900",
575 .getuid = DEFAULT_GETUID,
576 .features = "1 queue_if_no_path",
577 .hwhandler = DEFAULT_HWHANDLER,
578 .selector = DEFAULT_SELECTOR,
579 .pgpolicy = MULTIBUS,
580 .pgfailback = FAILBACK_UNDEF,
581 .rr_weight = RR_WEIGHT_NONE,
582 .no_path_retry = NO_PATH_RETRY_UNDEF,
583 .minio = DEFAULT_MINIO,
585 .prio_name = DEFAULT_PRIO,
588 /* IBM SAN Volume Controller */
591 .getuid = DEFAULT_GETUID,
592 .features = "1 queue_if_no_path",
593 .hwhandler = DEFAULT_HWHANDLER,
594 .selector = DEFAULT_SELECTOR,
595 .pgpolicy = GROUP_BY_PRIO,
596 .pgfailback = -FAILBACK_IMMEDIATE,
597 .rr_weight = RR_WEIGHT_NONE,
598 .no_path_retry = NO_PATH_RETRY_UNDEF,
599 .minio = DEFAULT_MINIO,
601 .prio_name = PRIO_ALUA,
604 /* IBM S/390 ECKD DASD */
606 .product = "S/390 DASD ECKD",
607 .bl_product = "S/390.*",
608 .getuid = "/sbin/dasdinfo -u -b %n",
609 .features = "1 queue_if_no_path",
610 .hwhandler = DEFAULT_HWHANDLER,
611 .selector = DEFAULT_SELECTOR,
612 .pgpolicy = MULTIBUS,
613 .pgfailback = FAILBACK_UNDEF,
614 .rr_weight = RR_WEIGHT_NONE,
615 .no_path_retry = NO_PATH_RETRY_UNDEF,
616 .minio = DEFAULT_MINIO,
617 .checker_name = DIRECTIO,
618 .prio_name = DEFAULT_PRIO,
621 /* IBM S/390 FBA DASD */
623 .product = "S/390 DASD FBA",
624 .bl_product = "S/390.*",
625 .getuid = "/sbin/dasdinfo -u -b %n",
626 .features = "1 queue_if_no_path",
627 .hwhandler = DEFAULT_HWHANDLER,
628 .selector = DEFAULT_SELECTOR,
629 .pgpolicy = MULTIBUS,
630 .pgfailback = FAILBACK_UNDEF,
631 .rr_weight = RR_WEIGHT_NONE,
632 .no_path_retry = NO_PATH_RETRY_UNDEF,
633 .minio = DEFAULT_MINIO,
634 .checker_name = DIRECTIO,
635 .prio_name = DEFAULT_PRIO,
641 .getuid = DEFAULT_GETUID,
642 .features = "1 queue_if_no_path",
643 .hwhandler = "1 alua",
644 .selector = DEFAULT_SELECTOR,
645 .pgpolicy = GROUP_BY_PRIO,
646 .pgfailback = -FAILBACK_IMMEDIATE,
647 .rr_weight = RR_WEIGHT_NONE,
648 .no_path_retry = NO_PATH_RETRY_UNDEF,
649 .minio = DEFAULT_MINIO,
651 .prio_name = PRIO_ALUA,
654 * IBM Power Virtual SCSI Devices
656 * Maintainer : Brian King, IBM
657 * Mail : brking@linux.vnet.ibm.com
663 .getuid = DEFAULT_GETUID,
664 .features = DEFAULT_FEATURES,
665 .hwhandler = DEFAULT_HWHANDLER,
666 .selector = DEFAULT_SELECTOR,
667 .pgpolicy = MULTIBUS,
668 .pgfailback = -FAILBACK_IMMEDIATE,
669 .rr_weight = RR_WEIGHT_NONE,
670 .no_path_retry = (300 / DEFAULT_CHECKINT),
671 .minio = DEFAULT_MINIO,
672 .checker_name = DIRECTIO,
673 .prio_name = DEFAULT_PRIO,
679 .getuid = DEFAULT_GETUID,
680 .features = "1 queue_if_no_path",
681 .hwhandler = "1 rdac",
682 .selector = DEFAULT_SELECTOR,
683 .pgpolicy = GROUP_BY_PRIO,
684 .pgfailback = -FAILBACK_IMMEDIATE,
685 .rr_weight = RR_WEIGHT_NONE,
686 .minio = DEFAULT_MINIO,
687 .checker_name = RDAC,
688 .prio_name = PRIO_RDAC,
693 .product = "MD3000i",
694 .getuid = DEFAULT_GETUID,
695 .features = "1 queue_if_no_path",
696 .hwhandler = "1 rdac",
697 .selector = DEFAULT_SELECTOR,
698 .pgpolicy = GROUP_BY_PRIO,
699 .pgfailback = -FAILBACK_IMMEDIATE,
700 .rr_weight = RR_WEIGHT_NONE,
701 .minio = DEFAULT_MINIO,
702 .checker_name = RDAC,
703 .prio_name = PRIO_RDAC,
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,
724 .product = "MD32xxi",
725 .getuid = DEFAULT_GETUID,
726 .features = "2 pg_init_retries 50",
727 .hwhandler = "1 rdac",
728 .selector = DEFAULT_SELECTOR,
729 .pgpolicy = GROUP_BY_PRIO,
730 .pgfailback = -FAILBACK_IMMEDIATE,
731 .rr_weight = RR_WEIGHT_NONE,
733 .minio = DEFAULT_MINIO,
734 .checker_name = RDAC,
735 .prio_name = PRIO_RDAC,
738 * NETAPP controller family
740 * Maintainer : Dave Wysochanski
741 * Mail : davidw@netapp.com
746 .getuid = DEFAULT_GETUID,
747 .features = "1 queue_if_no_path",
748 .hwhandler = DEFAULT_HWHANDLER,
749 .selector = DEFAULT_SELECTOR,
750 .pgpolicy = GROUP_BY_PRIO,
751 .pgfailback = -FAILBACK_IMMEDIATE,
752 .rr_weight = RR_WEIGHT_NONE,
753 .no_path_retry = NO_PATH_RETRY_UNDEF,
755 .checker_name = DIRECTIO,
756 .prio_name = PRIO_NETAPP,
759 * NEXENTA/COMSTAR controller family
761 * Maintainer : Yacine Kheddache
762 * Mail : yacine@alyseo.com
766 .product = "COMSTAR",
767 .getuid = DEFAULT_GETUID,
768 .features = "1 queue_if_no_path",
769 .hwhandler = DEFAULT_HWHANDLER,
770 .selector = DEFAULT_SELECTOR,
771 .pgpolicy = GROUP_BY_SERIAL,
772 .pgfailback = -FAILBACK_IMMEDIATE,
773 .rr_weight = RR_WEIGHT_NONE,
776 .checker_name = DIRECTIO,
777 .prio_name = DEFAULT_PRIO,
780 * IBM NSeries (NETAPP) controller family
782 * Maintainer : Dave Wysochanski
783 * Mail : davidw@netapp.com
787 .product = "Nseries.*",
788 .getuid = DEFAULT_GETUID,
789 .features = "1 queue_if_no_path",
790 .hwhandler = DEFAULT_HWHANDLER,
791 .selector = DEFAULT_SELECTOR,
792 .pgpolicy = GROUP_BY_PRIO,
793 .pgfailback = -FAILBACK_IMMEDIATE,
794 .rr_weight = RR_WEIGHT_NONE,
795 .no_path_retry = NO_PATH_RETRY_UNDEF,
797 .checker_name = DIRECTIO,
798 .prio_name = PRIO_NETAPP,
801 * Pillar Data controller family
803 * Maintainer : Srinivasan Ramani
804 * Mail : sramani@pillardata.com
808 .product = "Axiom.*",
809 .getuid = DEFAULT_GETUID,
810 .features = DEFAULT_FEATURES,
811 .hwhandler = DEFAULT_HWHANDLER,
812 .selector = DEFAULT_SELECTOR,
813 .pgpolicy = GROUP_BY_PRIO,
814 .pgfailback = FAILBACK_UNDEF,
815 .rr_weight = RR_WEIGHT_NONE,
816 .no_path_retry = NO_PATH_RETRY_UNDEF,
817 .minio = DEFAULT_MINIO,
819 .prio_name = PRIO_ALUA,
824 * Maintainer : Christophe Varoqui
825 * Mail : christophe.varoqui@opensvc.com
829 .product = "TP9[13]00",
830 .getuid = DEFAULT_GETUID,
831 .features = DEFAULT_FEATURES,
832 .hwhandler = DEFAULT_HWHANDLER,
833 .selector = DEFAULT_SELECTOR,
834 .pgpolicy = MULTIBUS,
835 .pgfailback = FAILBACK_UNDEF,
836 .rr_weight = RR_WEIGHT_NONE,
837 .no_path_retry = NO_PATH_RETRY_UNDEF,
838 .minio = DEFAULT_MINIO,
839 .checker_name = DIRECTIO,
840 .prio_name = DEFAULT_PRIO,
844 .product = "TP9[45]00",
845 .getuid = DEFAULT_GETUID,
846 .features = DEFAULT_FEATURES,
847 .hwhandler = "1 rdac",
848 .selector = DEFAULT_SELECTOR,
849 .pgpolicy = GROUP_BY_PRIO,
850 .pgfailback = -FAILBACK_IMMEDIATE,
851 .rr_weight = RR_WEIGHT_NONE,
852 .no_path_retry = NO_PATH_RETRY_QUEUE,
853 .minio = DEFAULT_MINIO,
854 .checker_name = RDAC,
855 .prio_name = PRIO_RDAC,
860 .getuid = DEFAULT_GETUID,
861 .features = DEFAULT_FEATURES,
862 .hwhandler = "1 rdac",
863 .selector = DEFAULT_SELECTOR,
864 .pgpolicy = GROUP_BY_PRIO,
865 .pgfailback = -FAILBACK_IMMEDIATE,
866 .rr_weight = RR_WEIGHT_NONE,
867 .no_path_retry = NO_PATH_RETRY_QUEUE,
868 .minio = DEFAULT_MINIO,
869 .checker_name = RDAC,
870 .prio_name = PRIO_RDAC,
875 * Maintainer : Christophe Varoqui
876 * Mail : christophe.varoqui@opensvc.com
880 .product = "OPENstorage D280",
881 .getuid = DEFAULT_GETUID,
882 .features = DEFAULT_FEATURES,
883 .hwhandler = "1 rdac",
884 .selector = DEFAULT_SELECTOR,
885 .pgpolicy = GROUP_BY_PRIO,
886 .pgfailback = -FAILBACK_IMMEDIATE,
887 .rr_weight = RR_WEIGHT_NONE,
888 .no_path_retry = NO_PATH_RETRY_UNDEF,
889 .minio = DEFAULT_MINIO,
891 .prio_name = PRIO_RDAC,
896 * Maintainer : Christophe Varoqui
897 * Mail : christophe.varoqui@opensvc.com
901 .product = "(StorEdge 3510|T4)",
902 .getuid = DEFAULT_GETUID,
903 .features = DEFAULT_FEATURES,
904 .hwhandler = DEFAULT_HWHANDLER,
905 .selector = DEFAULT_SELECTOR,
906 .pgpolicy = MULTIBUS,
907 .pgfailback = FAILBACK_UNDEF,
908 .rr_weight = RR_WEIGHT_NONE,
909 .no_path_retry = NO_PATH_RETRY_UNDEF,
910 .minio = DEFAULT_MINIO,
911 .checker_name = DIRECTIO,
912 .prio_name = DEFAULT_PRIO,
917 * Maintainer : Bart Brooks, Pivot3
918 * Mail : bartb@pivot3.com
922 .product = "RAIGE VOLUME",
923 .getuid = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
924 .features = "1 queue_if_no_path",
925 .hwhandler = DEFAULT_HWHANDLER,
926 .selector = DEFAULT_SELECTOR,
927 .pgpolicy = MULTIBUS,
928 .pgfailback = FAILBACK_UNDEF,
929 .rr_weight = RR_WEIGHT_NONE,
930 .no_path_retry = NO_PATH_RETRY_UNDEF,
933 .prio_name = DEFAULT_PRIO,
937 .product = "CSM200_R",
938 .getuid = DEFAULT_GETUID,
939 .features = DEFAULT_FEATURES,
940 .hwhandler = "1 rdac",
941 .selector = DEFAULT_SELECTOR,
942 .pgpolicy = GROUP_BY_PRIO,
943 .pgfailback = -FAILBACK_IMMEDIATE,
944 .rr_weight = RR_WEIGHT_NONE,
945 .no_path_retry = NO_PATH_RETRY_QUEUE,
946 .minio = DEFAULT_MINIO,
947 .checker_name = RDAC,
948 .prio_name = PRIO_RDAC,
950 /* SUN/LSI 2510, 2540, 2530, 2540 */
953 .product = "LCSM100_[IEFS]",
954 .getuid = DEFAULT_GETUID,
955 .features = DEFAULT_FEATURES,
956 .hwhandler = "1 rdac",
957 .selector = DEFAULT_SELECTOR,
958 .pgpolicy = GROUP_BY_PRIO,
959 .pgfailback = -FAILBACK_IMMEDIATE,
960 .rr_weight = RR_WEIGHT_NONE,
961 .no_path_retry = NO_PATH_RETRY_QUEUE,
962 .minio = DEFAULT_MINIO,
963 .checker_name = RDAC,
964 .prio_name = PRIO_RDAC,
966 /* LSI Generic rdac storage */
968 .vendor = "(LSI|ENGENIO)",
969 .product = "INF-01-00",
970 .getuid = DEFAULT_GETUID,
971 .features = "2 pg_init_retries 50",
972 .hwhandler = "1 rdac",
973 .selector = DEFAULT_SELECTOR,
974 .pgpolicy = GROUP_BY_PRIO,
975 .pgfailback = -FAILBACK_IMMEDIATE,
976 .rr_weight = RR_WEIGHT_NONE,
978 .minio = DEFAULT_MINIO,
979 .checker_name = RDAC,
980 .prio_name = PRIO_RDAC,
997 .checker_name = NULL,
1003 setup_default_hwtable (vector hw)
1006 struct hwentry * hwe = default_hw;
1008 while (hwe->vendor) {
1009 r += store_hwe(hw, hwe);