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