9 #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,
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,
42 * StorageWorks controller family
44 * Maintainer : Christophe Varoqui
45 * Mail : christophe.varoqui@free.fr
50 .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,
65 .getuid = DEFAULT_GETUID,
67 .features = DEFAULT_FEATURES,
68 .hwhandler = "1 hp_sw",
69 .selector = DEFAULT_SELECTOR,
70 .pgpolicy = GROUP_BY_SERIAL,
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,
78 .vendor = "(COMPAQ|HP)",
79 .product = "(MSA|HSV)1.*",
80 .getuid = DEFAULT_GETUID,
82 .features = DEFAULT_FEATURES,
83 .hwhandler = "1 hp_sw",
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 = HP_SW,
95 .getuid = DEFAULT_GETUID,
97 .features = DEFAULT_FEATURES,
98 .hwhandler = DEFAULT_HWHANDLER,
99 .selector = DEFAULT_SELECTOR,
100 .pgpolicy = MULTIBUS,
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 = READSECTOR0,
109 .product = "HSV20.*",
110 .revision = "[123].*",
111 .getuid = DEFAULT_GETUID,
113 .features = DEFAULT_FEATURES,
114 .hwhandler = DEFAULT_HWHANDLER,
115 .selector = DEFAULT_SELECTOR,
116 .pgpolicy = MULTIBUS,
117 .pgfailback = FAILBACK_UNDEF,
118 .rr_weight = RR_WEIGHT_NONE,
119 .no_path_retry = NO_PATH_RETRY_UNDEF,
120 .minio = DEFAULT_MINIO,
121 .checker_name = HP_SW,
125 .product = "HSV20.*",
126 .revision = "[^123].*",
127 .getuid = DEFAULT_GETUID,
128 .getprio = "/sbin/mpath_prio_alua /dev/%n",
129 .features = DEFAULT_FEATURES,
130 .hwhandler = DEFAULT_HWHANDLER,
131 .selector = DEFAULT_SELECTOR,
132 .pgpolicy = MULTIBUS,
133 .pgfailback = -FAILBACK_IMMEDIATE,
134 .rr_weight = RR_WEIGHT_PRIORITIES,
135 .no_path_retry = NO_PATH_RETRY_UNDEF,
136 .minio = DEFAULT_MINIO,
141 .product = "HSV21.*",
142 .getuid = DEFAULT_GETUID,
143 .getprio = "/sbin/mpath_prio_alua /dev/%n",
144 .features = DEFAULT_FEATURES,
145 .hwhandler = DEFAULT_HWHANDLER,
146 .selector = DEFAULT_SELECTOR,
147 .pgpolicy = GROUP_BY_PRIO,
148 .pgfailback = FAILBACK_UNDEF,
149 .rr_weight = RR_WEIGHT_NONE,
150 .no_path_retry = NO_PATH_RETRY_UNDEF,
151 .minio = DEFAULT_MINIO,
155 * DDN controller family
157 * Maintainer : Christophe Varoqui
158 * Mail : christophe.varoqui@free.fr
162 .product = "SAN DataDirector",
163 .getuid = DEFAULT_GETUID,
165 .features = DEFAULT_FEATURES,
166 .hwhandler = DEFAULT_HWHANDLER,
167 .selector = DEFAULT_SELECTOR,
168 .pgpolicy = MULTIBUS,
169 .pgfailback = FAILBACK_UNDEF,
170 .rr_weight = RR_WEIGHT_NONE,
171 .no_path_retry = NO_PATH_RETRY_UNDEF,
172 .minio = DEFAULT_MINIO,
173 .checker_name = READSECTOR0,
176 * EMC / Clariion controller family
178 * Maintainer : Edward Goggin, EMC
179 * Mail : egoggin@emc.com
183 .product = "SYMMETRIX",
184 .getuid = "scsi_id -g -u -ppre-spc3-83 -s /block/%n",
186 .features = DEFAULT_FEATURES,
187 .hwhandler = DEFAULT_HWHANDLER,
188 .selector = DEFAULT_SELECTOR,
189 .pgpolicy = MULTIBUS,
190 .pgfailback = FAILBACK_UNDEF,
191 .rr_weight = RR_WEIGHT_NONE,
192 .no_path_retry = NO_PATH_RETRY_UNDEF,
193 .minio = DEFAULT_MINIO,
194 .checker_name = READSECTOR0,
199 .bl_product = "LUNZ",
200 .getuid = DEFAULT_GETUID,
201 .getprio = "mpath_prio_emc /dev/%n",
202 .features = "1 queue_if_no_path",
203 .hwhandler = "1 emc",
204 .selector = DEFAULT_SELECTOR,
205 .pgpolicy = GROUP_BY_PRIO,
206 .pgfailback = -FAILBACK_IMMEDIATE,
207 .rr_weight = RR_WEIGHT_NONE,
208 .no_path_retry = (300 / DEFAULT_CHECKINT),
209 .minio = DEFAULT_MINIO,
210 .checker_name = EMC_CLARIION,
213 * Fujitsu controller family
215 * Maintainer : Christophe Varoqui
216 * Mail : christophe.varoqui@free.fr
220 .product = "CentricStor",
221 .getuid = DEFAULT_GETUID,
223 .features = DEFAULT_FEATURES,
224 .hwhandler = DEFAULT_HWHANDLER,
225 .selector = DEFAULT_SELECTOR,
226 .pgpolicy = GROUP_BY_SERIAL,
227 .pgfailback = FAILBACK_UNDEF,
228 .rr_weight = RR_WEIGHT_NONE,
229 .no_path_retry = NO_PATH_RETRY_UNDEF,
230 .minio = DEFAULT_MINIO,
231 .checker_name = READSECTOR0,
234 * Hitachi controller family
236 * Maintainer : Matthias Rudolph
237 * Mail : matthias.rudolph@hds.com
240 .vendor = "(HITACHI|HP)",
241 .product = "OPEN-.*",
242 .getuid = DEFAULT_GETUID,
244 .features = DEFAULT_FEATURES,
245 .hwhandler = DEFAULT_HWHANDLER,
246 .selector = DEFAULT_SELECTOR,
247 .pgpolicy = MULTIBUS,
248 .pgfailback = FAILBACK_UNDEF,
249 .rr_weight = RR_WEIGHT_NONE,
250 .no_path_retry = NO_PATH_RETRY_UNDEF,
251 .minio = DEFAULT_MINIO,
252 .checker_name = READSECTOR0,
257 .getuid = DEFAULT_GETUID,
258 .getprio = "mpath_prio_hds_modular %d",
259 .features = DEFAULT_FEATURES,
260 .hwhandler = DEFAULT_HWHANDLER,
261 .selector = DEFAULT_SELECTOR,
262 .pgpolicy = GROUP_BY_PRIO,
263 .pgfailback = -FAILBACK_IMMEDIATE,
264 .rr_weight = RR_WEIGHT_NONE,
265 .no_path_retry = NO_PATH_RETRY_UNDEF,
266 .minio = DEFAULT_MINIO,
267 .checker_name = READSECTOR0,
270 * IBM controller family
272 * Maintainer : Hannes Reinecke, SuSE
273 * Mail : hare@suse.de
277 .product = "ProFibre 4000R",
278 .getuid = DEFAULT_GETUID,
280 .features = DEFAULT_FEATURES,
281 .hwhandler = DEFAULT_HWHANDLER,
282 .selector = DEFAULT_SELECTOR,
283 .pgpolicy = MULTIBUS,
284 .pgfailback = FAILBACK_UNDEF,
285 .rr_weight = RR_WEIGHT_NONE,
286 .no_path_retry = NO_PATH_RETRY_UNDEF,
287 .minio = DEFAULT_MINIO,
288 .checker_name = READSECTOR0,
291 /* IBM DS4100 / FAStT100 */
294 .getuid = DEFAULT_GETUID,
295 .getprio = "mpath_prio_tpc /dev/%n",
296 .features = DEFAULT_FEATURES,
297 .hwhandler = DEFAULT_HWHANDLER,
298 .selector = DEFAULT_SELECTOR,
299 .pgpolicy = GROUP_BY_PRIO,
300 .pgfailback = -FAILBACK_IMMEDIATE,
301 .rr_weight = RR_WEIGHT_NONE,
302 .no_path_retry = NO_PATH_RETRY_UNDEF,
303 .minio = DEFAULT_MINIO,
307 /* IBM Netfinity Fibre Channel RAID Controller Unit */
310 .getuid = DEFAULT_GETUID,
311 .getprio = "mpath_prio_tpc /dev/%n",
312 .features = DEFAULT_FEATURES,
313 .hwhandler = DEFAULT_HWHANDLER,
314 .selector = DEFAULT_SELECTOR,
315 .pgpolicy = GROUP_BY_PRIO,
316 .pgfailback = -FAILBACK_IMMEDIATE,
317 .rr_weight = RR_WEIGHT_NONE,
318 .no_path_retry = NO_PATH_RETRY_UNDEF,
319 .minio = DEFAULT_MINIO,
323 /* IBM DS4200 / FAStT200 */
326 .getuid = DEFAULT_GETUID,
328 .features = DEFAULT_FEATURES,
329 .hwhandler = DEFAULT_HWHANDLER,
330 .selector = DEFAULT_SELECTOR,
331 .pgpolicy = GROUP_BY_SERIAL,
332 .pgfailback = FAILBACK_UNDEF,
333 .rr_weight = RR_WEIGHT_NONE,
334 .no_path_retry = NO_PATH_RETRY_UNDEF,
335 .minio = DEFAULT_MINIO,
339 /* IBM ESS F20 aka Shark */
341 .product = "2105(800|F20)",
342 .getuid = DEFAULT_GETUID,
344 .features = "1 queue_if_no_path",
345 .hwhandler = DEFAULT_HWHANDLER,
346 .selector = DEFAULT_SELECTOR,
347 .pgpolicy = GROUP_BY_SERIAL,
348 .pgfailback = FAILBACK_UNDEF,
349 .rr_weight = RR_WEIGHT_NONE,
350 .no_path_retry = NO_PATH_RETRY_UNDEF,
351 .minio = DEFAULT_MINIO,
357 .product = "1750500",
358 .getuid = DEFAULT_GETUID,
359 .getprio = "mpath_prio_alua /dev/%n",
360 .features = "1 queue_if_no_path",
361 .hwhandler = DEFAULT_HWHANDLER,
362 .selector = DEFAULT_SELECTOR,
363 .pgpolicy = GROUP_BY_PRIO,
364 .pgfailback = -FAILBACK_IMMEDIATE,
365 .rr_weight = RR_WEIGHT_NONE,
366 .no_path_retry = NO_PATH_RETRY_UNDEF,
367 .minio = DEFAULT_MINIO,
373 .product = "2107900",
374 .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,
387 /* IBM SAN Volume Controller */
390 .getuid = DEFAULT_GETUID,
391 .getprio = "mpath_prio_alua /dev/%n",
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,
403 /* IBM S/390 ECKD DASD */
405 .product = "S/390 DASD ECKD",
406 .bl_product = "S/390.*",
407 .getuid = "dasd_id /dev/%n",
409 .features = DEFAULT_FEATURES,
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,
417 .checker_name = DIRECTIO,
420 * NETAPP controller family
422 * Maintainer : Dave Wysochanski
423 * Mail : davidw@netapp.com
428 .getuid = DEFAULT_GETUID,
429 .getprio = "mpath_prio_netapp /dev/%n",
430 .features = "1 queue_if_no_path",
431 .hwhandler = DEFAULT_HWHANDLER,
432 .selector = DEFAULT_SELECTOR,
433 .pgpolicy = GROUP_BY_PRIO,
434 .pgfailback = -FAILBACK_IMMEDIATE,
435 .rr_weight = RR_WEIGHT_NONE,
436 .no_path_retry = NO_PATH_RETRY_UNDEF,
438 .checker_name = READSECTOR0,
441 * IBM NSeries (NETAPP) controller family
443 * Maintainer : Dave Wysochanski
444 * Mail : davidw@netapp.com
448 .product = "Nseries.*",
449 .getuid = DEFAULT_GETUID,
450 .getprio = "mpath_prio_netapp /dev/%n",
451 .features = "1 queue_if_no_path",
452 .hwhandler = DEFAULT_HWHANDLER,
453 .selector = DEFAULT_SELECTOR,
454 .pgpolicy = GROUP_BY_PRIO,
455 .pgfailback = -FAILBACK_IMMEDIATE,
456 .rr_weight = RR_WEIGHT_NONE,
457 .no_path_retry = NO_PATH_RETRY_UNDEF,
459 .checker_name = READSECTOR0,
462 * Pillar Data controller family
464 * Maintainer : Christophe Varoqui
465 * Mail : christophe.varoqui@free.fr
469 .product = "Axiom 500",
470 .getuid = DEFAULT_GETUID,
471 .getprio = "mpath_prio_alua %d",
472 .features = DEFAULT_FEATURES,
473 .hwhandler = DEFAULT_HWHANDLER,
474 .selector = DEFAULT_SELECTOR,
475 .pgpolicy = GROUP_BY_PRIO,
476 .pgfailback = FAILBACK_UNDEF,
477 .rr_weight = RR_WEIGHT_NONE,
478 .no_path_retry = NO_PATH_RETRY_UNDEF,
479 .minio = DEFAULT_MINIO,
485 * Maintainer : Christophe Varoqui
486 * Mail : christophe.varoqui@free.fr
490 .product = "TP9[13]00",
491 .getuid = DEFAULT_GETUID,
493 .features = DEFAULT_FEATURES,
494 .hwhandler = DEFAULT_HWHANDLER,
495 .selector = DEFAULT_SELECTOR,
496 .pgpolicy = MULTIBUS,
497 .pgfailback = FAILBACK_UNDEF,
498 .rr_weight = RR_WEIGHT_NONE,
499 .no_path_retry = NO_PATH_RETRY_UNDEF,
500 .minio = DEFAULT_MINIO,
501 .checker_name = READSECTOR0,
505 .product = "TP9[45]00",
506 .getuid = DEFAULT_GETUID,
507 .getprio = "mpath_prio_tpc /dev/%n",
508 .features = DEFAULT_FEATURES,
509 .hwhandler = DEFAULT_HWHANDLER,
510 .selector = DEFAULT_SELECTOR,
511 .pgpolicy = GROUP_BY_PRIO,
512 .pgfailback = -FAILBACK_IMMEDIATE,
513 .rr_weight = RR_WEIGHT_NONE,
514 .no_path_retry = NO_PATH_RETRY_UNDEF,
515 .minio = DEFAULT_MINIO,
521 * Maintainer : Christophe Varoqui
522 * Mail : christophe.varoqui@free.fr
526 .product = "OPENstorage D280",
527 .getuid = DEFAULT_GETUID,
528 .getprio = "mpath_prio_tpc /dev/%n",
529 .features = DEFAULT_FEATURES,
530 .hwhandler = DEFAULT_HWHANDLER,
531 .selector = DEFAULT_SELECTOR,
532 .pgpolicy = GROUP_BY_PRIO,
533 .pgfailback = -FAILBACK_IMMEDIATE,
534 .rr_weight = RR_WEIGHT_NONE,
535 .no_path_retry = NO_PATH_RETRY_UNDEF,
536 .minio = DEFAULT_MINIO,
542 * Maintainer : Christophe Varoqui
543 * Mail : christophe.varoqui@free.fr
547 .product = "(StorEdge 3510|T4)",
548 .getuid = DEFAULT_GETUID,
550 .features = DEFAULT_FEATURES,
551 .hwhandler = DEFAULT_HWHANDLER,
552 .selector = DEFAULT_SELECTOR,
553 .pgpolicy = MULTIBUS,
554 .pgfailback = FAILBACK_UNDEF,
555 .rr_weight = RR_WEIGHT_NONE,
556 .no_path_retry = NO_PATH_RETRY_UNDEF,
557 .minio = DEFAULT_MINIO,
558 .checker_name = READSECTOR0,
576 .checker_name = NULL,
581 setup_default_hwtable (vector hw)
584 struct hwentry * hwe = default_hw;
586 while (hwe->vendor) {
587 hwe->checker = checker_lookup(hwe->checker_name);
588 r += store_hwe(hw, hwe);