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,
85 .pgpolicy = GROUP_BY_SERIAL,
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}",
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 = "/sbin/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,
308 /* IBM DS6000 / SAN Volume Controller */
310 .product = "{1750500,2145}",
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 S/390 ECKD DASD */
342 .product = "S/390 DASD ECKD",
343 .getuid = "/sbin/dasd_id /dev/%n",
345 .features = DEFAULT_FEATURES,
346 .hwhandler = DEFAULT_HWHANDLER,
347 .selector = DEFAULT_SELECTOR,
348 .pgpolicy = MULTIBUS,
349 .pgfailback = FAILBACK_UNDEF,
350 .rr_weight = RR_WEIGHT_NONE,
351 .no_path_retry = NO_PATH_RETRY_UNDEF,
352 .minio = DEFAULT_MINIO,
353 .checker_name = DIRECTIO,
356 * NETAPP controller family
358 * Maintainer : Dave Wysochanski
359 * Mail : davidw@netapp.com
364 .getuid = DEFAULT_GETUID,
365 .getprio = "mpath_prio_netapp /dev/%n",
366 .features = "1 queue_if_no_path",
367 .hwhandler = DEFAULT_HWHANDLER,
368 .selector = DEFAULT_SELECTOR,
369 .pgpolicy = GROUP_BY_PRIO,
370 .pgfailback = -FAILBACK_IMMEDIATE,
371 .rr_weight = RR_WEIGHT_NONE,
372 .no_path_retry = NO_PATH_RETRY_UNDEF,
374 .checker_name = READSECTOR0,
377 * IBM NSeries (NETAPP) controller family
379 * Maintainer : Dave Wysochanski
380 * Mail : davidw@netapp.com
384 .product = "Nseries.*",
385 .getuid = DEFAULT_GETUID,
386 .getprio = "mpath_prio_netapp /dev/%n",
387 .features = "1 queue_if_no_path",
388 .hwhandler = DEFAULT_HWHANDLER,
389 .selector = DEFAULT_SELECTOR,
390 .pgpolicy = GROUP_BY_PRIO,
391 .pgfailback = -FAILBACK_IMMEDIATE,
392 .rr_weight = RR_WEIGHT_NONE,
393 .no_path_retry = NO_PATH_RETRY_UNDEF,
395 .checker_name = READSECTOR0,
398 * Pillar Data controller family
400 * Maintainer : Christophe Varoqui
401 * Mail : christophe.varoqui@free.fr
405 .product = "Axiom 500",
406 .getuid = DEFAULT_GETUID,
407 .getprio = "mpath_prio_alua %d",
408 .features = DEFAULT_FEATURES,
409 .hwhandler = DEFAULT_HWHANDLER,
410 .selector = DEFAULT_SELECTOR,
411 .pgpolicy = GROUP_BY_PRIO,
412 .pgfailback = FAILBACK_UNDEF,
413 .rr_weight = RR_WEIGHT_NONE,
414 .no_path_retry = NO_PATH_RETRY_UNDEF,
415 .minio = DEFAULT_MINIO,
421 * Maintainer : Christophe Varoqui
422 * Mail : christophe.varoqui@free.fr
426 .product = "TP9[13]00",
427 .getuid = DEFAULT_GETUID,
429 .features = DEFAULT_FEATURES,
430 .hwhandler = DEFAULT_HWHANDLER,
431 .selector = DEFAULT_SELECTOR,
432 .pgpolicy = MULTIBUS,
433 .pgfailback = FAILBACK_UNDEF,
434 .rr_weight = RR_WEIGHT_NONE,
435 .no_path_retry = NO_PATH_RETRY_UNDEF,
436 .minio = DEFAULT_MINIO,
437 .checker_name = READSECTOR0,
441 .product = "TP9[45]00",
442 .getuid = DEFAULT_GETUID,
443 .getprio = "mpath_prio_tpc /dev/%n",
444 .features = DEFAULT_FEATURES,
445 .hwhandler = DEFAULT_HWHANDLER,
446 .selector = DEFAULT_SELECTOR,
447 .pgpolicy = GROUP_BY_PRIO,
448 .pgfailback = -FAILBACK_IMMEDIATE,
449 .rr_weight = RR_WEIGHT_NONE,
450 .no_path_retry = NO_PATH_RETRY_UNDEF,
451 .minio = DEFAULT_MINIO,
457 * Maintainer : Christophe Varoqui
458 * Mail : christophe.varoqui@free.fr
462 .product = "OPENstorage D280",
463 .getuid = DEFAULT_GETUID,
464 .getprio = "mpath_prio_tpc /dev/%n",
465 .features = DEFAULT_FEATURES,
466 .hwhandler = DEFAULT_HWHANDLER,
467 .selector = DEFAULT_SELECTOR,
468 .pgpolicy = GROUP_BY_PRIO,
469 .pgfailback = -FAILBACK_IMMEDIATE,
470 .rr_weight = RR_WEIGHT_NONE,
471 .no_path_retry = NO_PATH_RETRY_UNDEF,
472 .minio = DEFAULT_MINIO,
478 * Maintainer : Christophe Varoqui
479 * Mail : christophe.varoqui@free.fr
483 .product = "{StorEdge 3510,T4}",
484 .getuid = DEFAULT_GETUID,
486 .features = DEFAULT_FEATURES,
487 .hwhandler = DEFAULT_HWHANDLER,
488 .selector = DEFAULT_SELECTOR,
489 .pgpolicy = MULTIBUS,
490 .pgfailback = FAILBACK_UNDEF,
491 .rr_weight = RR_WEIGHT_NONE,
492 .no_path_retry = NO_PATH_RETRY_UNDEF,
493 .minio = DEFAULT_MINIO,
494 .checker_name = READSECTOR0,
512 .checker_name = NULL,
517 setup_default_hwtable (vector hw)
520 struct hwentry * hwe = default_hw;
522 while (hwe->vendor) {
523 hwe->checker = checker_lookup(hwe->checker_name);
524 r += store_hwe(hw, hwe);