47 SBD_RET_ZFS_META_CREATE_FAILED,
48 SBD_ZVOL_META_NAME_MISMATCH,
49 SBD_RET_DATA_FILE_LOOKUP_FAILED,
50 SBD_RET_WRONG_META_FILE_TYPE,
51 SBD_RET_WRONG_DATA_FILE_TYPE,
52 SBD_RET_DATA_FILE_OPEN_FAILED,
53 SBD_RET_META_FILE_OPEN_FAILED,
54 SBD_RET_DATA_FILE_GETATTR_FAILED,
55 SBD_RET_META_FILE_GETATTR_FAILED,
56 SBD_RET_FILE_SIZE_ERROR,
57 SBD_RET_FILE_ALIGN_ERROR,
58 SBD_RET_SIZE_OUT_OF_RANGE,
59 SBD_RET_SIZE_NOT_SUPPORTED_BY_FS,
60 SBD_RET_NO_META,
61 SBD_RET_VERSION_NOT_SUPPORTED,
62 SBD_RET_LU_BUSY,
63 SBD_RET_NOT_FOUND,
64 SBD_RET_INSUFFICIENT_BUF_SPACE,
65 SBD_RET_WRITE_CACHE_SET_FAILED,
66 SBD_RET_ACCESS_STATE_FAILED,
67
68 SBD_RET_MAX_VAL
69 } sbd_ret_t;
70
71 #define SBD_IOCTL_DEF(n) ((((int)0x5B) << 16) | (n))
72 #define SBD_IOCTL_CREATE_AND_REGISTER_LU SBD_IOCTL_DEF(1)
73 #define SBD_IOCTL_IMPORT_LU SBD_IOCTL_DEF(2)
74 #define SBD_IOCTL_DELETE_LU SBD_IOCTL_DEF(3)
75 #define SBD_IOCTL_MODIFY_LU SBD_IOCTL_DEF(4)
76 #define SBD_IOCTL_GET_LU_PROPS SBD_IOCTL_DEF(5)
77 #define SBD_IOCTL_GET_LU_LIST SBD_IOCTL_DEF(6)
78 #define SBD_IOCTL_SET_LU_STANDBY SBD_IOCTL_DEF(7)
79 #define SBD_IOCTL_SET_GLOBAL_LU SBD_IOCTL_DEF(8)
80 #define SBD_IOCTL_GET_GLOBAL_LU SBD_IOCTL_DEF(9)
81 #define SBD_IOCTL_GET_UNMAP_PROPS SBD_IOCTL_DEF(10)
82
83 typedef struct sbd_create_and_reg_lu {
84 uint32_t slu_struct_size;
85 uint16_t slu_meta_fname_valid:1,
86 slu_lu_size_valid:1,
87 slu_blksize_valid:1,
88 slu_vid_valid:1,
89 slu_pid_valid:1,
90 slu_rev_valid:1,
91 slu_serial_valid:1,
92 slu_alias_valid:1,
93 slu_mgmt_url_valid:1,
94 slu_guid_valid:1,
95 slu_company_id_valid:1,
96 slu_host_id_valid:1,
97 slu_writeback_cache_disable_valid:1,
98 slu_writeback_cache_disable:1,
99 slu_write_protected:1;
100 uint16_t slu_meta_fname_off;
101 uint64_t slu_lu_size;
102 uint16_t slu_data_fname_off;
103 uint16_t slu_serial_off;
104 uint8_t slu_serial_size;
105 uint8_t slu_ret_filesize_nbits;
106 uint16_t slu_blksize;
107 uint32_t slu_company_id;
108 uint16_t slu_alias_off;
109 uint16_t slu_mgmt_url_off;
110 uint32_t slu_host_id;
111 char slu_rev[4];
112 char slu_vid[8];
113 char slu_pid[16];
114 uint8_t slu_guid[16];
115 char slu_buf[8]; /* likely more than 8 */
116 } sbd_create_and_reg_lu_t;
117
118 typedef struct sbd_global_props {
119 uint32_t mlu_struct_size;
146 typedef struct sbd_import_lu {
147 uint32_t ilu_struct_size;
148 uint32_t ilu_rsvd;
149 uint8_t ilu_ret_guid[16];
150 char ilu_meta_fname[8]; /* Can be more than 8 */
151 } sbd_import_lu_t;
152
153 typedef struct sbd_modify_lu {
154 uint32_t mlu_struct_size;
155 uint32_t mlu_lu_size_valid:1,
156 mlu_serial_valid:1,
157 mlu_alias_valid:1,
158 mlu_mgmt_url_valid:1,
159 mlu_writeback_cache_disable_valid:1,
160 mlu_writeback_cache_disable:1,
161 mlu_write_protected_valid:1,
162 mlu_write_protected:1,
163 mlu_by_guid:1,
164 mlu_by_fname:1,
165 mlu_standby_valid:1,
166 mlu_standby:1;
167 uint64_t mlu_lu_size;
168 uint16_t mlu_alias_off;
169 uint16_t mlu_mgmt_url_off;
170 uint16_t mlu_serial_off;
171 uint16_t mlu_serial_size;
172 uint16_t mlu_fname_off;
173 uint16_t mlu_rsvd1;
174 uint32_t mlu_rsvd2;
175 uint8_t mlu_input_guid[16];
176 char mlu_buf[8]; /* can be more than 8 */
177 } sbd_modify_lu_t;
178
179 typedef struct sbd_delete_lu {
180 uint32_t dlu_struct_size;
181 uint16_t dlu_by_guid:1,
182 dlu_by_meta_name:1;
183 uint16_t dlu_rsvd;
184 uint8_t dlu_guid[16];
185 uint8_t dlu_meta_name[8];
186 } sbd_delete_lu_t;
188 /*
189 * sbd access states
190 */
191 #define SBD_LU_ACTIVE 1
192 #define SBD_LU_TRANSITION_TO_ACTIVE 2
193 #define SBD_LU_STANDBY 3
194 #define SBD_LU_TRANSITION_TO_STANDBY 4
195
196 typedef struct sbd_lu_props {
197 uint32_t slp_input_guid:1, /* GUID or meta filename */
198 slp_separate_meta:1,
199 slp_meta_fname_valid:1,
200 slp_data_fname_valid:1,
201 slp_zfs_meta:1,
202 slp_alias_valid:1,
203 slp_mgmt_url_valid:1,
204 slp_lu_vid:1,
205 slp_lu_pid:1,
206 slp_lu_rev:1,
207 slp_serial_valid:1,
208 slp_writeback_cache_disable_cur:1,
209 slp_writeback_cache_disable_saved:1,
210 slp_write_protected:1;
211 uint16_t slp_meta_fname_off;
212 uint16_t slp_data_fname_off;
213 uint64_t slp_lu_size;
214 uint16_t slp_serial_off;
215 uint16_t slp_blksize;
216 uint16_t slp_alias_off;
217 uint16_t slp_mgmt_url_off;
218 uint32_t slp_buf_size_needed; /* Upon return */
219 uint16_t slp_serial_size;
220 uint16_t slp_access_state;
221 char slp_rev[4];
222 char slp_vid[8];
223 char slp_pid[16];
224 uint8_t slp_guid[16];
225 uint8_t slp_buf[8]; /* likely more than 8 */
226 } sbd_lu_props_t;
227
|
47 SBD_RET_ZFS_META_CREATE_FAILED,
48 SBD_ZVOL_META_NAME_MISMATCH,
49 SBD_RET_DATA_FILE_LOOKUP_FAILED,
50 SBD_RET_WRONG_META_FILE_TYPE,
51 SBD_RET_WRONG_DATA_FILE_TYPE,
52 SBD_RET_DATA_FILE_OPEN_FAILED,
53 SBD_RET_META_FILE_OPEN_FAILED,
54 SBD_RET_DATA_FILE_GETATTR_FAILED,
55 SBD_RET_META_FILE_GETATTR_FAILED,
56 SBD_RET_FILE_SIZE_ERROR,
57 SBD_RET_FILE_ALIGN_ERROR,
58 SBD_RET_SIZE_OUT_OF_RANGE,
59 SBD_RET_SIZE_NOT_SUPPORTED_BY_FS,
60 SBD_RET_NO_META,
61 SBD_RET_VERSION_NOT_SUPPORTED,
62 SBD_RET_LU_BUSY,
63 SBD_RET_NOT_FOUND,
64 SBD_RET_INSUFFICIENT_BUF_SPACE,
65 SBD_RET_WRITE_CACHE_SET_FAILED,
66 SBD_RET_ACCESS_STATE_FAILED,
67 SBD_RET_UNMAP_SET_FAILED,
68
69 SBD_RET_MAX_VAL
70 } sbd_ret_t;
71
72 #define SBD_IOCTL_DEF(n) ((((int)0x5B) << 16) | (n))
73 #define SBD_IOCTL_CREATE_AND_REGISTER_LU SBD_IOCTL_DEF(1)
74 #define SBD_IOCTL_IMPORT_LU SBD_IOCTL_DEF(2)
75 #define SBD_IOCTL_DELETE_LU SBD_IOCTL_DEF(3)
76 #define SBD_IOCTL_MODIFY_LU SBD_IOCTL_DEF(4)
77 #define SBD_IOCTL_GET_LU_PROPS SBD_IOCTL_DEF(5)
78 #define SBD_IOCTL_GET_LU_LIST SBD_IOCTL_DEF(6)
79 #define SBD_IOCTL_SET_LU_STANDBY SBD_IOCTL_DEF(7)
80 #define SBD_IOCTL_SET_GLOBAL_LU SBD_IOCTL_DEF(8)
81 #define SBD_IOCTL_GET_GLOBAL_LU SBD_IOCTL_DEF(9)
82 #define SBD_IOCTL_GET_UNMAP_PROPS SBD_IOCTL_DEF(10)
83
84 typedef struct sbd_create_and_reg_lu {
85 uint32_t slu_struct_size;
86 uint32_t slu_meta_fname_valid:1,
87 slu_lu_size_valid:1,
88 slu_blksize_valid:1,
89 slu_vid_valid:1,
90 slu_pid_valid:1,
91 slu_rev_valid:1,
92 slu_serial_valid:1,
93 slu_alias_valid:1,
94 slu_mgmt_url_valid:1,
95 slu_guid_valid:1,
96 slu_company_id_valid:1,
97 slu_host_id_valid:1,
98 slu_writeback_cache_disable_valid:1,
99 slu_writeback_cache_disable:1,
100 slu_write_protected:1,
101 slu_unmap_valid:1,
102 slu_unmap:1;
103 uint32_t slu_pad1; /* To preserve 64-bit alignment */
104 uint16_t slu_pad2; /* for the following fields. */
105 uint16_t slu_meta_fname_off;
106 uint64_t slu_lu_size;
107 uint16_t slu_data_fname_off;
108 uint16_t slu_serial_off;
109 uint8_t slu_serial_size;
110 uint8_t slu_ret_filesize_nbits;
111 uint16_t slu_blksize;
112 uint32_t slu_company_id;
113 uint16_t slu_alias_off;
114 uint16_t slu_mgmt_url_off;
115 uint32_t slu_host_id;
116 char slu_rev[4];
117 char slu_vid[8];
118 char slu_pid[16];
119 uint8_t slu_guid[16];
120 char slu_buf[8]; /* likely more than 8 */
121 } sbd_create_and_reg_lu_t;
122
123 typedef struct sbd_global_props {
124 uint32_t mlu_struct_size;
151 typedef struct sbd_import_lu {
152 uint32_t ilu_struct_size;
153 uint32_t ilu_rsvd;
154 uint8_t ilu_ret_guid[16];
155 char ilu_meta_fname[8]; /* Can be more than 8 */
156 } sbd_import_lu_t;
157
158 typedef struct sbd_modify_lu {
159 uint32_t mlu_struct_size;
160 uint32_t mlu_lu_size_valid:1,
161 mlu_serial_valid:1,
162 mlu_alias_valid:1,
163 mlu_mgmt_url_valid:1,
164 mlu_writeback_cache_disable_valid:1,
165 mlu_writeback_cache_disable:1,
166 mlu_write_protected_valid:1,
167 mlu_write_protected:1,
168 mlu_by_guid:1,
169 mlu_by_fname:1,
170 mlu_standby_valid:1,
171 mlu_standby:1,
172 mlu_unmap_valid:1,
173 mlu_unmap:1;
174 uint64_t mlu_lu_size;
175 uint16_t mlu_alias_off;
176 uint16_t mlu_mgmt_url_off;
177 uint16_t mlu_serial_off;
178 uint16_t mlu_serial_size;
179 uint16_t mlu_fname_off;
180 uint16_t mlu_rsvd1;
181 uint32_t mlu_rsvd2;
182 uint8_t mlu_input_guid[16];
183 char mlu_buf[8]; /* can be more than 8 */
184 } sbd_modify_lu_t;
185
186 typedef struct sbd_delete_lu {
187 uint32_t dlu_struct_size;
188 uint16_t dlu_by_guid:1,
189 dlu_by_meta_name:1;
190 uint16_t dlu_rsvd;
191 uint8_t dlu_guid[16];
192 uint8_t dlu_meta_name[8];
193 } sbd_delete_lu_t;
195 /*
196 * sbd access states
197 */
198 #define SBD_LU_ACTIVE 1
199 #define SBD_LU_TRANSITION_TO_ACTIVE 2
200 #define SBD_LU_STANDBY 3
201 #define SBD_LU_TRANSITION_TO_STANDBY 4
202
203 typedef struct sbd_lu_props {
204 uint32_t slp_input_guid:1, /* GUID or meta filename */
205 slp_separate_meta:1,
206 slp_meta_fname_valid:1,
207 slp_data_fname_valid:1,
208 slp_zfs_meta:1,
209 slp_alias_valid:1,
210 slp_mgmt_url_valid:1,
211 slp_lu_vid:1,
212 slp_lu_pid:1,
213 slp_lu_rev:1,
214 slp_serial_valid:1,
215 slp_unmap_cur:1,
216 slp_unmap_saved:1,
217 slp_writeback_cache_disable_cur:1,
218 slp_writeback_cache_disable_saved:1,
219 slp_write_protected:1;
220 uint16_t slp_meta_fname_off;
221 uint16_t slp_data_fname_off;
222 uint64_t slp_lu_size;
223 uint16_t slp_serial_off;
224 uint16_t slp_blksize;
225 uint16_t slp_alias_off;
226 uint16_t slp_mgmt_url_off;
227 uint32_t slp_buf_size_needed; /* Upon return */
228 uint16_t slp_serial_size;
229 uint16_t slp_access_state;
230 char slp_rev[4];
231 char slp_vid[8];
232 char slp_pid[16];
233 uint8_t slp_guid[16];
234 uint8_t slp_buf[8]; /* likely more than 8 */
235 } sbd_lu_props_t;
236
|