blob: a4e825756681f0f0335854d5d4f6ec45ab58e5eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_MPI_RAID_H
#define _SYS_MPI_RAID_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* RAID Volume Request
*/
typedef struct msg_raid_action {
uint8_t Action;
uint8_t Reserved1;
uint8_t ChainOffset;
uint8_t Function;
uint8_t VolumeID;
uint8_t VolumeBus;
uint8_t PhysDiskNum;
uint8_t MsgFlags;
uint32_t MsgContext;
uint32_t Reserved2;
uint32_t ActionDataWord;
sge_simple_union_t ActionDataSGE;
} msg_raid_action_t;
/* RAID Volume Action values */
#define MPI_RAID_ACTION_STATUS 0x00
#define MPI_RAID_ACTION_INDICATOR_STRUCT 0x01
#define MPI_RAID_ACTION_CREATE_VOLUME 0x02
#define MPI_RAID_ACTION_DELETE_VOLUME 0x03
#define MPI_RAID_ACTION_DISABLE_VOLUME 0x04
#define MPI_RAID_ACTION_ENABLE_VOLUME 0x05
#define MPI_RAID_ACTION_QUIESCE_PHYS_IO 0x06
#define MPI_RAID_ACTION_ENABLE_PHYS_IO 0x07
#define MPI_RAID_ACTION_CHANGE_VOLUME_SETTINGS 0x08
#define MPI_RAID_ACTION_PHYSDISK_OFFLINE 0x0A
#define MPI_RAID_ACTION_PHYSDISK_ONLINE 0x0B
#define MPI_RAID_ACTION_CHANGE_PHYSDISK_SETTINGS 0x0C
#define MPI_RAID_ACTION_CREATE_PHYSDISK 0x0D
#define MPI_RAID_ACTION_DELETE_PHYSDISK 0x0E
#define MPI_RAID_ACTION_FAIL_PHYSDISK 0x0F
#define MPI_RAID_ACTION_REPLACE_PHYSDISK 0x10
#define MPI_RAID_ACTION_ACTIVATE_VOLUME 0x11
#define MPI_RAID_ACTION_INACTIVATE_VOLUME 0x12
#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC 0x00000001
#define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS 0x00000000
#define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS 0x00000001
/* RAID Volume reply message */
typedef struct msg_raid_action_reply {
uint8_t Action;
uint8_t Reserved;
uint8_t MsgLength;
uint8_t Function;
uint8_t VolumeID;
uint8_t VolumeBus;
uint8_t PhysDiskNum;
uint8_t MsgFlags;
uint32_t MsgContext;
uint16_t ActionStatus;
uint16_t IOCStatus;
uint32_t IOCLogInfo;
uint32_t VolumeStatus;
uint32_t ActionData;
} msg_raid_action_reply_t;
/* RAID Volume reply ActionStatus values */
#define MPI_RAID_VOL_ASTATUS_SUCCESS 0x0000
#define MPI_RAID_VOL_ASTATUS_INVALID_ACTION 0x0001
#define MPI_RAID_VOL_ASTATUS_FAILURE 0x0002
#define MPI_RAID_VOL_ASTATUS_IN_PROGRESS 0x0003
/* RAID Volume reply RAID Volume Indicator structure */
typedef struct mpi_raid_vol_indicator {
uint64_t TotalBlocks;
uint64_t BlocksRemaining;
} mpi_raid_vol_indicator_t;
/*
* SCSI IO RAID Passthrough Request
*/
typedef struct msg_scsi_io_raid_pt_request {
uint8_t PhysDiskNum;
uint8_t Reserved1;
uint8_t ChainOffset;
uint8_t Function;
uint8_t CDBLength;
uint8_t SenseBufferLength;
uint8_t Reserved2;
uint8_t MsgFlags;
uint32_t MsgContext;
uint8_t LUN[8];
uint32_t Control;
uint8_t CDB[16];
uint32_t DataLength;
uint32_t SenseBufferLowAddr;
sge_io_union_t SGL;
} msg_scsi_io_raid_pt_request_t;
/* SCSI IO RAID Passthrough reply structure */
typedef struct msg_scsi_io_raid_pt_reply {
uint8_t PhysDiskNum;
uint8_t Reserved1;
uint8_t MsgLength;
uint8_t Function;
uint8_t CDBLength;
uint8_t SenseBufferLength;
uint8_t Reserved2;
uint8_t MsgFlags;
uint32_t MsgContext;
uint8_t SCSIStatus;
uint8_t SCSIState;
uint16_t IOCStatus;
uint32_t IOCLogInfo;
uint32_t TransferCount;
uint32_t SenseCount;
uint32_t ResponseInfo;
} msg_scsi_io_raid_pt_reply_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_MPI_RAID_H */
|