8 #include "pgpolicies.h"
12 * Tuning suggestions on these parameters should go to
13 * dm-devel@redhat.com (subscribers-only, see README)
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 * Please, use the TEMPLATE below to add new hardware.
23 * Devices with a proprietary handler must also be included in
24 * the kernel side. Currently at drivers/scsi/scsi_dh.c
26 static struct hwentry default_hw[] = {
28 * Compellent Technologies/DELL
32 .product = "Compellent Vol",
34 .no_path_retry = NO_PATH_RETRY_QUEUE,
39 * Maintainer : Shyam Sundar
40 * Mail : g.shyamsundar@yahoo.co.in
44 .product = "Xserve RAID",
46 .pgfailback = FAILBACK_UNDEF,
55 .pgfailback = FAILBACK_UNDEF,
60 .features = "1 queue_if_no_path",
61 .hwhandler = "1 hp_sw",
62 .pgfailback = FAILBACK_UNDEF,
63 .checker_name = HP_SW,
64 .prio_name = PRIO_HP_SW,
70 .pgfailback = FAILBACK_UNDEF,
74 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
75 .vendor = "(COMPAQ|HP)",
76 .product = "(MSA|HSV)1.0.*",
77 .features = "1 queue_if_no_path",
78 .hwhandler = "1 hp_sw",
79 .pgfailback = FAILBACK_UNDEF,
82 .checker_name = HP_SW,
83 .prio_name = PRIO_HP_SW,
86 /* MSA 1000/1500 with new firmware */
87 .vendor = "(COMPAQ|HP)",
88 .product = "MSA VOLUME",
91 .prio_name = PRIO_ALUA,
94 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
95 .vendor = "(COMPAQ|HP)",
96 .product = "HSV1[01]1|HSV2[01]0|HSV3[046]0|HSV4[05]0",
99 .prio_name = PRIO_ALUA,
102 /* HP MSA2000 family with old firmware */
104 .product = "MSA2[02]12fc|MSA2012i",
105 .pgpolicy = MULTIBUS,
110 /* HP MSA2000 family with new firmware */
112 .product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
115 .prio_name = PRIO_ALUA,
118 /* HP MSA 1040/2040 family */
120 .product = "MSA (1|2)040 SA(N|S)",
123 .prio_name = PRIO_ALUA,
128 .product = "HSVX700",
129 .hwhandler = "1 alua",
132 .prio_name = PRIO_ALUA,
137 .product = "LOGICAL VOLUME.*",
138 .pgpolicy = MULTIBUS,
139 .pgfailback = FAILBACK_UNDEF,
143 /* HP P2000 family */
145 .product = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
148 .prio_name = PRIO_ALUA,
155 .product = "SAN DataDirector",
156 .pgpolicy = MULTIBUS,
157 .pgfailback = FAILBACK_UNDEF,
162 * Maintainer : Edward Goggin, EMC
163 * Mail : egoggin@emc.com
167 .product = "SYMMETRIX",
168 .pgpolicy = MULTIBUS,
169 .pgfailback = FAILBACK_UNDEF,
173 /* DGC CLARiiON CX/AX and EMC VNX */
175 .product = "^RAID|^DISK|^VRAID",
176 .bl_product = "LUNZ",
177 .features = "1 queue_if_no_path",
178 .hwhandler = "1 emc",
179 .no_path_retry = (300 / DEFAULT_CHECKINT),
180 .checker_name = EMC_CLARIION,
181 .prio_name = PRIO_EMC,
185 .product = "Invista",
186 .bl_product = "LUNZ",
187 .pgpolicy = MULTIBUS,
188 .pgfailback = FAILBACK_UNDEF,
193 .product = "XtremApp",
194 .selector = "queue-length 0",
195 .pgpolicy = MULTIBUS,
196 .pgfailback = FAILBACK_UNDEF,
203 .product = "CentricStor",
204 .pgpolicy = GROUP_BY_SERIAL,
205 .pgfailback = FAILBACK_UNDEF,
209 .product = "ETERNUS_DX(H|L|M|400|8000)",
210 .features = "1 queue_if_no_path",
212 .prio_name = PRIO_ALUA,
217 * Maintainer : Matthias Rudolph
218 * Mail : matthias.rudolph@hds.com
221 .vendor = "(HITACHI|HP)",
222 .product = "OPEN-.*",
223 .pgpolicy = MULTIBUS,
224 .pgfailback = FAILBACK_UNDEF,
229 .features = "1 queue_if_no_path",
230 .prio_name = PRIO_HDS,
235 * Maintainer : Hannes Reinecke, SuSE
236 * Mail : hare@suse.de
240 .product = "ProFibre 4000R",
241 .pgpolicy = MULTIBUS,
242 .pgfailback = FAILBACK_UNDEF,
245 /* IBM FAStT 1722-600 */
247 .product = "^1722-600",
248 .bl_product = "Universal Xport",
249 .features = "1 queue_if_no_path",
250 .hwhandler = "1 rdac",
251 .no_path_retry = 300,
252 .checker_name = RDAC,
253 .prio_name = PRIO_RDAC,
259 .bl_product = "Universal Xport",
260 .features = "1 queue_if_no_path",
261 .hwhandler = "1 rdac",
262 .no_path_retry = 300,
263 .checker_name = RDAC,
264 .prio_name = PRIO_RDAC,
267 /* IBM DS3200 / DS3300 / DS3400 */
270 .bl_product = "Universal Xport",
271 .features = "1 queue_if_no_path",
272 .hwhandler = "1 rdac",
273 .no_path_retry = 300,
274 .checker_name = RDAC,
275 .prio_name = PRIO_RDAC,
278 /* IBM DS4400 / DS4500 / FAStT700 */
281 .bl_product = "Universal Xport",
282 .hwhandler = "1 rdac",
283 .no_path_retry = NO_PATH_RETRY_QUEUE,
284 .checker_name = RDAC,
285 .prio_name = PRIO_RDAC,
289 .product = "^1745|^1746",
290 .bl_product = "Universal Xport",
291 .features = "2 pg_init_retries 50",
292 .hwhandler = "1 rdac",
294 .checker_name = RDAC,
295 .prio_name = PRIO_RDAC,
301 .bl_product = "Universal Xport",
302 .hwhandler = "1 rdac",
303 .no_path_retry = NO_PATH_RETRY_QUEUE,
304 .checker_name = RDAC,
305 .prio_name = PRIO_RDAC,
311 .bl_product = "Universal Xport",
312 .hwhandler = "1 rdac",
313 .no_path_retry = NO_PATH_RETRY_QUEUE,
314 .checker_name = RDAC,
315 .prio_name = PRIO_RDAC,
321 .bl_product = "Universal Xport",
322 .hwhandler = "1 rdac",
323 .no_path_retry = NO_PATH_RETRY_QUEUE,
324 .checker_name = RDAC,
325 .prio_name = PRIO_RDAC,
328 /* IBM Netfinity Fibre Channel RAID Controller Unit */
331 .bl_product = "Universal Xport",
332 .hwhandler = "1 rdac",
333 .no_path_retry = NO_PATH_RETRY_QUEUE,
334 .checker_name = RDAC,
335 .prio_name = PRIO_RDAC,
338 /* IBM DS4200 / FAStT200 */
341 .pgpolicy = GROUP_BY_SERIAL,
342 .pgfailback = FAILBACK_UNDEF,
345 /* IBM ESS F20 aka Shark */
347 .product = "^2105800",
348 .features = "1 queue_if_no_path",
349 .pgpolicy = GROUP_BY_SERIAL,
350 .pgfailback = FAILBACK_UNDEF,
353 /* IBM ESS F20 aka Shark */
355 .product = "^2105F20",
356 .features = "1 queue_if_no_path",
357 .pgpolicy = GROUP_BY_SERIAL,
358 .pgfailback = FAILBACK_UNDEF,
363 .product = "^1750500",
364 .features = "1 queue_if_no_path",
365 .prio_name = PRIO_ALUA,
370 .product = "^2107900",
371 .features = "1 queue_if_no_path",
372 .pgpolicy = MULTIBUS,
373 .pgfailback = FAILBACK_UNDEF,
376 /* IBM SAN Volume Controller */
379 .features = "1 queue_if_no_path",
380 .prio_name = PRIO_ALUA,
383 /* IBM S/390 ECKD DASD */
385 .product = "S/390 DASD ECKD",
386 .bl_product = "S/390.*",
387 .uid_attribute = "ID_UID",
388 .features = "1 queue_if_no_path",
389 .pgpolicy = MULTIBUS,
390 .pgfailback = FAILBACK_UNDEF,
393 /* IBM S/390 FBA DASD */
395 .product = "S/390 DASD FBA",
396 .bl_product = "S/390.*",
397 .uid_attribute = "ID_UID",
398 .features = "1 queue_if_no_path",
399 .pgpolicy = MULTIBUS,
400 .pgfailback = FAILBACK_UNDEF,
406 .features = "1 queue_if_no_path",
407 .hwhandler = "1 alua",
408 .prio_name = PRIO_ALUA,
413 .product = "1820N00",
414 .no_path_retry = NO_PATH_RETRY_QUEUE,
416 .prio_name = PRIO_ALUA,
419 /* IBM XIV Storage System */
421 .product = "2810XIV",
422 .features = "1 queue_if_no_path",
423 .pgpolicy = MULTIBUS,
428 * IBM Power Virtual SCSI Devices
430 * Maintainer : Brian King, IBM
431 * Mail : brking@linux.vnet.ibm.com
437 .pgpolicy = MULTIBUS,
438 .no_path_retry = (300 / DEFAULT_CHECKINT),
441 /* IBM 3303 NVDISK */
443 .product = "3303 NVDISK",
444 .no_path_retry = (300 / DEFAULT_CHECKINT),
445 .pgpolicy = FAILOVER,
451 .hwhandler = "1 alua",
452 .no_path_retry = (300 / DEFAULT_CHECKINT),
453 .prio_name = PRIO_ALUA,
462 .bl_product = "Universal Xport",
463 .features = "2 pg_init_retries 50",
464 .hwhandler = "1 rdac",
466 .checker_name = RDAC,
467 .prio_name = PRIO_RDAC,
470 /* DELL MD32xx/MD36xx */
472 .product = "MD32xx|MD36xx",
473 .bl_product = "Universal Xport",
474 .features = "2 pg_init_retries 50",
475 .hwhandler = "1 rdac",
477 .checker_name = RDAC,
478 .prio_name = PRIO_RDAC,
481 /* DELL MD34xx/MD38xx */
483 .product = "MD34xx|MD38xx",
484 .bl_product = "Universal Xport",
485 .features = "2 pg_init_retries 50",
486 .hwhandler = "1 rdac",
488 .checker_name = RDAC,
489 .prio_name = PRIO_RDAC,
492 * NETAPP ONTAP family
494 * Maintainer : Martin George
495 * Mail : marting@netapp.com
500 .features = "3 queue_if_no_path pg_init_retries 50",
501 .flush_on_last_del = FLUSH_ENABLED,
503 .dev_loss = MAX_DEV_LOSS_TMO,
504 .prio_name = PRIO_ONTAP,
509 .product = "Nseries.*",
510 .features = "1 queue_if_no_path",
512 .prio_name = PRIO_ONTAP,
517 * Maintainer : Yacine Kheddache
518 * Mail : yacine@alyseo.com
522 .product = "COMSTAR",
523 .features = "1 queue_if_no_path",
524 .pgpolicy = GROUP_BY_SERIAL,
531 * Maintainer : Srinivasan Ramani
532 * Mail : srinivas.ramani@oracle.com
536 .product = "Axiom.*",
537 .pgfailback = FAILBACK_UNDEF,
538 .prio_name = PRIO_ALUA,
545 .product = "TP9[13]00",
546 .pgpolicy = MULTIBUS,
547 .pgfailback = FAILBACK_UNDEF,
551 .product = "TP9[45]00",
552 .bl_product = "Universal Xport",
553 .hwhandler = "1 rdac",
554 .no_path_retry = NO_PATH_RETRY_QUEUE,
555 .checker_name = RDAC,
556 .prio_name = PRIO_RDAC,
561 .bl_product = "Universal Xport",
562 .features = "2 pg_init_retries 50",
563 .hwhandler = "1 rdac",
565 .checker_name = RDAC,
566 .prio_name = PRIO_RDAC,
574 .product = "DISK ARRAY",
575 .hwhandler = "1 alua",
576 .prio_name = PRIO_ALUA,
583 .product = "OPENstorage D280",
584 .bl_product = "Universal Xport",
585 .hwhandler = "1 rdac",
586 .checker_name = RDAC,
587 .prio_name = PRIO_RDAC,
594 .product = "(StorEdge 3510|T4)",
595 .pgpolicy = MULTIBUS,
596 .pgfailback = FAILBACK_UNDEF,
600 .product = "STK6580_6780",
601 .bl_product = "Universal Xport",
602 .hwhandler = "1 rdac",
603 .checker_name = RDAC,
604 .prio_name = PRIO_RDAC,
607 .vendor = "EUROLOGC",
609 .pgfailback = FAILBACK_UNDEF,
614 * Maintainer : Bart Brooks, Pivot3
615 * Mail : bartb@pivot3.com
619 .product = "RAIGE VOLUME",
620 .features = "1 queue_if_no_path",
621 .pgpolicy = MULTIBUS,
622 .pgfailback = FAILBACK_UNDEF,
627 .product = "CSM200_R",
628 .bl_product = "Universal Xport",
629 .hwhandler = "1 rdac",
630 .no_path_retry = NO_PATH_RETRY_QUEUE,
631 .checker_name = RDAC,
632 .prio_name = PRIO_RDAC,
634 /* SUN/LSI 2510, 2540, 2530, 2540 */
637 .product = "LCSM100_[IEFS]",
638 .bl_product = "Universal Xport",
639 .hwhandler = "1 rdac",
640 .no_path_retry = NO_PATH_RETRY_QUEUE,
641 .checker_name = RDAC,
642 .prio_name = PRIO_RDAC,
644 /* StorageTek 6180 */
647 .product = "SUN_6180",
648 .bl_product = "Universal Xport",
649 .hwhandler = "1 rdac",
650 .no_path_retry = NO_PATH_RETRY_QUEUE,
651 .checker_name = RDAC,
652 .prio_name = PRIO_RDAC,
654 /* LSI/Engenio/NetApp RDAC
656 * Maintainer : Sean Stewart
657 * Mail : sean.stewart@netapp.com
660 .vendor = "(NETAPP|LSI|ENGENIO)",
661 .product = "INF-01-00",
662 .bl_product = "Universal Xport",
663 .features = "2 pg_init_retries 50",
664 .hwhandler = "1 rdac",
666 .checker_name = RDAC,
667 .prio_name = PRIO_RDAC,
671 .product = "FLEXLINE 380",
672 .bl_product = "Universal Xport",
673 .hwhandler = "1 rdac",
674 .no_path_retry = NO_PATH_RETRY_QUEUE,
675 .checker_name = RDAC,
676 .prio_name = PRIO_RDAC,
680 .product = "Multi-Flex",
681 .hwhandler = "1 alua",
682 .no_path_retry = NO_PATH_RETRY_QUEUE,
683 .prio_name = PRIO_ALUA,
686 .vendor = "(LIO-ORG|SUSE)",
688 .hwhandler = "1 alua",
691 .prio_name = PRIO_ALUA,
694 .vendor = "DataCore",
695 .product = "SANmelody",
696 .no_path_retry = NO_PATH_RETRY_QUEUE,
697 .prio_name = PRIO_ALUA,
700 .vendor = "DataCore",
701 .product = "Virtual Disk",
702 .no_path_retry = NO_PATH_RETRY_QUEUE,
703 .prio_name = PRIO_ALUA,
707 .product = "FlashArray",
708 .selector = "queue-length 0",
709 .pgpolicy = MULTIBUS,
717 .pgpolicy = MULTIBUS,
724 .product = "CONCERTO ARRAY",
725 .selector = "round-robin 0",
726 .pgpolicy = MULTIBUS,
727 .prio_name = PRIO_ALUA,
729 .rr_weight = RR_WEIGHT_PRIO,
730 .features = "1 queue_if_no_path",
731 .no_path_retry = 300,
737 .vendor = "NFINIDAT",
738 .product = "InfiniBox.*",
739 .prio_name = PRIO_ALUA,
740 .selector = "round-robin 0",
742 .rr_weight = RR_WEIGHT_PRIO,
743 .no_path_retry = NO_PATH_RETRY_FAIL,
744 .flush_on_last_del = FLUSH_ENABLED,
752 .product = "ZEBI-(FC|ISCSI)|INTELLIFLASH",
753 .hwhandler = "1 alua",
754 .selector = "round-robin 0",
757 .prio_name = PRIO_ALUA,
763 * Copy this TEMPLATE to add new hardware.
765 * Keep only mandatory and modified attributes.
766 * Standard attributes must be removed.
774 .vendor = "VENDOR", (Mandatory)
775 .product = "PRODUCT", (Mandatory)
776 .revision = "REVISION",
777 .bl_product = "BL_PRODUCT",
778 .pgpolicy = GROUP_BY_PRIO,
779 .uid_attribute = "ID_SERIAL",
780 .selector = "service-time 0",
784 .prio_name = "const",
786 .pgfailback = -FAILBACK_IMMEDIATE,
787 .rr_weight = RR_WEIGHT_NONE,
788 .no_path_retry = NO_PATH_RETRY_UNDEF,
791 .flush_on_last_del = FLUSH_DISABLED,
794 .retain_hwhandler = RETAIN_HWHANDLER_ON,
795 .detect_prio = DETECT_PRIO_ON,
796 .deferred_remove = DEFERRED_REMOVE_OFF,
797 .delay_watch_checks = DELAY_CHECKS_OFF,
798 .delay_wait_checks = DELAY_CHECKS_OFF,
816 .checker_name = NULL,
823 setup_default_hwtable (vector hw)
826 struct hwentry * hwe = default_hw;
828 while (hwe->vendor) {
829 r += store_hwe(hw, hwe);