Merge branch 'master' of git://git.kernel.org/pub/scm/linux/storage/multipath-tools/
[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  = CCISS_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         {
764                 /* DELL MD3000 */
765                 .vendor        = "DELL",
766                 .product       = "MD3000",
767                 .getuid        = DEFAULT_GETUID,
768                 .features      = "2 pg_init_retries 50",
769                 .hwhandler     = "1 rdac",
770                 .selector      = DEFAULT_SELECTOR,
771                 .pgpolicy      = GROUP_BY_PRIO,
772                 .pgfailback    = -FAILBACK_IMMEDIATE,
773                 .rr_weight     = RR_WEIGHT_NONE,
774                 .no_path_retry = 15,
775                 .minio         = DEFAULT_MINIO,
776                 .checker_name  = RDAC,
777                 .prio_name     = PRIO_RDAC,
778                 .prio_args     = NULL,
779         },
780         {
781                 /* DELL MD3000i */
782                 .vendor        = "DELL",
783                 .product       = "MD3000i",
784                 .getuid        = DEFAULT_GETUID,
785                 .features      = "2 pg_init_retries 50",
786                 .hwhandler     = "1 rdac",
787                 .selector      = DEFAULT_SELECTOR,
788                 .pgpolicy      = GROUP_BY_PRIO,
789                 .pgfailback    = -FAILBACK_IMMEDIATE,
790                 .rr_weight     = RR_WEIGHT_NONE,
791                 .no_path_retry = 15,
792                 .minio         = DEFAULT_MINIO,
793                 .checker_name  = RDAC,
794                 .prio_name     = PRIO_RDAC,
795                 .prio_args     = NULL,
796         },
797         {
798                 /* DELL MD32xx */
799                 .vendor        = "DELL",
800                 .product       = "MD32xx",
801                 .getuid        = DEFAULT_GETUID,
802                 .features      = "2 pg_init_retries 50",
803                 .hwhandler     = "1 rdac",
804                 .selector      = DEFAULT_SELECTOR,
805                 .pgpolicy      = GROUP_BY_PRIO,
806                 .pgfailback    = -FAILBACK_IMMEDIATE,
807                 .rr_weight     = RR_WEIGHT_NONE,
808                 .no_path_retry = 15,
809                 .minio         = DEFAULT_MINIO,
810                 .checker_name  = RDAC,
811                 .prio_name     = PRIO_RDAC,
812                 .prio_args     = NULL,
813         },
814         {
815                 /* DELL MD32xxi */
816                 .vendor        = "DELL",
817                 .product       = "MD32xxi",
818                 .getuid        = DEFAULT_GETUID,
819                 .features      = "2 pg_init_retries 50",
820                 .hwhandler     = "1 rdac",
821                 .selector      = DEFAULT_SELECTOR,
822                 .pgpolicy      = GROUP_BY_PRIO,
823                 .pgfailback    = -FAILBACK_IMMEDIATE,
824                 .rr_weight     = RR_WEIGHT_NONE,
825                 .no_path_retry = 15,
826                 .minio         = DEFAULT_MINIO,
827                 .checker_name  = RDAC,
828                 .prio_name     = PRIO_RDAC,
829                 .prio_args     = NULL,
830         },
831         /*
832          * NETAPP controller family
833          *
834          * Maintainer : Dave Wysochanski
835          * Mail : davidw@netapp.com
836          */
837         {
838                 .vendor        = "NETAPP",
839                 .product       = "LUN.*",
840                 .getuid        = DEFAULT_GETUID,
841                 .features      = "1 queue_if_no_path",
842                 .hwhandler     = DEFAULT_HWHANDLER,
843                 .selector      = DEFAULT_SELECTOR,
844                 .pgpolicy      = GROUP_BY_PRIO,
845                 .pgfailback    = -FAILBACK_IMMEDIATE,
846                 .rr_weight     = RR_WEIGHT_NONE,
847                 .no_path_retry = NO_PATH_RETRY_UNDEF,
848                 .minio         = 128,
849                 .checker_name  = DIRECTIO,
850                 .prio_name     = PRIO_NETAPP,
851                 .prio_args     = NULL,
852         },
853         /*
854          * NEXENTA/COMSTAR controller family
855          *
856          * Maintainer : Yacine Kheddache
857          * Mail : yacine@alyseo.com
858          */
859         {
860                 .vendor        = "NEXENTA",
861                 .product       = "COMSTAR",
862                 .getuid        = DEFAULT_GETUID,
863                 .features      = "1 queue_if_no_path",
864                 .hwhandler     = DEFAULT_HWHANDLER,
865                 .selector      = DEFAULT_SELECTOR,
866                 .pgpolicy      = GROUP_BY_SERIAL,
867                 .pgfailback    = -FAILBACK_IMMEDIATE,
868                 .rr_weight     = RR_WEIGHT_NONE,
869                 .no_path_retry = 30,
870                 .minio         = 128,
871                 .checker_name  = DIRECTIO,
872                 .prio_name     = DEFAULT_PRIO,
873                 .prio_args     = NULL,
874         },
875         /*
876          * IBM NSeries (NETAPP) controller family
877          *
878          * Maintainer : Dave Wysochanski
879          * Mail : davidw@netapp.com
880          */
881         {
882                 .vendor        = "IBM",
883                 .product       = "Nseries.*",
884                 .getuid        = DEFAULT_GETUID,
885                 .features      = "1 queue_if_no_path",
886                 .hwhandler     = DEFAULT_HWHANDLER,
887                 .selector      = DEFAULT_SELECTOR,
888                 .pgpolicy      = GROUP_BY_PRIO,
889                 .pgfailback    = -FAILBACK_IMMEDIATE,
890                 .rr_weight     = RR_WEIGHT_NONE,
891                 .no_path_retry = NO_PATH_RETRY_UNDEF,
892                 .minio         = 128,
893                 .checker_name  = DIRECTIO,
894                 .prio_name     = PRIO_NETAPP,
895                 .prio_args     = NULL,
896         },
897         /*
898          * Pillar Data controller family
899          *
900          * Maintainer : Srinivasan Ramani
901          * Mail : sramani@pillardata.com
902          */
903         {
904                 .vendor        = "Pillar",
905                 .product       = "Axiom.*",
906                 .getuid        = DEFAULT_GETUID,
907                 .features      = DEFAULT_FEATURES,
908                 .hwhandler     = DEFAULT_HWHANDLER,
909                 .selector      = DEFAULT_SELECTOR,
910                 .pgpolicy      = GROUP_BY_PRIO,
911                 .pgfailback    = FAILBACK_UNDEF,
912                 .rr_weight     = RR_WEIGHT_NONE,
913                 .no_path_retry = NO_PATH_RETRY_UNDEF,
914                 .minio         = DEFAULT_MINIO,
915                 .checker_name  = TUR,
916                 .prio_name     = PRIO_ALUA,
917                 .prio_args     = NULL,
918         },
919         /*
920          * SGI arrays
921          *
922          * Maintainer : Christophe Varoqui
923          * Mail : christophe.varoqui@opensvc.com
924          */
925         {
926                 .vendor        = "SGI",
927                 .product       = "TP9[13]00",
928                 .getuid        = DEFAULT_GETUID,
929                 .features      = DEFAULT_FEATURES,
930                 .hwhandler     = DEFAULT_HWHANDLER,
931                 .selector      = DEFAULT_SELECTOR,
932                 .pgpolicy      = MULTIBUS,
933                 .pgfailback    = FAILBACK_UNDEF,
934                 .rr_weight     = RR_WEIGHT_NONE,
935                 .no_path_retry = NO_PATH_RETRY_UNDEF,
936                 .minio         = DEFAULT_MINIO,
937                 .checker_name  = DIRECTIO,
938                 .prio_name     = DEFAULT_PRIO,
939                 .prio_args     = NULL,
940         },
941         {
942                 .vendor        = "SGI",
943                 .product       = "TP9[45]00",
944                 .getuid        = DEFAULT_GETUID,
945                 .features      = DEFAULT_FEATURES,
946                 .hwhandler     = "1 rdac",
947                 .selector      = DEFAULT_SELECTOR,
948                 .pgpolicy      = GROUP_BY_PRIO,
949                 .pgfailback    = -FAILBACK_IMMEDIATE,
950                 .rr_weight     = RR_WEIGHT_NONE,
951                 .no_path_retry = NO_PATH_RETRY_QUEUE,
952                 .minio         = DEFAULT_MINIO,
953                 .checker_name  = RDAC,
954                 .prio_name     = PRIO_RDAC,
955                 .prio_args     = NULL,
956         },
957         {
958                 .vendor        = "SGI",
959                 .product       = "IS.*",
960                 .getuid        = DEFAULT_GETUID,
961                 .features      = DEFAULT_FEATURES,
962                 .hwhandler     = "1 rdac",
963                 .selector      = DEFAULT_SELECTOR,
964                 .pgpolicy      = GROUP_BY_PRIO,
965                 .pgfailback    = -FAILBACK_IMMEDIATE,
966                 .rr_weight     = RR_WEIGHT_NONE,
967                 .no_path_retry = NO_PATH_RETRY_QUEUE,
968                 .minio         = DEFAULT_MINIO,
969                 .checker_name  = RDAC,
970                 .prio_name     = PRIO_RDAC,
971                 .prio_args     = NULL,
972         },
973         /*
974          * STK arrays
975          *
976          * Maintainer : Christophe Varoqui
977          * Mail : christophe.varoqui@opensvc.com
978          */
979         {
980                 .vendor        = "STK",
981                 .product       = "OPENstorage D280",
982                 .getuid        = DEFAULT_GETUID,
983                 .features      = DEFAULT_FEATURES,
984                 .hwhandler     = "1 rdac",
985                 .selector      = DEFAULT_SELECTOR,
986                 .pgpolicy      = GROUP_BY_PRIO,
987                 .pgfailback    = -FAILBACK_IMMEDIATE,
988                 .rr_weight     = RR_WEIGHT_NONE,
989                 .no_path_retry = NO_PATH_RETRY_UNDEF,
990                 .minio         = DEFAULT_MINIO,
991                 .checker_name  = TUR,
992                 .prio_name     = PRIO_RDAC,
993                 .prio_args     = NULL,
994         },
995         /*
996          * SUN arrays
997          *
998          * Maintainer : Christophe Varoqui
999          * Mail : christophe.varoqui@opensvc.com
1000          */
1001         {
1002                 .vendor        = "SUN",
1003                 .product       = "(StorEdge 3510|T4)",
1004                 .getuid        = DEFAULT_GETUID,
1005                 .features      = DEFAULT_FEATURES,
1006                 .hwhandler     = DEFAULT_HWHANDLER,
1007                 .selector      = DEFAULT_SELECTOR,
1008                 .pgpolicy      = MULTIBUS,
1009                 .pgfailback    = FAILBACK_UNDEF,
1010                 .rr_weight     = RR_WEIGHT_NONE,
1011                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1012                 .minio         = DEFAULT_MINIO,
1013                 .checker_name  = DIRECTIO,
1014                 .prio_name     = DEFAULT_PRIO,
1015                 .prio_args     = NULL,
1016         },
1017         /*
1018          * Pivot3 RAIGE
1019          *
1020          * Maintainer : Bart Brooks, Pivot3
1021          * Mail : bartb@pivot3.com
1022          */
1023         {
1024                 .vendor        = "PIVOT3",
1025                 .product       = "RAIGE VOLUME",
1026                 .getuid        = "/lib/udev/scsi_id --page=0x80 --whitelisted --device=/dev/%n",
1027                 .features      = "1 queue_if_no_path",
1028                 .hwhandler     = DEFAULT_HWHANDLER,
1029                 .selector      = DEFAULT_SELECTOR,
1030                 .pgpolicy      = MULTIBUS,
1031                 .pgfailback    = FAILBACK_UNDEF,
1032                 .rr_weight     = RR_WEIGHT_NONE,
1033                 .no_path_retry = NO_PATH_RETRY_UNDEF,
1034                 .minio         = 100,
1035                 .checker_name  = TUR,
1036                 .prio_name     = DEFAULT_PRIO,
1037                 .prio_args     = NULL,
1038         },
1039         {
1040                 .vendor        = "SUN",
1041                 .product       = "CSM200_R",
1042                 .getuid        = DEFAULT_GETUID,
1043                 .features      = DEFAULT_FEATURES,
1044                 .hwhandler     = "1 rdac",
1045                 .selector      = DEFAULT_SELECTOR,
1046                 .pgpolicy      = GROUP_BY_PRIO,
1047                 .pgfailback    = -FAILBACK_IMMEDIATE,
1048                 .rr_weight     = RR_WEIGHT_NONE,
1049                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1050                 .minio         = DEFAULT_MINIO,
1051                 .checker_name  = RDAC,
1052                 .prio_name     = PRIO_RDAC,
1053                 .prio_args     = NULL,
1054         },
1055         /* SUN/LSI 2510, 2540, 2530, 2540 */
1056         {
1057                 .vendor        = "SUN",
1058                 .product       = "LCSM100_[IEFS]",
1059                 .getuid        = DEFAULT_GETUID,
1060                 .features      = DEFAULT_FEATURES,
1061                 .hwhandler     = "1 rdac",
1062                 .selector      = DEFAULT_SELECTOR,
1063                 .pgpolicy      = GROUP_BY_PRIO,
1064                 .pgfailback    = -FAILBACK_IMMEDIATE,
1065                 .rr_weight     = RR_WEIGHT_NONE,
1066                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1067                 .minio         = DEFAULT_MINIO,
1068                 .checker_name  = RDAC,
1069                 .prio_name     = PRIO_RDAC,
1070                 .prio_args     = NULL,
1071         },
1072         /* LSI Generic rdac storage */
1073         {
1074                 .vendor        = "(LSI|ENGENIO)",
1075                 .product       = "INF-01-00",
1076                 .getuid        = DEFAULT_GETUID,
1077                 .features      = "2 pg_init_retries 50",
1078                 .hwhandler     = "1 rdac",
1079                 .selector      = DEFAULT_SELECTOR,
1080                 .pgpolicy      = GROUP_BY_PRIO,
1081                 .pgfailback    = -FAILBACK_IMMEDIATE,
1082                 .rr_weight     = RR_WEIGHT_NONE,
1083                 .no_path_retry = 15,
1084                 .minio         = DEFAULT_MINIO,
1085                 .checker_name  = RDAC,
1086                 .prio_name     = PRIO_RDAC,
1087                 .prio_args     = NULL,
1088         },
1089         {
1090                 .vendor        = "STK",
1091                 .product       = "FLEXLINE 380",
1092                 .bl_product    = "Universal Xport",
1093                 .getuid        = DEFAULT_GETUID,
1094                 .features      = DEFAULT_FEATURES,
1095                 .hwhandler     = "1 rdac",
1096                 .selector      = DEFAULT_SELECTOR,
1097                 .pgpolicy      = GROUP_BY_PRIO,
1098                 .pgfailback    = -FAILBACK_IMMEDIATE,
1099                 .rr_weight     = RR_WEIGHT_NONE,
1100                 .no_path_retry = NO_PATH_RETRY_QUEUE,
1101                 .minio         = DEFAULT_MINIO,
1102                 .checker_name  = RDAC,
1103                 .prio_name     = PRIO_RDAC,
1104                 .prio_args     = NULL,
1105         },
1106         /*
1107          * EOL
1108          */
1109         {
1110                 .vendor        = NULL,
1111                 .product       = NULL,
1112                 .getuid        = NULL,
1113                 .features      = NULL,
1114                 .hwhandler     = NULL,
1115                 .selector      = NULL,
1116                 .pgpolicy      = 0,
1117                 .pgfailback    = 0,
1118                 .rr_weight     = 0,
1119                 .no_path_retry = 0,
1120                 .minio         = 0,
1121                 .checker_name  = NULL,
1122                 .prio_name     = NULL,
1123                 .prio_args     = NULL,
1124         },
1125 };
1126
1127 extern int
1128 setup_default_hwtable (vector hw)
1129 {
1130         int r = 0;
1131         struct hwentry * hwe = default_hw;
1132
1133         while (hwe->vendor) {
1134                 r += store_hwe(hw, hwe);
1135                 hwe++;
1136         }
1137         return r;
1138 }