multipath: add fast_io_fail and dev_loss_tmo config parameters
[multipath-tools/.git] / libmultipath / discovery.h
1 #ifndef DISCOVERY_H
2 #define DISCOVERY_H
3
4 #define SYSFS_PATH_SIZE 255
5 #define INQUIRY_CMDLEN  6
6 #define INQUIRY_CMD     0x12
7 #define SENSE_BUFF_LEN  32
8 #define RECOVERED_ERROR 0x01
9 #define MX_ALLOC_LEN    255
10 #define TUR_CMD_LEN     6
11
12 #ifndef BLKGETSIZE
13 #define BLKGETSIZE      _IO(0x12,96)
14 #endif
15
16 #ifndef DEF_TIMEOUT
17 #define DEF_TIMEOUT     300000
18 #endif
19
20 /*
21  * exerpt from sg_err.h
22  */
23 #define SCSI_CHECK_CONDITION    0x2
24 #define SCSI_COMMAND_TERMINATED 0x22
25 #define SG_ERR_DRIVER_SENSE     0x08
26
27 int sysfs_get_dev (struct sysfs_device * dev, char * buff, size_t len);
28 int path_discovery (vector pathvec, struct config * conf, int flag);
29
30 int do_tur (char *);
31 int devt2devname (char *, char *);
32 int path_offline (struct path *);
33 int pathinfo (struct path *, vector hwtable, int mask);
34 struct path * store_pathinfo (vector pathvec, vector hwtable,
35                               char * devname, int flag);
36 int sysfs_set_scsi_tmo (struct multipath *mpp);
37
38 /*
39  * discovery bitmask
40  */
41 enum discovery_mode {
42         __DI_SYSFS,
43         __DI_SERIAL,
44         __DI_CHECKER,
45         __DI_PRIO,
46         __DI_WWID
47 };
48
49 #define DI_SYSFS        (1 << __DI_SYSFS)
50 #define DI_SERIAL       (1 << __DI_SERIAL)
51 #define DI_CHECKER      (1 << __DI_CHECKER)
52 #define DI_PRIO         (1 << __DI_PRIO)
53 #define DI_WWID         (1 << __DI_WWID)
54
55 #define DI_ALL          (DI_SYSFS  | DI_SERIAL | DI_CHECKER | DI_PRIO | \
56                          DI_WWID)
57
58 #endif /* DISCOVERY_H */