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