a3d19080e219c49c586ba604ca3893b58b4cab7b
[multipath-tools/.git] / libmultipath / hwtable.c
1 #include <stdio.h>
2
3 #include "checkers.h"
4 #include "vector.h"
5 #include "defaults.h"
6 #include "structs.h"
7 #include "config.h"
8 #include "pgpolicies.h"
9 #include "prio.h"
10
11 /*
12  * Tuning suggestions on these parameters should go to
13  * dm-devel@redhat.com
14  * 
15  * You are welcome to claim maintainership over a controller
16  * family. Please mail the currently enlisted maintainer and
17  * the upstream package maintainer.
18  */
19 static struct hwentry default_hw[] = {
20         /*
21          * Compellent Technologies, Inc.
22          *
23          * Maintainer : Jim Lester, Compellent
24          * Mail : jim.lester@compellent.com
25          */
26         {
27                 .vendor        = "COMPELNT",
28                 .product       = "Compellent Vol",
29                 .features      = DEFAULT_FEATURES,
30                 .hwhandler     = DEFAULT_HWHANDLER,
31                 .selector      = DEFAULT_SELECTOR,
32                 .pgpolicy      = MULTIBUS,
33                 .pgfailback    = -FAILBACK_IMMEDIATE,
34                 .rr_weight     = RR_WEIGHT_NONE,
35                 .no_path_retry = NO_PATH_RETRY_QUEUE,
36                 .minio         = DEFAULT_MINIO,
37                 .minio_rq      = DEFAULT_MINIO_RQ,
38                 .checker_name  = TUR,
39                 .prio_name     = DEFAULT_PRIO,
40                 .prio_args     = NULL,
41         },
42         /*
43          * Apple controller family
44          *
45          * Maintainer : Shyam Sundar
46          * Mail : g.shyamsundar@yahoo.co.in
47          */
48         {
49                 .vendor        = "APPLE*",
50                 .product       = "Xserve RAID ",
51                 .features      = DEFAULT_FEATURES,
52                 .hwhandler     = DEFAULT_HWHANDLER,
53                 .selector      = DEFAULT_SELECTOR,
54                 .pgpolicy      = MULTIBUS,
55                 .pgfailback    = FAILBACK_UNDEF,
56                 .rr_weight     = RR_WEIGHT_NONE,
57                 .no_path_retry = NO_PATH_RETRY_UNDEF,
58                 .minio         = DEFAULT_MINIO,
59                 .minio_rq      = DEFAULT_MINIO_RQ,
60                 .checker_name  = DEFAULT_CHECKER,
61                 .prio_name     = DEFAULT_PRIO,
62                 .prio_args     = NULL,
63         },
64         /*
65          * StorageWorks controller family
66          *
67          * Maintainer : Christophe Varoqui
68          * Mail : christophe.varoqui@opensvc.com
69          */
70         {
71                 .vendor        = "3PARdata",
72                 .product       = "VV",
73                 .features      = DEFAULT_FEATURES,
74                 .hwhandler     = DEFAULT_HWHANDLER,
75                 .selector      = DEFAULT_SELECTOR,
76                 .pgpolicy      = MULTIBUS,
77                 .pgfailback    = FAILBACK_UNDEF,
78                 .rr_weight     = RR_WEIGHT_NONE,
79                 .no_path_retry = NO_PATH_RETRY_UNDEF,
80                 .minio         = DEFAULT_MINIO,
81                 .minio_rq      = DEFAULT_MINIO_RQ,
82                 .checker_name  = DEFAULT_CHECKER,
83                 .prio_name     = DEFAULT_PRIO,
84                 .prio_args     = NULL,
85         },
86         {
87                 .vendor        = "DEC",
88                 .product       = "HSG80",
89                 .features      = "1 queue_if_no_path",
90                 .hwhandler     = "1 hp_sw",
91                 .selector      = DEFAULT_SELECTOR,
92                 .pgpolicy      = GROUP_BY_PRIO,
93                 .pgfailback    = FAILBACK_UNDEF,
94                 .rr_weight     = RR_WEIGHT_NONE,
95                 .no_path_retry = NO_PATH_RETRY_UNDEF,
96                 .minio         = DEFAULT_MINIO,
97                 .minio_rq      = DEFAULT_MINIO_RQ,
98                 .checker_name  = HP_SW,
99                 .prio_name     = PRIO_HP_SW,
100                 .prio_args     = NULL,
101         },
102         {
103                 .vendor        = "HP",
104                 .product       = "A6189A",
105                 .features      = DEFAULT_FEATURES,
106                 .hwhandler     = DEFAULT_HWHANDLER,
107                 .selector      = DEFAULT_SELECTOR,
108                 .pgpolicy      = MULTIBUS,
109                 .pgfailback    = FAILBACK_UNDEF,
110                 .rr_weight     = RR_WEIGHT_NONE,
111                 .no_path_retry = 12,
112                 .minio         = DEFAULT_MINIO,
113                 .minio_rq      = DEFAULT_MINIO_RQ,
114                 .checker_name  = DIRECTIO,
115                 .prio_name     = DEFAULT_PRIO,
116                 .prio_args     = NULL,
117         },
118         {
119                 /* MSA 1000/MSA1500 EVA 3000/5000 with old firmware */
120                 .vendor        = "(COMPAQ|HP)",
121                 .product       = "(MSA|HSV)1.0.*",
122                 .features      = "1 queue_if_no_path",
123                 .hwhandler     = "1 hp_sw",
124                 .selector      = DEFAULT_SELECTOR,
125                 .pgpolicy      = GROUP_BY_PRIO,
126                 .pgfailback    = FAILBACK_UNDEF,
127                 .rr_weight     = RR_WEIGHT_NONE,
128                 .no_path_retry = 12,
129                 .minio         = 100,
130                 .checker_name  = HP_SW,
131                 .prio_name     = PRIO_HP_SW,
132                 .prio_args     = NULL,
133         },
134         {
135                 /* MSA 1000/1500 with new firmware */
136                 .vendor        = "(COMPAQ|HP)",
137                 .product       = "MSA VOLUME",
138                 .features      = DEFAULT_FEATURES,
139                 .hwhandler     = DEFAULT_HWHANDLER,
140                 .selector      = DEFAULT_SELECTOR,
141                 .pgpolicy      = GROUP_BY_PRIO,
142                 .pgfailback    = -FAILBACK_IMMEDIATE,
143                 .rr_weight     = RR_WEIGHT_NONE,
144                 .no_path_retry = 12,
145                 .minio         = 100,
146                 .checker_name  = TUR,
147                 .prio_name     = PRIO_ALUA,
148                 .prio_args     = NULL,
149         },
150         {
151                 /* EVA 3000/5000 with new firmware, EVA 4000/6000/8000 */
152                 .vendor        = "(COMPAQ|HP)",
153                 .product       = "HSV1[01]1|HSV2[01]0|HSV300|HSV4[05]0",
154                 .features      = DEFAULT_FEATURES,
155                 .hwhandler     = DEFAULT_HWHANDLER,
156                 .selector      = DEFAULT_SELECTOR,
157                 .pgpolicy      = GROUP_BY_PRIO,
158                 .pgfailback    = -FAILBACK_IMMEDIATE,
159                 .rr_weight     = RR_WEIGHT_NONE,
160                 .no_path_retry = 12,
161                 .minio         = 100,
162                 .checker_name  = TUR,
163                 .prio_name     = PRIO_ALUA,
164                 .prio_args     = NULL,
165         },
166         {
167                 /* HP MSA2000 product family with old firmware */
168                 .vendor        = "HP",
169                 .product       = "MSA2[02]12fc|MSA2012i",
170                 .features      = DEFAULT_FEATURES,
171                 .hwhandler     = DEFAULT_HWHANDLER,
172                 .selector      = DEFAULT_SELECTOR,
173                 .pgpolicy      = MULTIBUS,
174                 .pgfailback    = -FAILBACK_IMMEDIATE,
175                 .rr_weight     = RR_WEIGHT_NONE,
176                 .no_path_retry = 18,
177                 .minio         = 100,
178                 .checker_name  = TUR,
179                 .prio_name     = DEFAULT_PRIO,
180                 .prio_args     = NULL,
181         },
182         {
183                 /* HP MSA2000 product family with new firmware */
184                 .vendor        = "HP",
185                 .product       = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
186                 .features      = DEFAULT_FEATURES,
187                 .hwhandler     = DEFAULT_HWHANDLER,
188                 .selector      = DEFAULT_SELECTOR,
189                 .pgpolicy      = GROUP_BY_PRIO,
190                 .pgfailback    = -FAILBACK_IMMEDIATE,
191                 .rr_weight     = RR_WEIGHT_NONE,
192                 .no_path_retry = 18,
193                 .minio         = 100,
194                 .checker_name  = TUR,
195                 .prio_name     = PRIO_ALUA,
196                 .prio_args     = NULL,
197         },
198
199         {
200                 /* HP SVSP */
201                 .vendor        = "HP",
202                 .product       = "HSVX700",
203                 .features      = DEFAULT_FEATURES,
204                 .hwhandler     = "1 alua",
205                 .selector      = DEFAULT_SELECTOR,
206                 .pgpolicy      = GROUP_BY_PRIO,
207                 .pgfailback    = -FAILBACK_IMMEDIATE,
208                 .rr_weight     = RR_WEIGHT_NONE,
209                 .no_path_retry = 12,
210                 .minio         = 100,
211                 .checker_name  = TUR,
212                 .prio_name     = PRIO_ALUA,
213                 .prio_args     = NULL,
214         },
215
216         {
217                 /* HP Smart Array */
218                 .vendor        = "HP",
219                 .product       = "LOGICAL VOLUME.*",
220                 .features      = DEFAULT_FEATURES,
221                 .hwhandler     = DEFAULT_HWHANDLER,
222                 .selector      = DEFAULT_SELECTOR,
223                 .pgpolicy      = MULTIBUS,
224                 .pgfailback    = FAILBACK_UNDEF,
225                 .rr_weight     = RR_WEIGHT_NONE,
226                 .no_path_retry = 12,
227                 .minio         = DEFAULT_MINIO,
228                 .minio_rq      = DEFAULT_MINIO_RQ,
229                 .checker_name  = TUR,
230                 .prio_name     = DEFAULT_PRIO,
231                 .prio_args     = NULL,
232         },
233         {
234                 /* HP P2000 family arrays */
235                 .vendor        = "HP",
236                 .product       = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
237                 .features      = DEFAULT_FEATURES,
238                 .hwhandler     = DEFAULT_HWHANDLER,
239                 .selector      = DEFAULT_SELECTOR,
240                 .pgpolicy      = GROUP_BY_PRIO,
241                 .pgfailback    = -FAILBACK_IMMEDIATE,
242                 .rr_weight     = RR_WEIGHT_NONE,
243                 .no_path_retry = 18,
244                 .minio         = 100,
245                 .minio_rq      = DEFAULT_MINIO_RQ,
246                 .checker_name  = TUR,
247                 .prio_name     = PRIO_ALUA,
248                 .prio_args     = NULL,
249         },
250         /*
251          * DDN controller family
252          *
253          * Maintainer : Christophe Varoqui
254          * Mail : christophe.varoqui@opensvc.com
255          */
256         {
257                 .vendor        = "DDN",
258                 .product       = "SAN DataDirector",
259                 .features      = DEFAULT_FEATURES,
260                 .hwhandler     = DEFAULT_HWHANDLER,
261                 .selector      = DEFAULT_SELECTOR,
262                 .pgpolicy      = MULTIBUS,
263                 .pgfailback    = FAILBACK_UNDEF,
264                 .rr_weight     = RR_WEIGHT_NONE,
265                 .no_path_retry = NO_PATH_RETRY_UNDEF,
266                 .minio         = DEFAULT_MINIO,
267                 .minio_rq      = DEFAULT_MINIO_RQ,
268                 .checker_name  = DIRECTIO,
269                 .prio_name     = DEFAULT_PRIO,
270                 .prio_args     = NULL,
271         },
272         /*
273          * EMC / Clariion controller family
274          *
275          * Maintainer : Edward Goggin, EMC
276          * Mail : egoggin@emc.com
277          */
278         {
279                 .vendor        = "EMC",
280                 .product       = "SYMMETRIX",
281                 .features      = DEFAULT_FEATURES,
282                 .hwhandler     = DEFAULT_HWHANDLER,
283                 .selector      = DEFAULT_SELECTOR,
284                 .pgpolicy      = MULTIBUS,
285                 .pgfailback    = FAILBACK_UNDEF,
286                 .rr_weight     = RR_WEIGHT_NONE,
287                 .no_path_retry = 6,
288                 .minio         = DEFAULT_MINIO,
289                 .minio_rq      = DEFAULT_MINIO_RQ,
290                 .checker_name  = TUR,
291                 .prio_name     = DEFAULT_PRIO,
292                 .prio_args     = NULL,
293         },
294         {
295                 .vendor        = "DGC",
296                 .product       = ".*",
297                 .bl_product    = "LUNZ",
298                 .features      = "1 queue_if_no_path",
299                 .hwhandler     = "1 emc",
300                 .selector      = DEFAULT_SELECTOR,
301                 .pgpolicy      = GROUP_BY_PRIO,
302                 .pgfailback    = -FAILBACK_IMMEDIATE,
303                 .rr_weight     = RR_WEIGHT_NONE,
304                 .no_path_retry = (300 / DEFAULT_CHECKINT),
305                 .minio         = DEFAULT_MINIO,
306                 .minio_rq      = DEFAULT_MINIO_RQ,
307                 .checker_name  = EMC_CLARIION,
308                 .prio_name     = PRIO_EMC,
309                 .prio_args     = NULL,
310         },
311         {
312                 .vendor        = "EMC",
313                 .product       = "Invista",
314                 .bl_product    = "LUNZ",
315                 .features      = DEFAULT_FEATURES,
316                 .hwhandler     = DEFAULT_HWHANDLER,
317                 .selector      = DEFAULT_SELECTOR,
318                 .pgpolicy      = MULTIBUS,
319                 .pgfailback    = FAILBACK_UNDEF,
320                 .rr_weight     = RR_WEIGHT_NONE,
321                 .no_path_retry = 5,
322                 .minio         = DEFAULT_MINIO,
323                 .minio_rq      = DEFAULT_MINIO_RQ,
324                 .checker_name  = TUR,
325                 .prio_name     = DEFAULT_PRIO,
326                 .prio_args     = NULL,
327         },
328         /*
329          * Fujitsu controller family
330          *
331          * Maintainer : Christophe Varoqui
332          * Mail : christophe.varoqui@opensvc.com
333          */
334         {
335                 .vendor        = "FSC",
336                 .product       = "CentricStor",
337                 .features      = DEFAULT_FEATURES,
338                 .hwhandler     = DEFAULT_HWHANDLER,
339                 .selector      = DEFAULT_SELECTOR,
340                 .pgpolicy      = GROUP_BY_SERIAL,
341                 .pgfailback    = FAILBACK_UNDEF,
342                 .rr_weight     = RR_WEIGHT_NONE,
343                 .no_path_retry = NO_PATH_RETRY_UNDEF,
344                 .minio         = DEFAULT_MINIO,
345                 .minio_rq      = DEFAULT_MINIO_RQ,
346                 .checker_name  = DIRECTIO,
347                 .prio_name     = DEFAULT_PRIO,
348                 .prio_args     = NULL,
349         },
350         {
351                 .vendor        = "FUJITSU",
352                 .product       = "ETERNUS_DX(L|400|8000)",
353                 .features      = "1 queue_if_no_path",
354                 .hwhandler     = DEFAULT_HWHANDLER,
355                 .selector      = DEFAULT_SELECTOR,
356                 .pgpolicy      = GROUP_BY_PRIO,
357                 .pgfailback    = -FAILBACK_IMMEDIATE,
358                 .rr_weight     = RR_WEIGHT_NONE,
359                 .no_path_retry = 10,
360                 .minio         = DEFAULT_MINIO,
361                 .checker_name  = TUR,
362                 .prio_name     = PRIO_ALUA,
363                 .prio_args     = NULL,
364         },
365         /*
366          * Hitachi controller family
367          *
368          * Maintainer : Matthias Rudolph
369          * Mail : matthias.rudolph@hds.com
370          */
371         {
372                 .vendor        = "(HITACHI|HP)",
373                 .product       = "OPEN-.*",
374                 .features      = DEFAULT_FEATURES,
375                 .hwhandler     = DEFAULT_HWHANDLER,
376                 .selector      = DEFAULT_SELECTOR,
377                 .pgpolicy      = MULTIBUS,
378                 .pgfailback    = FAILBACK_UNDEF,
379                 .rr_weight     = RR_WEIGHT_NONE,
380                 .no_path_retry = NO_PATH_RETRY_UNDEF,
381                 .minio         = DEFAULT_MINIO,
382                 .minio_rq      = DEFAULT_MINIO_RQ,
383                 .checker_name  = TUR,
384                 .prio_name     = DEFAULT_PRIO,
385                 .prio_args     = NULL,
386         },
387         {
388                 .vendor        = "HITACHI",
389                 .product       = "DF.*",
390                 .features      = "1 queue_if_no_path",
391                 .hwhandler     = DEFAULT_HWHANDLER,
392                 .selector      = DEFAULT_SELECTOR,
393                 .pgpolicy      = GROUP_BY_PRIO,
394                 .pgfailback    = -FAILBACK_IMMEDIATE,
395                 .rr_weight     = RR_WEIGHT_NONE,
396                 .no_path_retry = NO_PATH_RETRY_UNDEF,
397                 .minio         = DEFAULT_MINIO,
398                 .minio_rq      = DEFAULT_MINIO_RQ,
399                 .checker_name  = TUR,
400                 .prio_name     = PRIO_HDS,
401                 .prio_args     = NULL,
402         },
403         /*
404          * IBM controller family
405          *
406          * Maintainer : Hannes Reinecke, SuSE
407          * Mail : hare@suse.de
408          */
409         {
410                 .vendor        = "IBM",
411                 .product       = "ProFibre 4000R",
412                 .features      = DEFAULT_FEATURES,
413                 .hwhandler     = DEFAULT_HWHANDLER,
414                 .selector      = DEFAULT_SELECTOR,
415                 .pgpolicy      = MULTIBUS,
416                 .pgfailback    = FAILBACK_UNDEF,
417                 .rr_weight     = RR_WEIGHT_NONE,
418                 .no_path_retry = NO_PATH_RETRY_UNDEF,
419                 .minio         = DEFAULT_MINIO,
420                 .minio_rq      = DEFAULT_MINIO_RQ,
421                 .checker_name  = DIRECTIO,
422                 .prio_name     = DEFAULT_PRIO,
423                 .prio_args     = NULL,
424         },
425         {
426                 /* IBM FAStT 1722-600 */
427                 .vendor        = "IBM",
428                 .product       = "^1722-600",
429                 .bl_product    = "Universal Xport",
430                 .features      = "1 queue_if_no_path",
431                 .hwhandler     = "1 rdac",
432                 .selector      = DEFAULT_SELECTOR,
433                 .pgpolicy      = GROUP_BY_PRIO,
434                 .pgfailback    = -FAILBACK_IMMEDIATE,
435                 .rr_weight     = RR_WEIGHT_NONE,
436                 .no_path_retry = 300,
437                 .minio         = DEFAULT_MINIO,
438                 .minio_rq      = DEFAULT_MINIO_RQ,
439                 .checker_name  = RDAC,
440                 .prio_name     = PRIO_RDAC,
441                 .prio_args     = NULL,
442         },
443         {
444                 /* IBM DS4100 */
445                 .vendor        = "IBM",
446                 .product       = "^1724",
447                 .bl_product    = "Universal Xport",
448                 .features      = "1 queue_if_no_path",
449                 .hwhandler     = "1 rdac",
450                 .selector      = DEFAULT_SELECTOR,
451                 .pgpolicy      = GROUP_BY_PRIO,
452                 .pgfailback    = -FAILBACK_IMMEDIATE,
453                 .rr_weight     = RR_WEIGHT_NONE,
454                 .no_path_retry = 300,
455                 .minio         = DEFAULT_MINIO,
456                 .minio_rq      = DEFAULT_MINIO_RQ,
457                 .checker_name  = RDAC,
458                 .prio_name     = PRIO_RDAC,
459                 .prio_args     = NULL,
460         },
461         {
462                 /* IBM DS3200 / DS3300 / DS3400 */
463                 .vendor        = "IBM",
464                 .product       = "^1726",
465                 .bl_product    = "Universal Xport",
466                 .features      = "1 queue_if_no_path",
467                 .hwhandler     = "1 rdac",
468                 .selector      = DEFAULT_SELECTOR,
469                 .pgpolicy      = GROUP_BY_PRIO,
470                 .pgfailback    = -FAILBACK_IMMEDIATE,
471                 .rr_weight     = RR_WEIGHT_NONE,
472                 .no_path_retry = 300,
473                 .minio         = DEFAULT_MINIO,
474                 .minio_rq      = DEFAULT_MINIO_RQ,
475                 .checker_name  = RDAC,
476                 .prio_name     = PRIO_RDAC,
477                 .prio_args     = NULL,
478         },
479         {
480                 /* IBM DS4400 / DS4500 / FAStT700 */
481                 .vendor        = "IBM",
482                 .product       = "^1742",
483                 .bl_product    = "Universal Xport",
484                 .features      = DEFAULT_FEATURES,
485                 .hwhandler     = "1 rdac",
486                 .selector      = DEFAULT_SELECTOR,
487                 .pgpolicy      = GROUP_BY_PRIO,
488                 .pgfailback    = -FAILBACK_IMMEDIATE,
489                 .rr_weight     = RR_WEIGHT_NONE,
490                 .no_path_retry = NO_PATH_RETRY_QUEUE,
491                 .minio         = DEFAULT_MINIO,
492                 .minio_rq      = DEFAULT_MINIO_RQ,
493                 .checker_name  = RDAC,
494                 .prio_name     = PRIO_RDAC,
495                 .prio_args     = NULL,
496         },
497         {
498                 .vendor        = "IBM",
499                 .product       = "^1745|^1746",
500                 .bl_product    = "Universal Xport",
501                 .features      = "2 pg_init_retries 50",
502                 .hwhandler     = "1 rdac",
503                 .selector      = DEFAULT_SELECTOR,
504                 .pgpolicy      = GROUP_BY_PRIO,
505                 .pgfailback    = -FAILBACK_IMMEDIATE,
506                 .rr_weight     = RR_WEIGHT_NONE,
507                 .no_path_retry = 15,
508                 .minio         = DEFAULT_MINIO,
509                 .minio_rq      = DEFAULT_MINIO_RQ,
510                 .checker_name  = RDAC,
511                 .prio_name     = PRIO_RDAC,
512                 .prio_args     = NULL,
513         },
514         {
515             /* IBM DS4700 */
516                 .vendor        = "IBM",
517                 .product       = "^1814",
518                 .bl_product    = "Universal Xport",
519                 .features      = DEFAULT_FEATURES,
520                 .hwhandler     = "1 rdac",
521                 .selector      = DEFAULT_SELECTOR,
522                 .pgpolicy      = GROUP_BY_PRIO,
523                 .pgfailback    = -FAILBACK_IMMEDIATE,
524                 .rr_weight     = RR_WEIGHT_NONE,
525                 .no_path_retry = NO_PATH_RETRY_QUEUE,
526                 .minio         = DEFAULT_MINIO,
527                 .minio_rq      = DEFAULT_MINIO_RQ,
528                 .checker_name  = RDAC,
529                 .prio_name     = PRIO_RDAC,
530                 .prio_args     = NULL,
531         },
532         {
533             /* IBM DS4800 */
534                 .vendor        = "IBM",
535                 .product       = "^1815",
536                 .bl_product    = "Universal Xport",
537                 .features      = DEFAULT_FEATURES,
538                 .hwhandler     = "1 rdac",
539                 .selector      = DEFAULT_SELECTOR,
540                 .pgpolicy      = GROUP_BY_PRIO,
541                 .pgfailback    = -FAILBACK_IMMEDIATE,
542                 .rr_weight     = RR_WEIGHT_NONE,
543                 .no_path_retry = NO_PATH_RETRY_QUEUE,
544                 .minio         = DEFAULT_MINIO,
545                 .minio_rq      = DEFAULT_MINIO_RQ,
546                 .checker_name  = RDAC,
547                 .prio_name     = PRIO_RDAC,
548                 .prio_args     = NULL,
549         },
550         {
551             /* IBM DS5000 */
552                 .vendor        = "IBM",
553                 .product       = "^1818",
554                 .bl_product    = "Universal Xport",
555                 .features      = DEFAULT_FEATURES,
556                 .hwhandler     = "1 rdac",
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                 .minio_rq      = DEFAULT_MINIO_RQ,
564                 .checker_name  = RDAC,
565                 .prio_name     = PRIO_RDAC,
566                 .prio_args     = NULL,
567         },
568         {
569                 /* IBM Netfinity Fibre Channel RAID Controller Unit */
570                 .vendor        = "IBM",
571                 .product       = "^3526",
572                 .bl_product    = "Universal Xport",
573                 .features      = DEFAULT_FEATURES,
574                 .hwhandler     = "1 rdac",
575                 .selector      = DEFAULT_SELECTOR,
576                 .pgpolicy      = GROUP_BY_PRIO,
577                 .pgfailback    = -FAILBACK_IMMEDIATE,
578                 .rr_weight     = RR_WEIGHT_NONE,
579                 .no_path_retry = NO_PATH_RETRY_QUEUE,
580                 .minio         = DEFAULT_MINIO,
581                 .minio_rq      = DEFAULT_MINIO_RQ,
582                 .checker_name  = RDAC,
583                 .prio_name     = PRIO_RDAC,
584                 .prio_args     = NULL,
585         },
586         {
587                 /* IBM DS4200 / FAStT200 */
588                 .vendor        = "IBM",
589                 .product       = "^3542",
590                 .features      = DEFAULT_FEATURES,
591                 .hwhandler     = DEFAULT_HWHANDLER,
592                 .selector      = DEFAULT_SELECTOR,
593                 .pgpolicy      = GROUP_BY_SERIAL,
594                 .pgfailback    = FAILBACK_UNDEF,
595                 .rr_weight     = RR_WEIGHT_NONE,
596                 .no_path_retry = NO_PATH_RETRY_UNDEF,
597                 .minio         = DEFAULT_MINIO,
598                 .minio_rq      = DEFAULT_MINIO_RQ,
599                 .checker_name  = TUR,
600                 .prio_name     = DEFAULT_PRIO,
601                 .prio_args     = NULL,
602         },
603         {
604                 /* IBM ESS F20 aka Shark */
605                 .vendor        = "IBM",
606                 .product       = "^2105800",
607                 .features      = "1 queue_if_no_path",
608                 .hwhandler     = DEFAULT_HWHANDLER,
609                 .selector      = DEFAULT_SELECTOR,
610                 .pgpolicy      = GROUP_BY_SERIAL,
611                 .pgfailback    = FAILBACK_UNDEF,
612                 .rr_weight     = RR_WEIGHT_NONE,
613                 .no_path_retry = NO_PATH_RETRY_UNDEF,
614                 .minio         = DEFAULT_MINIO,
615                 .minio_rq      = DEFAULT_MINIO_RQ,
616                 .checker_name  = TUR,
617                 .prio_name     = DEFAULT_PRIO,
618                 .prio_args     = NULL,
619         },
620         {
621                 /* IBM ESS F20 aka Shark */
622                 .vendor        = "IBM",
623                 .product       = "^2105F20",
624                 .features      = "1 queue_if_no_path",
625                 .hwhandler     = DEFAULT_HWHANDLER,
626                 .selector      = DEFAULT_SELECTOR,
627                 .pgpolicy      = GROUP_BY_SERIAL,
628                 .pgfailback    = FAILBACK_UNDEF,
629                 .rr_weight     = RR_WEIGHT_NONE,
630                 .no_path_retry = NO_PATH_RETRY_UNDEF,
631                 .minio         = DEFAULT_MINIO,
632                 .minio_rq      = DEFAULT_MINIO_RQ,
633                 .checker_name  = TUR,
634                 .prio_name     = DEFAULT_PRIO,
635                 .prio_args     = NULL,
636         },
637         {
638                 /* IBM DS6000 */
639                 .vendor        = "IBM",
640                 .product       = "^1750500",
641                 .features      = "1 queue_if_no_path",
642                 .hwhandler     = DEFAULT_HWHANDLER,
643                 .selector      = DEFAULT_SELECTOR,
644                 .pgpolicy      = GROUP_BY_PRIO,
645                 .pgfailback    = -FAILBACK_IMMEDIATE,
646                 .rr_weight     = RR_WEIGHT_NONE,
647                 .no_path_retry = NO_PATH_RETRY_UNDEF,
648                 .minio         = DEFAULT_MINIO,
649                 .minio_rq      = DEFAULT_MINIO_RQ,
650                 .checker_name  = TUR,
651                 .prio_name     = PRIO_ALUA,
652                 .prio_args     = NULL,
653         },
654         {
655                 /* IBM DS8000 */
656                 .vendor        = "IBM",
657                 .product       = "^2107900",
658                 .features      = "1 queue_if_no_path",
659                 .hwhandler     = DEFAULT_HWHANDLER,
660                 .selector      = DEFAULT_SELECTOR,
661                 .pgpolicy      = MULTIBUS,
662                 .pgfailback    = FAILBACK_UNDEF,
663                 .rr_weight     = RR_WEIGHT_NONE,
664                 .no_path_retry = NO_PATH_RETRY_UNDEF,
665                 .minio         = DEFAULT_MINIO,
666                 .minio_rq      = DEFAULT_MINIO_RQ,
667                 .checker_name  = TUR,
668                 .prio_name     = DEFAULT_PRIO,
669                 .prio_args     = NULL,
670         },
671         {
672                 /* IBM SAN Volume Controller */
673                 .vendor        = "IBM",
674                 .product       = "^2145",
675                 .features      = "1 queue_if_no_path",
676                 .hwhandler     = DEFAULT_HWHANDLER,
677                 .selector      = DEFAULT_SELECTOR,
678                 .pgpolicy      = GROUP_BY_PRIO,
679                 .pgfailback    = -FAILBACK_IMMEDIATE,
680                 .rr_weight     = RR_WEIGHT_NONE,
681                 .no_path_retry = NO_PATH_RETRY_UNDEF,
682                 .minio         = DEFAULT_MINIO,
683                 .minio_rq      = DEFAULT_MINIO_RQ,
684                 .checker_name  = TUR,
685                 .prio_name     = PRIO_ALUA,
686                 .prio_args     = NULL,
687         },
688         {
689                 /* IBM S/390 ECKD DASD */
690                 .vendor        = "IBM",
691                 .product       = "S/390 DASD ECKD",
692                 .bl_product       = "S/390.*",
693                 .uid_attribute = "ID_UID",
694                 .features      = "1 queue_if_no_path",
695                 .hwhandler     = DEFAULT_HWHANDLER,
696                 .selector      = DEFAULT_SELECTOR,
697                 .pgpolicy      = MULTIBUS,
698                 .pgfailback    = FAILBACK_UNDEF,
699                 .rr_weight     = RR_WEIGHT_NONE,
700                 .no_path_retry = NO_PATH_RETRY_UNDEF,
701                 .minio         = DEFAULT_MINIO,
702                 .minio_rq      = DEFAULT_MINIO_RQ,
703                 .checker_name  = DIRECTIO,
704                 .prio_name     = DEFAULT_PRIO,
705                 .prio_args     = NULL,
706         },
707         {
708                 /* IBM S/390 FBA DASD */
709                 .vendor        = "IBM",
710                 .product       = "S/390 DASD FBA",
711                 .bl_product       = "S/390.*",
712                 .uid_attribute = "ID_UID",
713                 .features      = "1 queue_if_no_path",
714                 .hwhandler     = DEFAULT_HWHANDLER,
715                 .selector      = DEFAULT_SELECTOR,
716                 .pgpolicy      = MULTIBUS,
717                 .pgfailback    = FAILBACK_UNDEF,
718                 .rr_weight     = RR_WEIGHT_NONE,
719                 .no_path_retry = NO_PATH_RETRY_UNDEF,
720                 .minio         = DEFAULT_MINIO,
721                 .minio_rq      = DEFAULT_MINIO_RQ,
722                 .checker_name  = DIRECTIO,
723                 .prio_name     = DEFAULT_PRIO,
724                 .prio_args     = NULL,
725         },
726         {
727                 /* IBM IPR */
728                 .vendor        = "IBM",
729                 .product       = "^IPR.*",
730                 .features      = "1 queue_if_no_path",
731                 .hwhandler     = "1 alua",
732                 .selector      = DEFAULT_SELECTOR,
733                 .pgpolicy      = GROUP_BY_PRIO,
734                 .pgfailback    = -FAILBACK_IMMEDIATE,
735                 .rr_weight     = RR_WEIGHT_NONE,
736                 .no_path_retry = NO_PATH_RETRY_UNDEF,
737                 .minio         = DEFAULT_MINIO,
738                 .minio_rq      = DEFAULT_MINIO_RQ,
739                 .checker_name  = TUR,
740                 .prio_name     = PRIO_ALUA,
741                 .prio_args     = NULL,
742         },
743         {
744                 /* IBM RSSM */
745                 .vendor        = "IBM",
746                 .product       = "1820N00",
747                 .features      = DEFAULT_FEATURES,
748                 .hwhandler     = DEFAULT_HWHANDLER,
749                 .selector      = DEFAULT_SELECTOR,
750                 .pgpolicy      = GROUP_BY_PRIO,
751                 .pgfailback    = -FAILBACK_IMMEDIATE,
752                 .rr_weight     = RR_WEIGHT_NONE,
753                 .no_path_retry = NO_PATH_RETRY_QUEUE,
754                 .minio         = 100,
755                 .minio_rq      = DEFAULT_MINIO_RQ,
756                 .checker_name  = TUR,
757                 .prio_name     = PRIO_ALUA,
758                 .prio_args     = NULL,
759         },
760         {
761             /* IBM XIV Storage System */
762                 .vendor        = "IBM",
763                 .product       = "2810XIV",
764                 .features      = "1 queue_if_no_path",
765                 .hwhandler     = DEFAULT_HWHANDLER,
766                 .selector      = DEFAULT_SELECTOR,
767                 .pgpolicy      = MULTIBUS,
768                 .pgfailback    = 15,
769                 .rr_weight     = RR_WEIGHT_NONE,
770                 .no_path_retry = NO_PATH_RETRY_UNDEF,
771                 .minio         = 15,
772                 .minio_rq      = DEFAULT_MINIO_RQ,
773                 .checker_name  = TUR,
774                 .prio_name     = DEFAULT_PRIO,
775                 .prio_args     = NULL,
776         },
777         /*
778          * IBM Power Virtual SCSI Devices
779          *
780          * Maintainer : Brian King, IBM
781          * Mail : brking@linux.vnet.ibm.com
782          */
783         {
784                 /* AIX VDASD */
785                 .vendor        = "AIX",
786                 .product       = "VDASD",
787                 .features      = DEFAULT_FEATURES,
788                 .hwhandler     = DEFAULT_HWHANDLER,
789                 .selector      = DEFAULT_SELECTOR,
790                 .pgpolicy      = MULTIBUS,
791                 .pgfailback    = -FAILBACK_IMMEDIATE,
792                 .rr_weight     = RR_WEIGHT_NONE,
793                 .no_path_retry = (300 / DEFAULT_CHECKINT),
794                 .minio         = DEFAULT_MINIO,
795                 .minio_rq      = DEFAULT_MINIO_RQ,
796                 .checker_name  = DIRECTIO,
797                 .prio_name     = DEFAULT_PRIO,
798                 .prio_args     = NULL,
799         },
800         {
801                 /* IBM 3303      NVDISK */
802                 .vendor        = "IBM",
803                 .product       = "3303      NVDISK",
804                 .features      = DEFAULT_FEATURES,
805                 .hwhandler     = DEFAULT_HWHANDLER,
806                 .selector      = DEFAULT_SELECTOR,
807                 .pgpolicy      = FAILOVER,
808                 .pgfailback    = -FAILBACK_IMMEDIATE,
809                 .rr_weight     = RR_WEIGHT_NONE,
810                 .no_path_retry = (300 / DEFAULT_CHECKINT),
811                 .minio         = DEFAULT_MINIO,
812                 .minio_rq      = DEFAULT_MINIO_RQ,
813                 .checker_name  = TUR,
814                 .prio_name     = DEFAULT_PRIO,
815                 .prio_args     = NULL,
816         },
817         {
818                 /* AIX NVDISK */
819                 .vendor        = "AIX",
820                 .product       = "NVDISK",
821                 .features      = DEFAULT_FEATURES,
822                 .hwhandler     = "1 alua",
823                 .selector      = DEFAULT_SELECTOR,
824                 .pgpolicy      = GROUP_BY_PRIO,
825                 .pgfailback    = -FAILBACK_IMMEDIATE,
826                 .rr_weight     = RR_WEIGHT_NONE,
827                 .no_path_retry = (300 / DEFAULT_CHECKINT),
828                 .minio         = DEFAULT_MINIO,
829                 .minio_rq      = DEFAULT_MINIO_RQ,
830                 .checker_name  = TUR,
831                 .prio_name     = PRIO_ALUA,
832                 .prio_args     = NULL,
833         },
834         {
835                 /* DELL MD3000 */
836                 .vendor        = "DELL",
837                 .product       = "MD3000",
838                 .bl_product    = "Universal Xport",
839                 .features      = "2 pg_init_retries 50",
840                 .hwhandler     = "1 rdac",
841                 .selector      = DEFAULT_SELECTOR,
842                 .pgpolicy      = GROUP_BY_PRIO,
843                 .pgfailback    = -FAILBACK_IMMEDIATE,
844                 .rr_weight     = RR_WEIGHT_NONE,
845                 .no_path_retry = 15,
846                 .minio         = DEFAULT_MINIO,
847                 .minio_rq      = DEFAULT_MINIO_RQ,
848                 .checker_name  = RDAC,
849                 .prio_name     = PRIO_RDAC,
850                 .prio_args     = NULL,
851         },
852         {
853                 /* DELL MD3000i */
854                 .vendor        = "DELL",
855                 .product       = "MD3000i",
856                 .bl_product    = "Universal Xport",
857                 .features      = "2 pg_init_retries 50",
858                 .hwhandler     = "1 rdac",
859                 .selector      = DEFAULT_SELECTOR,
860                 .pgpolicy      = GROUP_BY_PRIO,
861                 .pgfailback    = -FAILBACK_IMMEDIATE,
862                 .rr_weight     = RR_WEIGHT_NONE,
863                 .no_path_retry = 15,
864                 .minio         = DEFAULT_MINIO,
865                 .minio_rq      = DEFAULT_MINIO_RQ,
866                 .checker_name  = RDAC,
867                 .prio_name     = PRIO_RDAC,
868                 .prio_args     = NULL,
869         },
870         {
871                 /* DELL MD32xx */
872                 .vendor        = "DELL",
873                 .product       = "MD32xx",
874                 .bl_product    = "Universal Xport",
875                 .features      = "2 pg_init_retries 50",
876                 .hwhandler     = "1 rdac",
877                 .selector      = DEFAULT_SELECTOR,
878                 .pgpolicy      = GROUP_BY_PRIO,
879                 .pgfailback    = -FAILBACK_IMMEDIATE,
880                 .rr_weight     = RR_WEIGHT_NONE,
881                 .no_path_retry = 15,
882                 .minio         = DEFAULT_MINIO,
883                 .minio_rq      = DEFAULT_MINIO_RQ,
884                 .checker_name  = RDAC,
885                 .prio_name     = PRIO_RDAC,
886                 .prio_args     = NULL,
887         },
888         {
889                 /* DELL MD32xxi */
890                 .vendor        = "DELL",
891                 .product       = "MD32xxi",
892                 .bl_product    = "Universal Xport",
893                 .features      = "2 pg_init_retries 50",
894                 .hwhandler     = "1 rdac",
895                 .selector      = DEFAULT_SELECTOR,
896                 .pgpolicy      = GROUP_BY_PRIO,
897                 .pgfailback    = -FAILBACK_IMMEDIATE,
898                 .rr_weight     = RR_WEIGHT_NONE,
899                 .no_path_retry = 15,
900                 .minio         = DEFAULT_MINIO,
901                 .minio_rq      = DEFAULT_MINIO_RQ,
902                 .checker_name  = RDAC,
903                 .prio_name     = PRIO_RDAC,
904                 .prio_args     = NULL,
905         },
906         /*
907          * NETAPP controller family
908          *
909          * Maintainer : Dave Wysochanski
910          * Mail : davidw@netapp.com
911          */
912         {
913                 .vendor        = "NETAPP",
914                 .product       = "LUN.*",
915                 .features      = "1 queue_if_no_path",
916                 .hwhandler     = DEFAULT_HWHANDLER,
917                 .selector      = DEFAULT_SELECTOR,
918                 .pgpolicy      = GROUP_BY_PRIO,
919                 .pgfailback    = -FAILBACK_IMMEDIATE,
920                 .rr_weight     = RR_WEIGHT_NONE,
921                 .no_path_retry = NO_PATH_RETRY_UNDEF,
922                 .minio         = 128,
923                 .checker_name  = TUR,
924                 .prio_name     = PRIO_ONTAP,
925                 .prio_args     = NULL,
926         },
927         /*
928          * NEXENTA/COMSTAR controller family
929          *
930          * Maintainer : Yacine Kheddache
931          * Mail : yacine@alyseo.com
932          */
933         {
934                 .vendor        = "NEXENTA",
935                 .product       = "COMSTAR",
936                 .features      = "1 queue_if_no_path",
937                 .hwhandler     = DEFAULT_HWHANDLER,
938                 .selector      = DEFAULT_SELECTOR,
939                 .pgpolicy      = GROUP_BY_SERIAL,
940                 .pgfailback    = -FAILBACK_IMMEDIATE,
941                 .rr_weight     = RR_WEIGHT_NONE,
942                 .no_path_retry = 30,
943                 .minio         = 128,
944                 .checker_name  = DIRECTIO,
945                 .prio_name     = DEFAULT_PRIO,
946                 .prio_args     = NULL,
947         },
948         /*
949          * IBM NSeries (NETAPP) controller family
950          *
951          * Maintainer : Dave Wysochanski
952          * Mail : davidw@netapp.com
953          */
954         {
955                 .vendor        = "IBM",
956                 .product       = "Nseries.*",
957                 .features      = "1 queue_if_no_path",
958                 .hwhandler     = DEFAULT_HWHANDLER,
959                 .selector      = DEFAULT_SELECTOR,
960                 .pgpolicy      = GROUP_BY_PRIO,
961                 .pgfailback    = -FAILBACK_IMMEDIATE,
962                 .rr_weight     = RR_WEIGHT_NONE,
963                 .no_path_retry = NO_PATH_RETRY_UNDEF,
964                 .minio         = 128,
965                 .checker_name  = DIRECTIO,
966                 .prio_name     = PRIO_ONTAP,
967                 .prio_args     = NULL,
968         },
969         /*
970          * Pillar Data controller family
971          *
972          * Maintainer : Srinivasan Ramani
973          * Mail : sramani@pillardata.com
974          */
975         {
976                 .vendor        = "Pillar",
977                 .product       = "Axiom.*",
978                 .features      = DEFAULT_FEATURES,
979                 .hwhandler     = DEFAULT_HWHANDLER,
980                 .selector      = DEFAULT_SELECTOR,
981                 .pgpolicy      = GROUP_BY_PRIO,
982                 .pgfailback    = FAILBACK_UNDEF,
983                 .rr_weight     = RR_WEIGHT_NONE,
984                 .no_path_retry = NO_PATH_RETRY_UNDEF,
985                 .minio         = DEFAULT_MINIO,
986                 .minio_rq      = DEFAULT_MINIO_RQ,
987                 .checker_name  = TUR,
988                 .prio_name     = PRIO_ALUA,
989                 .prio_args     = NULL,
990         },
991
992         /*
993          * SGI arrays
994          *
995          * Maintainer : Christophe Varoqui
996          * Mail : christophe.varoqui@opensvc.com
997          */
998         {
999                 .vendor        = "SGI",
1000                 .product       = "TP9[13]00",
1001                 .features      = DEFAULT_FEATURES,
1002                 .hwhandler     = DEFAULT_HWHANDLER,
1003                 .selector      = DEFAULT_SELECTOR,
1004                 .pgpolicy      = MULTIBUS,
1005                 .pgfailback    = FAILBACK_UNDEF,
1006                 .rr_weight     = RR_WEIGHT_NONE,
1007                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1008                 .minio         = DEFAULT_MINIO,
1009                 .minio_rq      = DEFAULT_MINIO_RQ,
1010                 .checker_name  = DIRECTIO,
1011                 .prio_name     = DEFAULT_PRIO,
1012                 .prio_args     = NULL,
1013         },
1014         {
1015                 .vendor        = "SGI",
1016                 .product       = "TP9[45]00",
1017                 .bl_product    = "Universal Xport",
1018                 .features      = DEFAULT_FEATURES,
1019                 .hwhandler     = "1 rdac",
1020                 .selector      = DEFAULT_SELECTOR,
1021                 .pgpolicy      = GROUP_BY_PRIO,
1022                 .pgfailback    = -FAILBACK_IMMEDIATE,
1023                 .rr_weight     = RR_WEIGHT_NONE,
1024                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1025                 .minio         = DEFAULT_MINIO,
1026                 .minio_rq      = DEFAULT_MINIO_RQ,
1027                 .checker_name  = RDAC,
1028                 .prio_name     = PRIO_RDAC,
1029                 .prio_args     = NULL,
1030         },
1031         {
1032                 .vendor        = "SGI",
1033                 .product       = "IS.*",
1034                 .bl_product    = "Universal Xport",
1035                 .features      = "2 pg_init_retries 50",
1036                 .hwhandler     = "1 rdac",
1037                 .selector      = DEFAULT_SELECTOR,
1038                 .pgpolicy      = GROUP_BY_PRIO,
1039                 .pgfailback    = -FAILBACK_IMMEDIATE,
1040                 .rr_weight     = RR_WEIGHT_NONE,
1041                 .no_path_retry = 15,
1042                 .minio         = DEFAULT_MINIO,
1043                 .minio_rq      = DEFAULT_MINIO_RQ,
1044                 .checker_name  = RDAC,
1045                 .prio_name     = PRIO_RDAC,
1046                 .prio_args     = NULL,
1047         },
1048         /* NEC Storage M Series */
1049         {
1050                 .vendor        = "NEC",
1051                 .product       = "DISK ARRAY",
1052                 .features      = DEFAULT_FEATURES,
1053                 .hwhandler     = "1 alua",
1054                 .selector      = DEFAULT_SELECTOR,
1055                 .pgpolicy      = GROUP_BY_PRIO,
1056                 .pgfailback    = -FAILBACK_IMMEDIATE,
1057                 .rr_weight     = RR_WEIGHT_NONE,
1058                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1059                 .minio         = DEFAULT_MINIO,
1060                 .minio_rq      = DEFAULT_MINIO_RQ,
1061                 .checker_name  = TUR,
1062                 .prio_name     = PRIO_ALUA,
1063                 .prio_args     = NULL,
1064         },
1065         /*
1066          * STK arrays
1067          *
1068          * Maintainer : Christophe Varoqui
1069          * Mail : christophe.varoqui@opensvc.com
1070          */
1071         {
1072                 .vendor        = "STK",
1073                 .product       = "OPENstorage D280",
1074                 .bl_product    = "Universal Xport",
1075                 .features      = DEFAULT_FEATURES,
1076                 .hwhandler     = "1 rdac",
1077                 .selector      = DEFAULT_SELECTOR,
1078                 .pgpolicy      = GROUP_BY_PRIO,
1079                 .pgfailback    = -FAILBACK_IMMEDIATE,
1080                 .rr_weight     = RR_WEIGHT_NONE,
1081                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1082                 .minio         = DEFAULT_MINIO,
1083                 .minio_rq      = DEFAULT_MINIO_RQ,
1084                 .checker_name  = TUR,
1085                 .prio_name     = PRIO_RDAC,
1086                 .prio_args     = NULL,
1087         },
1088         /*
1089          * SUN arrays
1090          *
1091          * Maintainer : Christophe Varoqui
1092          * Mail : christophe.varoqui@opensvc.com
1093          */
1094         {
1095                 .vendor        = "SUN",
1096                 .product       = "(StorEdge 3510|T4)",
1097                 .features      = DEFAULT_FEATURES,
1098                 .hwhandler     = DEFAULT_HWHANDLER,
1099                 .selector      = DEFAULT_SELECTOR,
1100                 .pgpolicy      = MULTIBUS,
1101                 .pgfailback    = FAILBACK_UNDEF,
1102                 .rr_weight     = RR_WEIGHT_NONE,
1103                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1104                 .minio         = DEFAULT_MINIO,
1105                 .minio_rq      = DEFAULT_MINIO_RQ,
1106                 .checker_name  = DIRECTIO,
1107                 .prio_name     = DEFAULT_PRIO,
1108                 .prio_args     = NULL,
1109         },
1110         {
1111                 .vendor        = "EUROLOGC",
1112                 .product       = "FC2502",
1113                 .features      = DEFAULT_FEATURES,
1114                 .hwhandler     = DEFAULT_HWHANDLER,
1115                 .selector      = DEFAULT_SELECTOR,
1116                 .pgpolicy      = GROUP_BY_PRIO,
1117                 .pgfailback    = FAILBACK_UNDEF,
1118                 .rr_weight     = RR_WEIGHT_NONE,
1119                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1120                 .minio         = DEFAULT_MINIO,
1121                 .minio_rq      = DEFAULT_MINIO_RQ,
1122                 .checker_name  = DEFAULT_CHECKER,
1123                 .prio_name     = DEFAULT_PRIO,
1124                 .prio_args     = NULL,
1125         },
1126         /*
1127          * Pivot3 RAIGE
1128          *
1129          * Maintainer : Bart Brooks, Pivot3
1130          * Mail : bartb@pivot3.com
1131          */
1132         {
1133                 .vendor        = "PIVOT3",
1134                 .product       = "RAIGE VOLUME",
1135                 .features      = "1 queue_if_no_path",
1136                 .hwhandler     = DEFAULT_HWHANDLER,
1137                 .selector      = DEFAULT_SELECTOR,
1138                 .pgpolicy      = MULTIBUS,
1139                 .pgfailback    = FAILBACK_UNDEF,
1140                 .rr_weight     = RR_WEIGHT_NONE,
1141                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1142                 .minio         = 100,
1143                 .checker_name  = TUR,
1144                 .prio_name     = DEFAULT_PRIO,
1145                 .prio_args     = NULL,
1146         },
1147         {
1148                 .vendor        = "SUN",
1149                 .product       = "CSM200_R",
1150                 .bl_product    = "Universal Xport",
1151                 .features      = DEFAULT_FEATURES,
1152                 .hwhandler     = "1 rdac",
1153                 .selector      = DEFAULT_SELECTOR,
1154                 .pgpolicy      = GROUP_BY_PRIO,
1155                 .pgfailback    = -FAILBACK_IMMEDIATE,
1156                 .rr_weight     = RR_WEIGHT_NONE,
1157                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1158                 .minio         = DEFAULT_MINIO,
1159                 .minio_rq      = DEFAULT_MINIO_RQ,
1160                 .checker_name  = RDAC,
1161                 .prio_name     = PRIO_RDAC,
1162                 .prio_args     = NULL,
1163         },
1164         /* SUN/LSI 2510, 2540, 2530, 2540 */
1165         {
1166                 .vendor        = "SUN",
1167                 .product       = "LCSM100_[IEFS]",
1168                 .bl_product    = "Universal Xport",
1169                 .features      = DEFAULT_FEATURES,
1170                 .hwhandler     = "1 rdac",
1171                 .selector      = DEFAULT_SELECTOR,
1172                 .pgpolicy      = GROUP_BY_PRIO,
1173                 .pgfailback    = -FAILBACK_IMMEDIATE,
1174                 .rr_weight     = RR_WEIGHT_NONE,
1175                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1176                 .minio         = DEFAULT_MINIO,
1177                 .minio_rq      = DEFAULT_MINIO_RQ,
1178                 .checker_name  = RDAC,
1179                 .prio_name     = PRIO_RDAC,
1180                 .prio_args     = NULL,
1181         },
1182         /* LSI/Engenio/NetApp E-Series RDAC storage */
1183         {
1184                 .vendor        = "(LSI|ENGENIO)",
1185                 .product       = "INF-01-00",
1186                 .bl_product    = "Universal Xport",
1187                 .features      = "2 pg_init_retries 50",
1188                 .hwhandler     = "1 rdac",
1189                 .selector      = DEFAULT_SELECTOR,
1190                 .pgpolicy      = GROUP_BY_PRIO,
1191                 .pgfailback    = -FAILBACK_IMMEDIATE,
1192                 .rr_weight     = RR_WEIGHT_NONE,
1193                 .no_path_retry = 15,
1194                 .minio         = DEFAULT_MINIO,
1195                 .minio_rq      = DEFAULT_MINIO_RQ,
1196                 .checker_name  = RDAC,
1197                 .prio_name     = PRIO_RDAC,
1198                 .prio_args     = NULL,
1199         },
1200         {
1201                 .vendor        = "STK",
1202                 .product       = "FLEXLINE 380",
1203                 .bl_product    = "Universal Xport",
1204                 .features      = DEFAULT_FEATURES,
1205                 .hwhandler     = "1 rdac",
1206                 .selector      = DEFAULT_SELECTOR,
1207                 .pgpolicy      = GROUP_BY_PRIO,
1208                 .pgfailback    = -FAILBACK_IMMEDIATE,
1209                 .rr_weight     = RR_WEIGHT_NONE,
1210                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1211                 .minio         = DEFAULT_MINIO,
1212                 .minio_rq      = DEFAULT_MINIO_RQ,
1213                 .checker_name  = RDAC,
1214                 .prio_name     = PRIO_RDAC,
1215                 .prio_args     = NULL,
1216         },
1217         /*
1218          * EOL
1219          */
1220         {
1221                 .vendor        = NULL,
1222                 .product       = NULL,
1223                 .features      = NULL,
1224                 .hwhandler     = NULL,
1225                 .selector      = NULL,
1226                 .pgpolicy      = 0,
1227                 .pgfailback    = 0,
1228                 .rr_weight     = 0,
1229                 .no_path_retry = 0,
1230                 .minio         = 0,
1231                 .minio_rq      = 0,
1232                 .checker_name  = NULL,
1233                 .prio_name     = NULL,
1234                 .prio_args     = NULL,
1235         },
1236 };
1237
1238 extern int
1239 setup_default_hwtable (vector hw)
1240 {
1241         int r = 0;
1242         struct hwentry * hwe = default_hw;
1243
1244         while (hwe->vendor) {
1245                 r += store_hwe(hw, hwe);
1246                 hwe++;
1247         }
1248         return r;
1249 }