multipath: bind lifetime of udev context to main thread
[multipath-tools/.git] / libmpathpersist / mpath_pr_ioctl.h
1 #define MPATH_XFER_HOST_DEV              0   /*data transfer from initiator to target */
2 #define MPATH_XFER_DEV_HOST              1   /*data transfer from target to initiator */
3 #define MPATH_XFER_NONE                  2   /*no data transfer */
4 #define MPATH_XFER_UNKNOWN               3   /*data transfer direction is unknown */
5
6 #if 0
7 static const char * pr_type_strs[] = {
8     "obsolete [0]",
9     "Write Exclusive",
10     "obsolete [2]",
11     "Exclusive Access",
12     "obsolete [4]",
13     "Write Exclusive, registrants only",
14     "Exclusive Access, registrants only",
15     "Write Exclusive, all registrants",
16     "Exclusive Access, all registrants",
17     "obsolete [9]", "obsolete [0xa]", "obsolete [0xb]", "obsolete [0xc]",
18     "obsolete [0xd]", "obsolete [0xe]", "obsolete [0xf]",
19 };
20 #endif
21
22 typedef unsigned int     LWORD;     /* unsigned numeric, bit patterns */
23 typedef unsigned char    BYTE;      /* unsigned numeric, bit patterns */
24
25 typedef struct SenseData
26 {
27     BYTE        Error_Code;
28     BYTE        Segment_Number; /* not applicable to DAC */
29     BYTE        Sense_Key;
30     BYTE        Information[ 4 ];
31     BYTE        Additional_Len;
32     LWORD       Command_Specific_Info;
33     BYTE        ASC;
34     BYTE        ASCQ;
35     BYTE        Field_Replaceable_Unit;
36     BYTE        Sense_Key_Specific_Info[ 3 ];
37     BYTE        Recovery_Action[ 2 ];
38     BYTE        Total_Errors;
39     BYTE        Total_Retries;
40     BYTE        ASC_Stack_1;
41     BYTE        ASCQ_Stack_1;
42     BYTE        ASC_Stack_2;
43     BYTE        ASCQ_Stack_2;
44     BYTE        Additional_FRU_Info[ 8 ];
45     BYTE        Error_Specific_Info[ 3 ];
46     BYTE        Error_Detection_Point[ 4 ];
47     BYTE        Original_CDB[10];
48     BYTE        Host_ID;
49     BYTE        Host_Descriptor[ 2 ];
50     BYTE        Serial_Number[ 16 ];
51     BYTE        Array_SW_Revision[ 4 ];
52     BYTE        Data_Xfer_Operation;
53     BYTE        LUN_Number;
54     BYTE        LUN_Status;
55     BYTE        Drive_ID;
56     BYTE        Xfer_Start_Drive_ID;
57     BYTE        Drive_SW_Revision[ 4 ];
58     BYTE        Drive_Product_ID[ 16 ];
59     BYTE        PowerUp_Status[ 2 ];
60     BYTE        RAID_Level;
61     BYTE        Drive_Sense_ID[ 2 ];
62     BYTE        Drive_Sense_Data[ 32 ];
63     BYTE        Reserved2[24];
64 } SenseData_t;
65
66 #define MPATH_PRIN_CMD 0x5e
67 #define MPATH_PRIN_CMDLEN 10
68 #define MPATH_PROUT_CMD 0x5f
69 #define MPATH_PROUT_CMDLEN 10
70
71 #define  DID_OK 0x00
72 /*
73  *  Status codes
74  */
75 #define SAM_STAT_GOOD            0x00
76 #define SAM_STAT_CHECK_CONDITION 0x02
77 #define SAM_STAT_CONDITION_MET   0x04
78 #define SAM_STAT_BUSY            0x08
79 #define SAM_STAT_INTERMEDIATE    0x10
80 #define SAM_STAT_INTERMEDIATE_CONDITION_MET 0x14
81 #define SAM_STAT_RESERVATION_CONFLICT 0x18
82 #define SAM_STAT_COMMAND_TERMINATED 0x22        /* obsolete in SAM-3 */
83 #define SAM_STAT_TASK_SET_FULL   0x28
84 #define SAM_STAT_ACA_ACTIVE      0x30
85 #define SAM_STAT_TASK_ABORTED    0x40
86
87 #define STATUS_MASK          0x3e
88
89 /*
90  *  SENSE KEYS
91  */
92
93 #define NO_SENSE            0x00
94 #define RECOVERED_ERROR     0x01
95 #define NOT_READY           0x02
96 #define MEDIUM_ERROR        0x03
97 #define HARDWARE_ERROR      0x04
98 #define ILLEGAL_REQUEST     0x05
99 #define UNIT_ATTENTION      0x06
100 #define DATA_PROTECT        0x07
101 #define BLANK_CHECK         0x08
102 #define COPY_ABORTED        0x0a
103 #define ABORTED_COMMAND     0x0b
104 #define VOLUME_OVERFLOW     0x0d
105 #define MISCOMPARE          0x0e
106
107
108 /* Driver status */
109 #define DRIVER_OK 0x00
110
111