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 * Apple controller family
23 * Maintainer : Shyam Sundar
24 * Mail : g.shyamsundar@yahoo.co.in
28 .product = "Xserve RAID ",
29 .getuid = DEFAULT_GETUID,
30 .features = DEFAULT_FEATURES,
31 .hwhandler = DEFAULT_HWHANDLER,
32 .selector = DEFAULT_SELECTOR,
34 .pgfailback = FAILBACK_UNDEF,
35 .rr_weight = RR_WEIGHT_NONE,
36 .no_path_retry = NO_PATH_RETRY_UNDEF,
37 .minio = DEFAULT_MINIO,
38 .checker_name = DEFAULT_CHECKER,
39 .prio_name = DEFAULT_PRIO,
42 * StorageWorks controller family
44 * Maintainer : Christophe Varoqui
45 * Mail : christophe.varoqui@free.fr
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,
65 .getuid = DEFAULT_GETUID,
66 .features = "1 queue_if_no_path",
67 .hwhandler = "1 hp-sw",
68 .selector = DEFAULT_SELECTOR,
69 .pgpolicy = GROUP_BY_PRIO,
70 .pgfailback = FAILBACK_UNDEF,
71 .rr_weight = RR_WEIGHT_NONE,
72 .no_path_retry = NO_PATH_RETRY_UNDEF,
73 .minio = DEFAULT_MINIO,
74 .checker_name = HP_SW,
75 .prio_name = PRIO_HP_SW,
80 .getuid = DEFAULT_GETUID,
81 .features = DEFAULT_FEATURES,
82 .hwhandler = DEFAULT_HWHANDLER,
83 .selector = DEFAULT_SELECTOR,
85 .pgfailback = FAILBACK_UNDEF,
86 .rr_weight = RR_WEIGHT_NONE,
87 .no_path_retry = NO_PATH_RETRY_UNDEF,
88 .minio = DEFAULT_MINIO,
89 .checker_name = DIRECTIO,
90 .prio_name = DEFAULT_PRIO,
93 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
94 .vendor = "(COMPAQ|HP)",
95 .product = "(MSA|HSV)1.0.*",
96 .getuid = DEFAULT_GETUID,
97 .features = "1 queue_if_no_path",
98 .hwhandler = "1 hp-sw",
99 .selector = DEFAULT_SELECTOR,
100 .pgpolicy = GROUP_BY_PRIO,
101 .pgfailback = FAILBACK_UNDEF,
102 .rr_weight = RR_WEIGHT_NONE,
103 .no_path_retry = NO_PATH_RETRY_UNDEF,
104 .minio = DEFAULT_MINIO,
105 .checker_name = HP_SW,
106 .prio_name = PRIO_HP_SW,
109 /* MSA 1000/1500 with new firmware */
111 .product = "MSA VOLUME",
112 .getuid = DEFAULT_GETUID,
113 .features = DEFAULT_FEATURES,
114 .hwhandler = DEFAULT_HWHANDLER,
115 .selector = DEFAULT_SELECTOR,
116 .pgpolicy = GROUP_BY_PRIO,
117 .pgfailback = -FAILBACK_IMMEDIATE,
118 .rr_weight = RR_WEIGHT_NONE,
119 .no_path_retry = NO_PATH_RETRY_UNDEF,
120 .minio = DEFAULT_MINIO,
122 .prio_name = PRIO_ALUA,
126 .product = "MSA2000s*",
127 .getuid = "/sbin/cciss_id %n",
128 .features = DEFAULT_FEATURES,
129 .hwhandler = DEFAULT_HWHANDLER,
130 .selector = DEFAULT_SELECTOR,
131 .pgpolicy = MULTIBUS,
132 .pgfailback = FAILBACK_UNDEF,
133 .rr_weight = RR_WEIGHT_NONE,
135 .minio = DEFAULT_MINIO,
137 .prio_name = DEFAULT_PRIO,
140 /* EVA 3000/5000 with new firmware */
141 .vendor = "(COMPAQ|HP)",
142 .product = "(MSA|HSV)1.1.*",
143 .getuid = DEFAULT_GETUID,
144 .features = DEFAULT_FEATURES,
145 .hwhandler = DEFAULT_HWHANDLER,
146 .selector = DEFAULT_SELECTOR,
147 .pgpolicy = GROUP_BY_PRIO,
148 .pgfailback = -FAILBACK_IMMEDIATE,
149 .rr_weight = RR_WEIGHT_NONE,
150 .no_path_retry = NO_PATH_RETRY_UNDEF,
151 .minio = DEFAULT_MINIO,
153 .prio_name = PRIO_ALUA,
156 /* EVA 4000/6000/8000 */
159 .getuid = DEFAULT_GETUID,
160 .features = DEFAULT_FEATURES,
161 .hwhandler = DEFAULT_HWHANDLER,
162 .selector = DEFAULT_SELECTOR,
163 .pgpolicy = GROUP_BY_PRIO,
164 .pgfailback = -FAILBACK_IMMEDIATE,
165 .rr_weight = RR_WEIGHT_NONE,
166 .no_path_retry = NO_PATH_RETRY_UNDEF,
167 .minio = DEFAULT_MINIO,
169 .prio_name = PRIO_ALUA,
174 .product = "LOGICAL VOLUME.*",
175 .getuid = "/lib/udev/scsi_id -n -g -u -s /block/%n",
176 .features = DEFAULT_FEATURES,
177 .hwhandler = DEFAULT_HWHANDLER,
178 .selector = DEFAULT_SELECTOR,
179 .pgpolicy = MULTIBUS,
180 .pgfailback = FAILBACK_UNDEF,
181 .rr_weight = RR_WEIGHT_NONE,
182 .no_path_retry = NO_PATH_RETRY_UNDEF,
183 .minio = DEFAULT_MINIO,
185 .prio_name = DEFAULT_PRIO,
188 * DDN controller family
190 * Maintainer : Christophe Varoqui
191 * Mail : christophe.varoqui@free.fr
195 .product = "SAN DataDirector",
196 .getuid = DEFAULT_GETUID,
197 .features = DEFAULT_FEATURES,
198 .hwhandler = DEFAULT_HWHANDLER,
199 .selector = DEFAULT_SELECTOR,
200 .pgpolicy = MULTIBUS,
201 .pgfailback = FAILBACK_UNDEF,
202 .rr_weight = RR_WEIGHT_NONE,
203 .no_path_retry = NO_PATH_RETRY_UNDEF,
204 .minio = DEFAULT_MINIO,
205 .checker_name = DIRECTIO,
206 .prio_name = DEFAULT_PRIO,
209 * EMC / Clariion controller family
211 * Maintainer : Edward Goggin, EMC
212 * Mail : egoggin@emc.com
216 .product = "SYMMETRIX",
217 .getuid = "/lib/udev/scsi_id -g -u -ppre-spc3-83 -s /block/%n",
218 .features = DEFAULT_FEATURES,
219 .hwhandler = DEFAULT_HWHANDLER,
220 .selector = DEFAULT_SELECTOR,
221 .pgpolicy = MULTIBUS,
222 .pgfailback = FAILBACK_UNDEF,
223 .rr_weight = RR_WEIGHT_NONE,
224 .no_path_retry = NO_PATH_RETRY_UNDEF,
225 .minio = DEFAULT_MINIO,
226 .checker_name = DIRECTIO,
227 .prio_name = DEFAULT_PRIO,
232 .bl_product = "LUNZ",
233 .getuid = DEFAULT_GETUID,
234 .features = "1 queue_if_no_path",
235 .hwhandler = "1 emc",
236 .selector = DEFAULT_SELECTOR,
237 .pgpolicy = GROUP_BY_PRIO,
238 .pgfailback = -FAILBACK_IMMEDIATE,
239 .rr_weight = RR_WEIGHT_NONE,
240 .no_path_retry = (300 / DEFAULT_CHECKINT),
241 .minio = DEFAULT_MINIO,
242 .checker_name = EMC_CLARIION,
243 .prio_name = PRIO_EMC,
246 * Fujitsu controller family
248 * Maintainer : Christophe Varoqui
249 * Mail : christophe.varoqui@free.fr
253 .product = "CentricStor",
254 .getuid = DEFAULT_GETUID,
255 .features = DEFAULT_FEATURES,
256 .hwhandler = DEFAULT_HWHANDLER,
257 .selector = DEFAULT_SELECTOR,
258 .pgpolicy = GROUP_BY_SERIAL,
259 .pgfailback = FAILBACK_UNDEF,
260 .rr_weight = RR_WEIGHT_NONE,
261 .no_path_retry = NO_PATH_RETRY_UNDEF,
262 .minio = DEFAULT_MINIO,
263 .checker_name = DIRECTIO,
264 .prio_name = DEFAULT_PRIO,
267 * Hitachi controller family
269 * Maintainer : Matthias Rudolph
270 * Mail : matthias.rudolph@hds.com
273 .vendor = "(HITACHI|HP)",
274 .product = "OPEN-.*",
275 .getuid = DEFAULT_GETUID,
276 .features = "1 queue_if_no_path",
277 .hwhandler = DEFAULT_HWHANDLER,
278 .selector = DEFAULT_SELECTOR,
279 .pgpolicy = MULTIBUS,
280 .pgfailback = FAILBACK_UNDEF,
281 .rr_weight = RR_WEIGHT_NONE,
282 .no_path_retry = NO_PATH_RETRY_UNDEF,
283 .minio = DEFAULT_MINIO,
285 .prio_name = DEFAULT_PRIO,
290 .getuid = DEFAULT_GETUID,
291 .features = "1 queue_if_no_path",
292 .hwhandler = DEFAULT_HWHANDLER,
293 .selector = DEFAULT_SELECTOR,
294 .pgpolicy = GROUP_BY_PRIO,
295 .pgfailback = -FAILBACK_IMMEDIATE,
296 .rr_weight = RR_WEIGHT_NONE,
297 .no_path_retry = NO_PATH_RETRY_UNDEF,
298 .minio = DEFAULT_MINIO,
300 .prio_name = PRIO_HDS,
303 * IBM controller family
305 * Maintainer : Hannes Reinecke, SuSE
306 * Mail : hare@suse.de
310 .product = "ProFibre 4000R",
311 .getuid = DEFAULT_GETUID,
312 .features = DEFAULT_FEATURES,
313 .hwhandler = DEFAULT_HWHANDLER,
314 .selector = DEFAULT_SELECTOR,
315 .pgpolicy = MULTIBUS,
316 .pgfailback = FAILBACK_UNDEF,
317 .rr_weight = RR_WEIGHT_NONE,
318 .no_path_retry = NO_PATH_RETRY_UNDEF,
319 .minio = DEFAULT_MINIO,
320 .checker_name = DIRECTIO,
321 .prio_name = DEFAULT_PRIO,
324 /* IBM DS4100 / FAStT100 */
327 .getuid = DEFAULT_GETUID,
328 .features = DEFAULT_FEATURES,
329 .hwhandler = DEFAULT_HWHANDLER,
330 .selector = DEFAULT_SELECTOR,
331 .pgpolicy = GROUP_BY_PRIO,
332 .pgfailback = -FAILBACK_IMMEDIATE,
333 .rr_weight = RR_WEIGHT_NONE,
334 .no_path_retry = NO_PATH_RETRY_UNDEF,
335 .minio = DEFAULT_MINIO,
337 .prio_name = PRIO_RDAC,
340 /* IBM Netfinity Fibre Channel RAID Controller Unit */
343 .getuid = DEFAULT_GETUID,
344 .features = DEFAULT_FEATURES,
345 .hwhandler = DEFAULT_HWHANDLER,
346 .selector = DEFAULT_SELECTOR,
347 .pgpolicy = GROUP_BY_PRIO,
348 .pgfailback = -FAILBACK_IMMEDIATE,
349 .rr_weight = RR_WEIGHT_NONE,
350 .no_path_retry = NO_PATH_RETRY_UNDEF,
351 .minio = DEFAULT_MINIO,
353 .prio_name = PRIO_RDAC,
356 /* IBM DS4200 / FAStT200 */
359 .getuid = DEFAULT_GETUID,
360 .features = DEFAULT_FEATURES,
361 .hwhandler = DEFAULT_HWHANDLER,
362 .selector = DEFAULT_SELECTOR,
363 .pgpolicy = GROUP_BY_SERIAL,
364 .pgfailback = FAILBACK_UNDEF,
365 .rr_weight = RR_WEIGHT_NONE,
366 .no_path_retry = NO_PATH_RETRY_UNDEF,
367 .minio = DEFAULT_MINIO,
369 .prio_name = DEFAULT_PRIO,
372 /* IBM ESS F20 aka Shark */
374 .product = "2105(800|F20)",
375 .getuid = DEFAULT_GETUID,
376 .features = "1 queue_if_no_path",
377 .hwhandler = DEFAULT_HWHANDLER,
378 .selector = DEFAULT_SELECTOR,
379 .pgpolicy = GROUP_BY_SERIAL,
380 .pgfailback = FAILBACK_UNDEF,
381 .rr_weight = RR_WEIGHT_NONE,
382 .no_path_retry = NO_PATH_RETRY_UNDEF,
383 .minio = DEFAULT_MINIO,
385 .prio_name = DEFAULT_PRIO,
390 .product = "1750500",
391 .getuid = DEFAULT_GETUID,
392 .features = "1 queue_if_no_path",
393 .hwhandler = DEFAULT_HWHANDLER,
394 .selector = DEFAULT_SELECTOR,
395 .pgpolicy = GROUP_BY_PRIO,
396 .pgfailback = -FAILBACK_IMMEDIATE,
397 .rr_weight = RR_WEIGHT_NONE,
398 .no_path_retry = NO_PATH_RETRY_UNDEF,
399 .minio = DEFAULT_MINIO,
401 .prio_name = PRIO_ALUA,
406 .product = "2107900",
407 .getuid = DEFAULT_GETUID,
408 .features = "1 queue_if_no_path",
409 .hwhandler = DEFAULT_HWHANDLER,
410 .selector = DEFAULT_SELECTOR,
411 .pgpolicy = MULTIBUS,
412 .pgfailback = FAILBACK_UNDEF,
413 .rr_weight = RR_WEIGHT_NONE,
414 .no_path_retry = NO_PATH_RETRY_UNDEF,
415 .minio = DEFAULT_MINIO,
417 .prio_name = DEFAULT_PRIO,
420 /* IBM SAN Volume Controller */
423 .getuid = DEFAULT_GETUID,
424 .features = "1 queue_if_no_path",
425 .hwhandler = DEFAULT_HWHANDLER,
426 .selector = DEFAULT_SELECTOR,
427 .pgpolicy = GROUP_BY_PRIO,
428 .pgfailback = -FAILBACK_IMMEDIATE,
429 .rr_weight = RR_WEIGHT_NONE,
430 .no_path_retry = NO_PATH_RETRY_UNDEF,
431 .minio = DEFAULT_MINIO,
433 .prio_name = PRIO_ALUA,
436 /* IBM S/390 ECKD DASD */
438 .product = "S/390 DASD ECKD",
439 .bl_product = "S/390.*",
440 .getuid = "/sbin/dasdinfo -u -b %n",
441 .features = "1 queue_if_no_path",
442 .hwhandler = DEFAULT_HWHANDLER,
443 .selector = DEFAULT_SELECTOR,
444 .pgpolicy = MULTIBUS,
445 .pgfailback = FAILBACK_UNDEF,
446 .rr_weight = RR_WEIGHT_NONE,
447 .no_path_retry = NO_PATH_RETRY_UNDEF,
448 .minio = DEFAULT_MINIO,
449 .checker_name = DIRECTIO,
450 .prio_name = DEFAULT_PRIO,
453 * NETAPP controller family
455 * Maintainer : Dave Wysochanski
456 * Mail : davidw@netapp.com
461 .getuid = DEFAULT_GETUID,
462 .features = "1 queue_if_no_path",
463 .hwhandler = DEFAULT_HWHANDLER,
464 .selector = DEFAULT_SELECTOR,
465 .pgpolicy = GROUP_BY_PRIO,
466 .pgfailback = -FAILBACK_IMMEDIATE,
467 .rr_weight = RR_WEIGHT_NONE,
468 .no_path_retry = NO_PATH_RETRY_UNDEF,
470 .checker_name = DIRECTIO,
471 .prio_name = PRIO_NETAPP,
474 * IBM NSeries (NETAPP) controller family
476 * Maintainer : Dave Wysochanski
477 * Mail : davidw@netapp.com
481 .product = "Nseries.*",
482 .getuid = DEFAULT_GETUID,
483 .features = "1 queue_if_no_path",
484 .hwhandler = DEFAULT_HWHANDLER,
485 .selector = DEFAULT_SELECTOR,
486 .pgpolicy = GROUP_BY_PRIO,
487 .pgfailback = -FAILBACK_IMMEDIATE,
488 .rr_weight = RR_WEIGHT_NONE,
489 .no_path_retry = NO_PATH_RETRY_UNDEF,
491 .checker_name = DIRECTIO,
492 .prio_name = PRIO_NETAPP,
495 * Pillar Data controller family
497 * Maintainer : Srinivasan Ramani
498 * Mail : sramani@pillardata.com
502 .product = "Axiom.*",
503 .getuid = DEFAULT_GETUID,
504 .features = DEFAULT_FEATURES,
505 .hwhandler = DEFAULT_HWHANDLER,
506 .selector = DEFAULT_SELECTOR,
507 .pgpolicy = GROUP_BY_PRIO,
508 .pgfailback = FAILBACK_UNDEF,
509 .rr_weight = RR_WEIGHT_NONE,
510 .no_path_retry = NO_PATH_RETRY_UNDEF,
511 .minio = DEFAULT_MINIO,
513 .prio_name = PRIO_ALUA,
518 * Maintainer : Christophe Varoqui
519 * Mail : christophe.varoqui@free.fr
523 .product = "TP9[13]00",
524 .getuid = DEFAULT_GETUID,
525 .features = DEFAULT_FEATURES,
526 .hwhandler = DEFAULT_HWHANDLER,
527 .selector = DEFAULT_SELECTOR,
528 .pgpolicy = MULTIBUS,
529 .pgfailback = FAILBACK_UNDEF,
530 .rr_weight = RR_WEIGHT_NONE,
531 .no_path_retry = NO_PATH_RETRY_UNDEF,
532 .minio = DEFAULT_MINIO,
533 .checker_name = DIRECTIO,
534 .prio_name = DEFAULT_PRIO,
538 .product = "TP9[45]00",
539 .getuid = DEFAULT_GETUID,
540 .features = DEFAULT_FEATURES,
541 .hwhandler = DEFAULT_HWHANDLER,
542 .selector = DEFAULT_SELECTOR,
543 .pgpolicy = GROUP_BY_PRIO,
544 .pgfailback = -FAILBACK_IMMEDIATE,
545 .rr_weight = RR_WEIGHT_NONE,
546 .no_path_retry = NO_PATH_RETRY_QUEUE,
547 .minio = DEFAULT_MINIO,
548 .checker_name = RDAC,
549 .prio_name = PRIO_RDAC,
554 .getuid = DEFAULT_GETUID,
555 .features = DEFAULT_FEATURES,
556 .hwhandler = DEFAULT_HWHANDLER,
557 .selector = DEFAULT_SELECTOR,
558 .pgpolicy = GROUP_BY_PRIO,
559 .pgfailback = -FAILBACK_IMMEDIATE,
560 .rr_weight = RR_WEIGHT_NONE,
561 .no_path_retry = NO_PATH_RETRY_QUEUE,
562 .minio = DEFAULT_MINIO,
563 .checker_name = RDAC,
564 .prio_name = PRIO_RDAC,
569 * Maintainer : Christophe Varoqui
570 * Mail : christophe.varoqui@free.fr
574 .product = "OPENstorage D280",
575 .getuid = DEFAULT_GETUID,
576 .features = DEFAULT_FEATURES,
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_RDAC,
590 * Maintainer : Christophe Varoqui
591 * Mail : christophe.varoqui@free.fr
595 .product = "(StorEdge 3510|T4)",
596 .getuid = DEFAULT_GETUID,
597 .features = DEFAULT_FEATURES,
598 .hwhandler = DEFAULT_HWHANDLER,
599 .selector = DEFAULT_SELECTOR,
600 .pgpolicy = MULTIBUS,
601 .pgfailback = FAILBACK_UNDEF,
602 .rr_weight = RR_WEIGHT_NONE,
603 .no_path_retry = NO_PATH_RETRY_UNDEF,
604 .minio = DEFAULT_MINIO,
605 .checker_name = DIRECTIO,
606 .prio_name = DEFAULT_PRIO,
611 * Maintainer : Bart Brooks, Pivot3
612 * Mail : bartb@pivot3.com
616 .product = "RAIGE VOLUME",
617 .getuid = "/sbin/scsi_id -p 0x80 -g -u -s /block/%n",
618 .features = "1 queue_if_no_path",
619 .hwhandler = DEFAULT_HWHANDLER,
620 .selector = DEFAULT_SELECTOR,
621 .pgpolicy = MULTIBUS,
622 .pgfailback = FAILBACK_UNDEF,
623 .rr_weight = RR_WEIGHT_NONE,
624 .no_path_retry = NO_PATH_RETRY_UNDEF,
627 .prio_name = DEFAULT_PRIO,
644 .checker_name = NULL,
650 setup_default_hwtable (vector hw)
653 struct hwentry * hwe = default_hw;
655 while (hwe->vendor) {
656 hwe->checker = checker_lookup(hwe->checker_name);
657 hwe->prio = prio_lookup(hwe->prio_name);
658 r += store_hwe(hw, hwe);