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