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,
94 .product = "(HSV2.*|A6189A)",
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,
108 * DDN controller family
110 * Maintainer : Christophe Varoqui
111 * Mail : christophe.varoqui@free.fr
115 .product = "SAN DataDirector",
116 .getuid = DEFAULT_GETUID,
118 .features = DEFAULT_FEATURES,
119 .hwhandler = DEFAULT_HWHANDLER,
120 .selector = DEFAULT_SELECTOR,
121 .pgpolicy = MULTIBUS,
122 .pgfailback = FAILBACK_UNDEF,
123 .rr_weight = RR_WEIGHT_NONE,
124 .no_path_retry = NO_PATH_RETRY_UNDEF,
125 .minio = DEFAULT_MINIO,
126 .checker_name = READSECTOR0,
129 * EMC / Clariion controller family
131 * Maintainer : Edward Goggin, EMC
132 * Mail : egoggin@emc.com
136 .product = "SYMMETRIX",
137 .getuid = "/sbin/scsi_id -g -u -ppre-spc3-83 -s /block/%n",
139 .features = DEFAULT_FEATURES,
140 .hwhandler = DEFAULT_HWHANDLER,
141 .selector = DEFAULT_SELECTOR,
142 .pgpolicy = MULTIBUS,
143 .pgfailback = FAILBACK_UNDEF,
144 .rr_weight = RR_WEIGHT_NONE,
145 .no_path_retry = NO_PATH_RETRY_UNDEF,
146 .minio = DEFAULT_MINIO,
147 .checker_name = READSECTOR0,
152 .bl_product = "LUNZ",
153 .getuid = DEFAULT_GETUID,
154 .getprio = "mpath_prio_emc /dev/%n",
155 .features = "1 queue_if_no_path",
156 .hwhandler = "1 emc",
157 .selector = DEFAULT_SELECTOR,
158 .pgpolicy = GROUP_BY_PRIO,
159 .pgfailback = -FAILBACK_IMMEDIATE,
160 .rr_weight = RR_WEIGHT_NONE,
161 .no_path_retry = (300 / DEFAULT_CHECKINT),
162 .minio = DEFAULT_MINIO,
163 .checker_name = EMC_CLARIION,
166 * Fujitsu controller family
168 * Maintainer : Christophe Varoqui
169 * Mail : christophe.varoqui@free.fr
173 .product = "CentricStor",
174 .getuid = DEFAULT_GETUID,
176 .features = DEFAULT_FEATURES,
177 .hwhandler = DEFAULT_HWHANDLER,
178 .selector = DEFAULT_SELECTOR,
179 .pgpolicy = GROUP_BY_SERIAL,
180 .pgfailback = FAILBACK_UNDEF,
181 .rr_weight = RR_WEIGHT_NONE,
182 .no_path_retry = NO_PATH_RETRY_UNDEF,
183 .minio = DEFAULT_MINIO,
184 .checker_name = READSECTOR0,
187 * Hitachi controller family
189 * Maintainer : Matthias Rudolph
190 * Mail : matthias.rudolph@hds.com
193 .vendor = "(HITACHI|HP)",
194 .product = "OPEN-.*",
195 .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 = READSECTOR0,
210 .getuid = DEFAULT_GETUID,
211 .getprio = "mpath_prio_hds_modular %d",
212 .features = DEFAULT_FEATURES,
213 .hwhandler = DEFAULT_HWHANDLER,
214 .selector = DEFAULT_SELECTOR,
215 .pgpolicy = GROUP_BY_PRIO,
216 .pgfailback = -FAILBACK_IMMEDIATE,
217 .rr_weight = RR_WEIGHT_NONE,
218 .no_path_retry = NO_PATH_RETRY_UNDEF,
219 .minio = DEFAULT_MINIO,
220 .checker_name = READSECTOR0,
223 * IBM controller family
225 * Maintainer : Hannes Reinecke, SuSE
226 * Mail : hare@suse.de
230 .product = "ProFibre 4000R",
231 .getuid = DEFAULT_GETUID,
233 .features = DEFAULT_FEATURES,
234 .hwhandler = DEFAULT_HWHANDLER,
235 .selector = DEFAULT_SELECTOR,
236 .pgpolicy = MULTIBUS,
237 .pgfailback = FAILBACK_UNDEF,
238 .rr_weight = RR_WEIGHT_NONE,
239 .no_path_retry = NO_PATH_RETRY_UNDEF,
240 .minio = DEFAULT_MINIO,
241 .checker_name = READSECTOR0,
244 /* IBM DS4100 / FAStT100 */
247 .getuid = DEFAULT_GETUID,
248 .getprio = "mpath_prio_tpc /dev/%n",
249 .features = DEFAULT_FEATURES,
250 .hwhandler = DEFAULT_HWHANDLER,
251 .selector = DEFAULT_SELECTOR,
252 .pgpolicy = GROUP_BY_PRIO,
253 .pgfailback = -FAILBACK_IMMEDIATE,
254 .rr_weight = RR_WEIGHT_NONE,
255 .no_path_retry = NO_PATH_RETRY_UNDEF,
256 .minio = DEFAULT_MINIO,
260 /* IBM Netfinity Fibre Channel RAID Controller Unit */
263 .getuid = DEFAULT_GETUID,
264 .getprio = "/sbin/mpath_prio_tpc /dev/%n",
265 .features = DEFAULT_FEATURES,
266 .hwhandler = DEFAULT_HWHANDLER,
267 .selector = DEFAULT_SELECTOR,
268 .pgpolicy = GROUP_BY_PRIO,
269 .pgfailback = -FAILBACK_IMMEDIATE,
270 .rr_weight = RR_WEIGHT_NONE,
271 .no_path_retry = NO_PATH_RETRY_UNDEF,
272 .minio = DEFAULT_MINIO,
276 /* IBM DS4200 / FAStT200 */
279 .getuid = DEFAULT_GETUID,
281 .features = DEFAULT_FEATURES,
282 .hwhandler = DEFAULT_HWHANDLER,
283 .selector = DEFAULT_SELECTOR,
284 .pgpolicy = GROUP_BY_SERIAL,
285 .pgfailback = FAILBACK_UNDEF,
286 .rr_weight = RR_WEIGHT_NONE,
287 .no_path_retry = NO_PATH_RETRY_UNDEF,
288 .minio = DEFAULT_MINIO,
292 /* IBM ESS F20 aka Shark */
294 .product = "2105(800|F20)",
295 .getuid = DEFAULT_GETUID,
297 .features = "1 queue_if_no_path",
298 .hwhandler = DEFAULT_HWHANDLER,
299 .selector = DEFAULT_SELECTOR,
300 .pgpolicy = GROUP_BY_SERIAL,
301 .pgfailback = FAILBACK_UNDEF,
302 .rr_weight = RR_WEIGHT_NONE,
303 .no_path_retry = NO_PATH_RETRY_UNDEF,
304 .minio = DEFAULT_MINIO,
310 .product = "1750500",
311 .getuid = DEFAULT_GETUID,
312 .getprio = "mpath_prio_alua /dev/%n",
313 .features = "1 queue_if_no_path",
314 .hwhandler = DEFAULT_HWHANDLER,
315 .selector = DEFAULT_SELECTOR,
316 .pgpolicy = GROUP_BY_PRIO,
317 .pgfailback = -FAILBACK_IMMEDIATE,
318 .rr_weight = RR_WEIGHT_NONE,
319 .no_path_retry = NO_PATH_RETRY_UNDEF,
320 .minio = DEFAULT_MINIO,
326 .product = "2107900",
327 .getuid = DEFAULT_GETUID,
329 .features = "1 queue_if_no_path",
330 .hwhandler = DEFAULT_HWHANDLER,
331 .selector = DEFAULT_SELECTOR,
332 .pgpolicy = GROUP_BY_SERIAL,
333 .pgfailback = FAILBACK_UNDEF,
334 .rr_weight = RR_WEIGHT_NONE,
335 .no_path_retry = NO_PATH_RETRY_UNDEF,
336 .minio = DEFAULT_MINIO,
340 /* IBM SAN Volume Controller */
343 .getuid = DEFAULT_GETUID,
344 .getprio = "mpath_prio_alua /dev/%n",
345 .features = "1 queue_if_no_path",
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,
356 /* IBM S/390 ECKD DASD */
358 .product = "S/390 DASD ECKD",
359 .bl_product = "S/390.*",
360 .getuid = "/sbin/dasd_id /dev/%n",
362 .features = DEFAULT_FEATURES,
363 .hwhandler = DEFAULT_HWHANDLER,
364 .selector = DEFAULT_SELECTOR,
365 .pgpolicy = MULTIBUS,
366 .pgfailback = FAILBACK_UNDEF,
367 .rr_weight = RR_WEIGHT_NONE,
368 .no_path_retry = NO_PATH_RETRY_UNDEF,
369 .minio = DEFAULT_MINIO,
370 .checker_name = DIRECTIO,
373 * NETAPP controller family
375 * Maintainer : Dave Wysochanski
376 * Mail : davidw@netapp.com
381 .getuid = DEFAULT_GETUID,
382 .getprio = "mpath_prio_netapp /dev/%n",
383 .features = "1 queue_if_no_path",
384 .hwhandler = DEFAULT_HWHANDLER,
385 .selector = DEFAULT_SELECTOR,
386 .pgpolicy = GROUP_BY_PRIO,
387 .pgfailback = -FAILBACK_IMMEDIATE,
388 .rr_weight = RR_WEIGHT_NONE,
389 .no_path_retry = NO_PATH_RETRY_UNDEF,
391 .checker_name = READSECTOR0,
394 * IBM NSeries (NETAPP) controller family
396 * Maintainer : Dave Wysochanski
397 * Mail : davidw@netapp.com
401 .product = "Nseries.*",
402 .getuid = DEFAULT_GETUID,
403 .getprio = "mpath_prio_netapp /dev/%n",
404 .features = "1 queue_if_no_path",
405 .hwhandler = DEFAULT_HWHANDLER,
406 .selector = DEFAULT_SELECTOR,
407 .pgpolicy = GROUP_BY_PRIO,
408 .pgfailback = -FAILBACK_IMMEDIATE,
409 .rr_weight = RR_WEIGHT_NONE,
410 .no_path_retry = NO_PATH_RETRY_UNDEF,
412 .checker_name = READSECTOR0,
415 * Pillar Data controller family
417 * Maintainer : Christophe Varoqui
418 * Mail : christophe.varoqui@free.fr
422 .product = "Axiom 500",
423 .getuid = DEFAULT_GETUID,
424 .getprio = "mpath_prio_alua %d",
425 .features = DEFAULT_FEATURES,
426 .hwhandler = DEFAULT_HWHANDLER,
427 .selector = DEFAULT_SELECTOR,
428 .pgpolicy = GROUP_BY_PRIO,
429 .pgfailback = FAILBACK_UNDEF,
430 .rr_weight = RR_WEIGHT_NONE,
431 .no_path_retry = NO_PATH_RETRY_UNDEF,
432 .minio = DEFAULT_MINIO,
438 * Maintainer : Christophe Varoqui
439 * Mail : christophe.varoqui@free.fr
443 .product = "TP9[13]00",
444 .getuid = DEFAULT_GETUID,
446 .features = DEFAULT_FEATURES,
447 .hwhandler = DEFAULT_HWHANDLER,
448 .selector = DEFAULT_SELECTOR,
449 .pgpolicy = MULTIBUS,
450 .pgfailback = FAILBACK_UNDEF,
451 .rr_weight = RR_WEIGHT_NONE,
452 .no_path_retry = NO_PATH_RETRY_UNDEF,
453 .minio = DEFAULT_MINIO,
454 .checker_name = READSECTOR0,
458 .product = "TP9[45]00",
459 .getuid = DEFAULT_GETUID,
460 .getprio = "mpath_prio_tpc /dev/%n",
461 .features = DEFAULT_FEATURES,
462 .hwhandler = DEFAULT_HWHANDLER,
463 .selector = DEFAULT_SELECTOR,
464 .pgpolicy = GROUP_BY_PRIO,
465 .pgfailback = -FAILBACK_IMMEDIATE,
466 .rr_weight = RR_WEIGHT_NONE,
467 .no_path_retry = NO_PATH_RETRY_UNDEF,
468 .minio = DEFAULT_MINIO,
474 * Maintainer : Christophe Varoqui
475 * Mail : christophe.varoqui@free.fr
479 .product = "OPENstorage D280",
480 .getuid = DEFAULT_GETUID,
481 .getprio = "mpath_prio_tpc /dev/%n",
482 .features = DEFAULT_FEATURES,
483 .hwhandler = DEFAULT_HWHANDLER,
484 .selector = DEFAULT_SELECTOR,
485 .pgpolicy = GROUP_BY_PRIO,
486 .pgfailback = -FAILBACK_IMMEDIATE,
487 .rr_weight = RR_WEIGHT_NONE,
488 .no_path_retry = NO_PATH_RETRY_UNDEF,
489 .minio = DEFAULT_MINIO,
495 * Maintainer : Christophe Varoqui
496 * Mail : christophe.varoqui@free.fr
500 .product = "(StorEdge 3510|T4)",
501 .getuid = DEFAULT_GETUID,
503 .features = DEFAULT_FEATURES,
504 .hwhandler = DEFAULT_HWHANDLER,
505 .selector = DEFAULT_SELECTOR,
506 .pgpolicy = MULTIBUS,
507 .pgfailback = FAILBACK_UNDEF,
508 .rr_weight = RR_WEIGHT_NONE,
509 .no_path_retry = NO_PATH_RETRY_UNDEF,
510 .minio = DEFAULT_MINIO,
511 .checker_name = READSECTOR0,
529 .checker_name = NULL,
534 setup_default_hwtable (vector hw)
537 struct hwentry * hwe = default_hw;
539 while (hwe->vendor) {
540 hwe->checker = checker_lookup(hwe->checker_name);
541 r += store_hwe(hw, hwe);