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 DS4200 / FAStT200 */
263 .getuid = DEFAULT_GETUID,
265 .features = DEFAULT_FEATURES,
266 .hwhandler = DEFAULT_HWHANDLER,
267 .selector = DEFAULT_SELECTOR,
268 .pgpolicy = GROUP_BY_SERIAL,
269 .pgfailback = FAILBACK_UNDEF,
270 .rr_weight = RR_WEIGHT_NONE,
271 .no_path_retry = NO_PATH_RETRY_UNDEF,
272 .minio = DEFAULT_MINIO,
276 /* IBM ESS F20 aka Shark */
278 .product = "2105{800,F20}",
279 .getuid = DEFAULT_GETUID,
281 .features = "1 queue_if_no_path",
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 DS6000 / SAN Volume Controller */
294 .product = "{1750500,2145}",
295 .getuid = DEFAULT_GETUID,
296 .getprio = "mpath_prio_alua /dev/%n",
297 .features = "1 queue_if_no_path",
298 .hwhandler = DEFAULT_HWHANDLER,
299 .selector = DEFAULT_SELECTOR,
300 .pgpolicy = GROUP_BY_PRIO,
301 .pgfailback = -FAILBACK_IMMEDIATE,
302 .rr_weight = RR_WEIGHT_NONE,
303 .no_path_retry = NO_PATH_RETRY_UNDEF,
304 .minio = DEFAULT_MINIO,
310 .product = "2107900",
311 .getuid = DEFAULT_GETUID,
313 .features = "1 queue_if_no_path",
314 .hwhandler = DEFAULT_HWHANDLER,
315 .selector = DEFAULT_SELECTOR,
316 .pgpolicy = GROUP_BY_SERIAL,
317 .pgfailback = FAILBACK_UNDEF,
318 .rr_weight = RR_WEIGHT_NONE,
319 .no_path_retry = NO_PATH_RETRY_UNDEF,
320 .minio = DEFAULT_MINIO,
324 /* IBM S/390 ECKD DASD */
326 .product = "S/390 DASD ECKD",
327 .getuid = "/sbin/dasd_id /dev/%n",
329 .features = DEFAULT_FEATURES,
330 .hwhandler = DEFAULT_HWHANDLER,
331 .selector = DEFAULT_SELECTOR,
332 .pgpolicy = MULTIBUS,
333 .pgfailback = FAILBACK_UNDEF,
334 .rr_weight = RR_WEIGHT_NONE,
335 .no_path_retry = NO_PATH_RETRY_UNDEF,
336 .minio = DEFAULT_MINIO,
337 .checker_name = DIRECTIO,
340 * NETAPP controller family
342 * Maintainer : Dave Wysochanski
343 * Mail : davidw@netapp.com
348 .getuid = DEFAULT_GETUID,
349 .getprio = "mpath_prio_netapp /dev/%n",
350 .features = "1 queue_if_no_path",
351 .hwhandler = DEFAULT_HWHANDLER,
352 .selector = DEFAULT_SELECTOR,
353 .pgpolicy = GROUP_BY_PRIO,
354 .pgfailback = -FAILBACK_IMMEDIATE,
355 .rr_weight = RR_WEIGHT_NONE,
356 .no_path_retry = NO_PATH_RETRY_UNDEF,
358 .checker_name = READSECTOR0,
361 * IBM NSeries (NETAPP) controller family
363 * Maintainer : Dave Wysochanski
364 * Mail : davidw@netapp.com
368 .product = "Nseries.*",
369 .getuid = DEFAULT_GETUID,
370 .getprio = "mpath_prio_netapp /dev/%n",
371 .features = "1 queue_if_no_path",
372 .hwhandler = DEFAULT_HWHANDLER,
373 .selector = DEFAULT_SELECTOR,
374 .pgpolicy = GROUP_BY_PRIO,
375 .pgfailback = -FAILBACK_IMMEDIATE,
376 .rr_weight = RR_WEIGHT_NONE,
377 .no_path_retry = NO_PATH_RETRY_UNDEF,
379 .checker_name = READSECTOR0,
382 * Pillar Data controller family
384 * Maintainer : Christophe Varoqui
385 * Mail : christophe.varoqui@free.fr
389 .product = "Axiom 500",
390 .getuid = DEFAULT_GETUID,
391 .getprio = "mpath_prio_alua %d",
392 .features = DEFAULT_FEATURES,
393 .hwhandler = DEFAULT_HWHANDLER,
394 .selector = DEFAULT_SELECTOR,
395 .pgpolicy = GROUP_BY_PRIO,
396 .pgfailback = FAILBACK_UNDEF,
397 .rr_weight = RR_WEIGHT_NONE,
398 .no_path_retry = NO_PATH_RETRY_UNDEF,
399 .minio = DEFAULT_MINIO,
405 * Maintainer : Christophe Varoqui
406 * Mail : christophe.varoqui@free.fr
410 .product = "TP9[13]00",
411 .getuid = DEFAULT_GETUID,
413 .features = DEFAULT_FEATURES,
414 .hwhandler = DEFAULT_HWHANDLER,
415 .selector = DEFAULT_SELECTOR,
416 .pgpolicy = MULTIBUS,
417 .pgfailback = FAILBACK_UNDEF,
418 .rr_weight = RR_WEIGHT_NONE,
419 .no_path_retry = NO_PATH_RETRY_UNDEF,
420 .minio = DEFAULT_MINIO,
421 .checker_name = READSECTOR0,
425 .product = "TP9[45]00",
426 .getuid = DEFAULT_GETUID,
427 .getprio = "mpath_prio_tpc /dev/%n",
428 .features = DEFAULT_FEATURES,
429 .hwhandler = DEFAULT_HWHANDLER,
430 .selector = DEFAULT_SELECTOR,
431 .pgpolicy = GROUP_BY_PRIO,
432 .pgfailback = -FAILBACK_IMMEDIATE,
433 .rr_weight = RR_WEIGHT_NONE,
434 .no_path_retry = NO_PATH_RETRY_UNDEF,
435 .minio = DEFAULT_MINIO,
441 * Maintainer : Christophe Varoqui
442 * Mail : christophe.varoqui@free.fr
446 .product = "OPENstorage D280",
447 .getuid = DEFAULT_GETUID,
448 .getprio = "mpath_prio_tpc /dev/%n",
449 .features = DEFAULT_FEATURES,
450 .hwhandler = DEFAULT_HWHANDLER,
451 .selector = DEFAULT_SELECTOR,
452 .pgpolicy = GROUP_BY_PRIO,
453 .pgfailback = -FAILBACK_IMMEDIATE,
454 .rr_weight = RR_WEIGHT_NONE,
455 .no_path_retry = NO_PATH_RETRY_UNDEF,
456 .minio = DEFAULT_MINIO,
462 * Maintainer : Christophe Varoqui
463 * Mail : christophe.varoqui@free.fr
467 .product = "{StorEdge 3510,T4}",
468 .getuid = DEFAULT_GETUID,
470 .features = DEFAULT_FEATURES,
471 .hwhandler = DEFAULT_HWHANDLER,
472 .selector = DEFAULT_SELECTOR,
473 .pgpolicy = MULTIBUS,
474 .pgfailback = FAILBACK_UNDEF,
475 .rr_weight = RR_WEIGHT_NONE,
476 .no_path_retry = NO_PATH_RETRY_UNDEF,
477 .minio = DEFAULT_MINIO,
478 .checker_name = READSECTOR0,
496 .checker_name = NULL,
501 setup_default_hwtable (vector hw)
504 struct hwentry * hwe = default_hw;
506 while (hwe->vendor) {
507 hwe->checker = checker_lookup(hwe->checker_name);
508 r += store_hwe(hw, hwe);