10 #include "pgpolicies.h"
13 * Tuning suggestions on these parameters should go to
16 * You are welcome to claim maintainership over a controller
17 * family. Please mail the currently enlisted maintainer and
18 * the upstream package maintainer.
20 static struct hwentry default_hw[] = {
22 * Apple controller family
24 * Maintainer : Shyam Sundar
25 * Mail : g.shyamsundar@yahoo.co.in
29 .product = "Xserve RAID ",
30 .getuid = DEFAULT_GETUID,
31 .features = DEFAULT_FEATURES,
32 .hwhandler = DEFAULT_HWHANDLER,
33 .selector = DEFAULT_SELECTOR,
35 .pgfailback = FAILBACK_UNDEF,
36 .rr_weight = RR_WEIGHT_NONE,
37 .no_path_retry = NO_PATH_RETRY_UNDEF,
38 .minio = DEFAULT_MINIO,
39 .checker_name = DEFAULT_CHECKER,
40 .prio_name = DEFAULT_PRIO,
43 * StorageWorks controller family
45 * Maintainer : Christophe Varoqui
46 * Mail : christophe.varoqui@free.fr
51 .getuid = DEFAULT_GETUID,
52 .features = DEFAULT_FEATURES,
53 .hwhandler = DEFAULT_HWHANDLER,
54 .selector = DEFAULT_SELECTOR,
56 .pgfailback = FAILBACK_UNDEF,
57 .rr_weight = RR_WEIGHT_NONE,
58 .no_path_retry = NO_PATH_RETRY_UNDEF,
59 .minio = DEFAULT_MINIO,
60 .checker_name = DEFAULT_CHECKER,
61 .prio_name = DEFAULT_PRIO,
66 .getuid = DEFAULT_GETUID,
67 .features = "1 queue_if_no_path",
68 .hwhandler = "1 hp-sw",
69 .selector = DEFAULT_SELECTOR,
70 .pgpolicy = GROUP_BY_PRIO,
71 .pgfailback = FAILBACK_UNDEF,
72 .rr_weight = RR_WEIGHT_NONE,
73 .no_path_retry = NO_PATH_RETRY_UNDEF,
74 .minio = DEFAULT_MINIO,
75 .checker_name = HP_SW,
76 .prio_name = PRIO_HP_SW,
81 .getuid = DEFAULT_GETUID,
82 .features = DEFAULT_FEATURES,
83 .hwhandler = DEFAULT_HWHANDLER,
84 .selector = DEFAULT_SELECTOR,
86 .pgfailback = FAILBACK_UNDEF,
87 .rr_weight = RR_WEIGHT_NONE,
88 .no_path_retry = NO_PATH_RETRY_UNDEF,
89 .minio = DEFAULT_MINIO,
90 .checker_name = DIRECTIO,
91 .prio_name = DEFAULT_PRIO,
94 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
95 .vendor = "(COMPAQ|HP)",
96 .product = "(MSA|HSV)1.0.*",
97 .getuid = DEFAULT_GETUID,
98 .features = "1 queue_if_no_path",
99 .hwhandler = "1 hp-sw",
100 .selector = DEFAULT_SELECTOR,
101 .pgpolicy = GROUP_BY_PRIO,
102 .pgfailback = FAILBACK_UNDEF,
103 .rr_weight = RR_WEIGHT_NONE,
104 .no_path_retry = NO_PATH_RETRY_UNDEF,
105 .minio = DEFAULT_MINIO,
106 .checker_name = HP_SW,
107 .prio_name = PRIO_HP_SW,
110 /* MSA 1000/1500 with new firmware */
112 .product = "MSA VOLUME",
113 .getuid = DEFAULT_GETUID,
114 .features = DEFAULT_FEATURES,
115 .hwhandler = DEFAULT_HWHANDLER,
116 .selector = DEFAULT_SELECTOR,
117 .pgpolicy = GROUP_BY_PRIO,
118 .pgfailback = -FAILBACK_IMMEDIATE,
119 .rr_weight = RR_WEIGHT_NONE,
120 .no_path_retry = NO_PATH_RETRY_UNDEF,
121 .minio = DEFAULT_MINIO,
123 .prio_name = PRIO_ALUA,
127 .product = "MSA2000s*",
128 .getuid = "/sbin/cciss_id %n",
129 .features = DEFAULT_FEATURES,
130 .hwhandler = DEFAULT_HWHANDLER,
131 .selector = DEFAULT_SELECTOR,
132 .pgpolicy = MULTIBUS,
133 .pgfailback = FAILBACK_UNDEF,
134 .rr_weight = RR_WEIGHT_NONE,
136 .minio = DEFAULT_MINIO,
138 .prio_name = DEFAULT_PRIO,
141 /* EVA 3000/5000 with new firmware */
142 .vendor = "(COMPAQ|HP)",
143 .product = "(MSA|HSV)1.1.*",
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,
151 .no_path_retry = NO_PATH_RETRY_UNDEF,
152 .minio = DEFAULT_MINIO,
154 .prio_name = PRIO_ALUA,
157 /* EVA 4000/6000/8000 */
160 .getuid = DEFAULT_GETUID,
161 .features = DEFAULT_FEATURES,
162 .hwhandler = DEFAULT_HWHANDLER,
163 .selector = DEFAULT_SELECTOR,
164 .pgpolicy = GROUP_BY_PRIO,
165 .pgfailback = -FAILBACK_IMMEDIATE,
166 .rr_weight = RR_WEIGHT_NONE,
167 .no_path_retry = NO_PATH_RETRY_UNDEF,
168 .minio = DEFAULT_MINIO,
170 .prio_name = PRIO_ALUA,
175 .product = "LOGICAL VOLUME.*",
176 .getuid = "/lib/udev/scsi_id -n -g -u -s /block/%n",
177 .features = DEFAULT_FEATURES,
178 .hwhandler = DEFAULT_HWHANDLER,
179 .selector = DEFAULT_SELECTOR,
180 .pgpolicy = MULTIBUS,
181 .pgfailback = FAILBACK_UNDEF,
182 .rr_weight = RR_WEIGHT_NONE,
183 .no_path_retry = NO_PATH_RETRY_UNDEF,
184 .minio = DEFAULT_MINIO,
186 .prio_name = DEFAULT_PRIO,
189 * DDN controller family
191 * Maintainer : Christophe Varoqui
192 * Mail : christophe.varoqui@free.fr
196 .product = "SAN DataDirector",
197 .getuid = DEFAULT_GETUID,
198 .features = DEFAULT_FEATURES,
199 .hwhandler = DEFAULT_HWHANDLER,
200 .selector = DEFAULT_SELECTOR,
201 .pgpolicy = MULTIBUS,
202 .pgfailback = FAILBACK_UNDEF,
203 .rr_weight = RR_WEIGHT_NONE,
204 .no_path_retry = NO_PATH_RETRY_UNDEF,
205 .minio = DEFAULT_MINIO,
206 .checker_name = DIRECTIO,
207 .prio_name = DEFAULT_PRIO,
210 * EMC / Clariion controller family
212 * Maintainer : Edward Goggin, EMC
213 * Mail : egoggin@emc.com
217 .product = "SYMMETRIX",
218 .getuid = "/lib/udev/scsi_id -g -u -ppre-spc3-83 -s /block/%n",
219 .features = DEFAULT_FEATURES,
220 .hwhandler = DEFAULT_HWHANDLER,
221 .selector = DEFAULT_SELECTOR,
222 .pgpolicy = MULTIBUS,
223 .pgfailback = FAILBACK_UNDEF,
224 .rr_weight = RR_WEIGHT_NONE,
225 .no_path_retry = NO_PATH_RETRY_UNDEF,
226 .minio = DEFAULT_MINIO,
227 .checker_name = DIRECTIO,
228 .prio_name = DEFAULT_PRIO,
233 .bl_product = "LUNZ",
234 .getuid = DEFAULT_GETUID,
235 .features = "1 queue_if_no_path",
236 .hwhandler = "1 emc",
237 .selector = DEFAULT_SELECTOR,
238 .pgpolicy = GROUP_BY_PRIO,
239 .pgfailback = -FAILBACK_IMMEDIATE,
240 .rr_weight = RR_WEIGHT_NONE,
241 .no_path_retry = (300 / DEFAULT_CHECKINT),
242 .minio = DEFAULT_MINIO,
243 .checker_name = EMC_CLARIION,
244 .prio_name = PRIO_EMC,
247 * Fujitsu controller family
249 * Maintainer : Christophe Varoqui
250 * Mail : christophe.varoqui@free.fr
254 .product = "CentricStor",
255 .getuid = DEFAULT_GETUID,
256 .features = DEFAULT_FEATURES,
257 .hwhandler = DEFAULT_HWHANDLER,
258 .selector = DEFAULT_SELECTOR,
259 .pgpolicy = GROUP_BY_SERIAL,
260 .pgfailback = FAILBACK_UNDEF,
261 .rr_weight = RR_WEIGHT_NONE,
262 .no_path_retry = NO_PATH_RETRY_UNDEF,
263 .minio = DEFAULT_MINIO,
264 .checker_name = DIRECTIO,
265 .prio_name = DEFAULT_PRIO,
268 * Hitachi controller family
270 * Maintainer : Matthias Rudolph
271 * Mail : matthias.rudolph@hds.com
274 .vendor = "(HITACHI|HP)",
275 .product = "OPEN-.*",
276 .getuid = DEFAULT_GETUID,
277 .features = "1 queue_if_no_path",
278 .hwhandler = DEFAULT_HWHANDLER,
279 .selector = DEFAULT_SELECTOR,
280 .pgpolicy = MULTIBUS,
281 .pgfailback = FAILBACK_UNDEF,
282 .rr_weight = RR_WEIGHT_NONE,
283 .no_path_retry = NO_PATH_RETRY_UNDEF,
284 .minio = DEFAULT_MINIO,
286 .prio_name = DEFAULT_PRIO,
291 .getuid = DEFAULT_GETUID,
292 .features = "1 queue_if_no_path",
293 .hwhandler = DEFAULT_HWHANDLER,
294 .selector = DEFAULT_SELECTOR,
295 .pgpolicy = GROUP_BY_PRIO,
296 .pgfailback = -FAILBACK_IMMEDIATE,
297 .rr_weight = RR_WEIGHT_NONE,
298 .no_path_retry = NO_PATH_RETRY_UNDEF,
299 .minio = DEFAULT_MINIO,
301 .prio_name = PRIO_HDS,
304 * IBM controller family
306 * Maintainer : Hannes Reinecke, SuSE
307 * Mail : hare@suse.de
311 .product = "ProFibre 4000R",
312 .getuid = DEFAULT_GETUID,
313 .features = DEFAULT_FEATURES,
314 .hwhandler = DEFAULT_HWHANDLER,
315 .selector = DEFAULT_SELECTOR,
316 .pgpolicy = MULTIBUS,
317 .pgfailback = FAILBACK_UNDEF,
318 .rr_weight = RR_WEIGHT_NONE,
319 .no_path_retry = NO_PATH_RETRY_UNDEF,
320 .minio = DEFAULT_MINIO,
321 .checker_name = DIRECTIO,
322 .prio_name = DEFAULT_PRIO,
325 /* IBM DS4100 / FAStT100 */
328 .getuid = DEFAULT_GETUID,
329 .features = DEFAULT_FEATURES,
330 .hwhandler = DEFAULT_HWHANDLER,
331 .selector = DEFAULT_SELECTOR,
332 .pgpolicy = GROUP_BY_PRIO,
333 .pgfailback = -FAILBACK_IMMEDIATE,
334 .rr_weight = RR_WEIGHT_NONE,
335 .no_path_retry = NO_PATH_RETRY_UNDEF,
336 .minio = DEFAULT_MINIO,
338 .prio_name = PRIO_RDAC,
341 /* IBM Netfinity Fibre Channel RAID Controller Unit */
344 .getuid = DEFAULT_GETUID,
345 .features = DEFAULT_FEATURES,
346 .hwhandler = DEFAULT_HWHANDLER,
347 .selector = DEFAULT_SELECTOR,
348 .pgpolicy = GROUP_BY_PRIO,
349 .pgfailback = -FAILBACK_IMMEDIATE,
350 .rr_weight = RR_WEIGHT_NONE,
351 .no_path_retry = NO_PATH_RETRY_UNDEF,
352 .minio = DEFAULT_MINIO,
354 .prio_name = PRIO_RDAC,
357 /* IBM DS4200 / FAStT200 */
360 .getuid = DEFAULT_GETUID,
361 .features = DEFAULT_FEATURES,
362 .hwhandler = DEFAULT_HWHANDLER,
363 .selector = DEFAULT_SELECTOR,
364 .pgpolicy = GROUP_BY_SERIAL,
365 .pgfailback = FAILBACK_UNDEF,
366 .rr_weight = RR_WEIGHT_NONE,
367 .no_path_retry = NO_PATH_RETRY_UNDEF,
368 .minio = DEFAULT_MINIO,
370 .prio_name = DEFAULT_PRIO,
373 /* IBM ESS F20 aka Shark */
375 .product = "2105(800|F20)",
376 .getuid = DEFAULT_GETUID,
377 .features = "1 queue_if_no_path",
378 .hwhandler = DEFAULT_HWHANDLER,
379 .selector = DEFAULT_SELECTOR,
380 .pgpolicy = GROUP_BY_SERIAL,
381 .pgfailback = FAILBACK_UNDEF,
382 .rr_weight = RR_WEIGHT_NONE,
383 .no_path_retry = NO_PATH_RETRY_UNDEF,
384 .minio = DEFAULT_MINIO,
386 .prio_name = DEFAULT_PRIO,
391 .product = "1750500",
392 .getuid = DEFAULT_GETUID,
393 .features = "1 queue_if_no_path",
394 .hwhandler = DEFAULT_HWHANDLER,
395 .selector = DEFAULT_SELECTOR,
396 .pgpolicy = GROUP_BY_PRIO,
397 .pgfailback = -FAILBACK_IMMEDIATE,
398 .rr_weight = RR_WEIGHT_NONE,
399 .no_path_retry = NO_PATH_RETRY_UNDEF,
400 .minio = DEFAULT_MINIO,
402 .prio_name = PRIO_ALUA,
407 .product = "2107900",
408 .getuid = DEFAULT_GETUID,
409 .features = "1 queue_if_no_path",
410 .hwhandler = DEFAULT_HWHANDLER,
411 .selector = DEFAULT_SELECTOR,
412 .pgpolicy = MULTIBUS,
413 .pgfailback = FAILBACK_UNDEF,
414 .rr_weight = RR_WEIGHT_NONE,
415 .no_path_retry = NO_PATH_RETRY_UNDEF,
416 .minio = DEFAULT_MINIO,
418 .prio_name = DEFAULT_PRIO,
421 /* IBM SAN Volume Controller */
424 .getuid = DEFAULT_GETUID,
425 .features = "1 queue_if_no_path",
426 .hwhandler = DEFAULT_HWHANDLER,
427 .selector = DEFAULT_SELECTOR,
428 .pgpolicy = GROUP_BY_PRIO,
429 .pgfailback = -FAILBACK_IMMEDIATE,
430 .rr_weight = RR_WEIGHT_NONE,
431 .no_path_retry = NO_PATH_RETRY_UNDEF,
432 .minio = DEFAULT_MINIO,
434 .prio_name = PRIO_ALUA,
437 /* IBM S/390 ECKD DASD */
439 .product = "S/390 DASD ECKD",
440 .bl_product = "S/390.*",
441 .getuid = "/sbin/dasdinfo -u -b %n",
442 .features = "1 queue_if_no_path",
443 .hwhandler = DEFAULT_HWHANDLER,
444 .selector = DEFAULT_SELECTOR,
445 .pgpolicy = MULTIBUS,
446 .pgfailback = FAILBACK_UNDEF,
447 .rr_weight = RR_WEIGHT_NONE,
448 .no_path_retry = NO_PATH_RETRY_UNDEF,
449 .minio = DEFAULT_MINIO,
450 .checker_name = DIRECTIO,
451 .prio_name = DEFAULT_PRIO,
454 * NETAPP controller family
456 * Maintainer : Dave Wysochanski
457 * Mail : davidw@netapp.com
462 .getuid = DEFAULT_GETUID,
463 .features = "1 queue_if_no_path",
464 .hwhandler = DEFAULT_HWHANDLER,
465 .selector = DEFAULT_SELECTOR,
466 .pgpolicy = GROUP_BY_PRIO,
467 .pgfailback = -FAILBACK_IMMEDIATE,
468 .rr_weight = RR_WEIGHT_NONE,
469 .no_path_retry = NO_PATH_RETRY_UNDEF,
471 .checker_name = DIRECTIO,
472 .prio_name = PRIO_NETAPP,
475 * IBM NSeries (NETAPP) controller family
477 * Maintainer : Dave Wysochanski
478 * Mail : davidw@netapp.com
482 .product = "Nseries.*",
483 .getuid = DEFAULT_GETUID,
484 .features = "1 queue_if_no_path",
485 .hwhandler = DEFAULT_HWHANDLER,
486 .selector = DEFAULT_SELECTOR,
487 .pgpolicy = GROUP_BY_PRIO,
488 .pgfailback = -FAILBACK_IMMEDIATE,
489 .rr_weight = RR_WEIGHT_NONE,
490 .no_path_retry = NO_PATH_RETRY_UNDEF,
492 .checker_name = DIRECTIO,
493 .prio_name = PRIO_NETAPP,
496 * Pillar Data controller family
498 * Maintainer : Srinivasan Ramani
499 * Mail : sramani@pillardata.com
503 .product = "Axiom.*",
504 .getuid = DEFAULT_GETUID,
505 .features = DEFAULT_FEATURES,
506 .hwhandler = DEFAULT_HWHANDLER,
507 .selector = DEFAULT_SELECTOR,
508 .pgpolicy = GROUP_BY_PRIO,
509 .pgfailback = FAILBACK_UNDEF,
510 .rr_weight = RR_WEIGHT_NONE,
511 .no_path_retry = NO_PATH_RETRY_UNDEF,
512 .minio = DEFAULT_MINIO,
514 .prio_name = PRIO_ALUA,
519 * Maintainer : Christophe Varoqui
520 * Mail : christophe.varoqui@free.fr
524 .product = "TP9[13]00",
525 .getuid = DEFAULT_GETUID,
526 .features = DEFAULT_FEATURES,
527 .hwhandler = DEFAULT_HWHANDLER,
528 .selector = DEFAULT_SELECTOR,
529 .pgpolicy = MULTIBUS,
530 .pgfailback = FAILBACK_UNDEF,
531 .rr_weight = RR_WEIGHT_NONE,
532 .no_path_retry = NO_PATH_RETRY_UNDEF,
533 .minio = DEFAULT_MINIO,
534 .checker_name = DIRECTIO,
535 .prio_name = DEFAULT_PRIO,
539 .product = "TP9[45]00",
540 .getuid = DEFAULT_GETUID,
541 .features = DEFAULT_FEATURES,
542 .hwhandler = DEFAULT_HWHANDLER,
543 .selector = DEFAULT_SELECTOR,
544 .pgpolicy = GROUP_BY_PRIO,
545 .pgfailback = -FAILBACK_IMMEDIATE,
546 .rr_weight = RR_WEIGHT_NONE,
547 .no_path_retry = NO_PATH_RETRY_QUEUE,
548 .minio = DEFAULT_MINIO,
549 .checker_name = RDAC,
550 .prio_name = PRIO_RDAC,
555 .getuid = DEFAULT_GETUID,
556 .features = DEFAULT_FEATURES,
557 .hwhandler = DEFAULT_HWHANDLER,
558 .selector = DEFAULT_SELECTOR,
559 .pgpolicy = GROUP_BY_PRIO,
560 .pgfailback = -FAILBACK_IMMEDIATE,
561 .rr_weight = RR_WEIGHT_NONE,
562 .no_path_retry = NO_PATH_RETRY_QUEUE,
563 .minio = DEFAULT_MINIO,
564 .checker_name = RDAC,
565 .prio_name = PRIO_RDAC,
570 * Maintainer : Christophe Varoqui
571 * Mail : christophe.varoqui@free.fr
575 .product = "OPENstorage D280",
576 .getuid = DEFAULT_GETUID,
577 .features = DEFAULT_FEATURES,
578 .hwhandler = DEFAULT_HWHANDLER,
579 .selector = DEFAULT_SELECTOR,
580 .pgpolicy = GROUP_BY_PRIO,
581 .pgfailback = -FAILBACK_IMMEDIATE,
582 .rr_weight = RR_WEIGHT_NONE,
583 .no_path_retry = NO_PATH_RETRY_UNDEF,
584 .minio = DEFAULT_MINIO,
586 .prio_name = PRIO_RDAC,
591 * Maintainer : Christophe Varoqui
592 * Mail : christophe.varoqui@free.fr
596 .product = "(StorEdge 3510|T4)",
597 .getuid = DEFAULT_GETUID,
598 .features = DEFAULT_FEATURES,
599 .hwhandler = DEFAULT_HWHANDLER,
600 .selector = DEFAULT_SELECTOR,
601 .pgpolicy = MULTIBUS,
602 .pgfailback = FAILBACK_UNDEF,
603 .rr_weight = RR_WEIGHT_NONE,
604 .no_path_retry = NO_PATH_RETRY_UNDEF,
605 .minio = DEFAULT_MINIO,
606 .checker_name = DIRECTIO,
607 .prio_name = DEFAULT_PRIO,
612 * Maintainer : Bart Brooks, Pivot3
613 * Mail : bartb@pivot3.com
617 .product = "RAIGE VOLUME",
618 .getuid = "/sbin/scsi_id -p 0x80 -g -u -s /block/%n",
619 .features = "1 queue_if_no_path",
620 .hwhandler = DEFAULT_HWHANDLER,
621 .selector = DEFAULT_SELECTOR,
622 .pgpolicy = MULTIBUS,
623 .pgfailback = FAILBACK_UNDEF,
624 .rr_weight = RR_WEIGHT_NONE,
625 .no_path_retry = NO_PATH_RETRY_UNDEF,
628 .prio_name = DEFAULT_PRIO,
645 .checker_name = NULL,
651 setup_default_hwtable (vector hw)
654 struct hwentry * hwe = default_hw;
656 while (hwe->vendor) {
657 hwe->checker = checker_lookup(hwe->checker_name);
658 hwe->prio = prio_lookup(hwe->prio_name);
659 r += store_hwe(hw, hwe);