.. | .. |
---|
1 | 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
---|
2 | | -/* |
---|
| 2 | +/* |
---|
3 | 3 | * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> |
---|
4 | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
---|
5 | 5 | * Copyright IBM Corp. 1999, 2000 |
---|
.. | .. |
---|
21 | 21 | |
---|
22 | 22 | #define DASD_API_VERSION 6 |
---|
23 | 23 | |
---|
24 | | -/* |
---|
| 24 | +/* |
---|
25 | 25 | * struct dasd_information2_t |
---|
26 | 26 | * represents any data about the device, which is visible to userspace. |
---|
27 | 27 | * including foramt and featueres. |
---|
28 | 28 | */ |
---|
29 | 29 | typedef struct dasd_information2_t { |
---|
30 | | - unsigned int devno; /* S/390 devno */ |
---|
31 | | - unsigned int real_devno; /* for aliases */ |
---|
32 | | - unsigned int schid; /* S/390 subchannel identifier */ |
---|
33 | | - unsigned int cu_type : 16; /* from SenseID */ |
---|
34 | | - unsigned int cu_model : 8; /* from SenseID */ |
---|
35 | | - unsigned int dev_type : 16; /* from SenseID */ |
---|
36 | | - unsigned int dev_model : 8; /* from SenseID */ |
---|
37 | | - unsigned int open_count; |
---|
38 | | - unsigned int req_queue_len; |
---|
39 | | - unsigned int chanq_len; /* length of chanq */ |
---|
40 | | - char type[4]; /* from discipline.name, 'none' for unknown */ |
---|
41 | | - unsigned int status; /* current device level */ |
---|
42 | | - unsigned int label_block; /* where to find the VOLSER */ |
---|
43 | | - unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ |
---|
44 | | - unsigned int characteristics_size; |
---|
45 | | - unsigned int confdata_size; |
---|
46 | | - char characteristics[64]; /* from read_device_characteristics */ |
---|
47 | | - char configuration_data[256]; /* from read_configuration_data */ |
---|
48 | | - unsigned int format; /* format info like formatted/cdl/ldl/... */ |
---|
49 | | - unsigned int features; /* dasd features like 'ro',... */ |
---|
50 | | - unsigned int reserved0; /* reserved for further use ,... */ |
---|
51 | | - unsigned int reserved1; /* reserved for further use ,... */ |
---|
52 | | - unsigned int reserved2; /* reserved for further use ,... */ |
---|
53 | | - unsigned int reserved3; /* reserved for further use ,... */ |
---|
54 | | - unsigned int reserved4; /* reserved for further use ,... */ |
---|
55 | | - unsigned int reserved5; /* reserved for further use ,... */ |
---|
56 | | - unsigned int reserved6; /* reserved for further use ,... */ |
---|
57 | | - unsigned int reserved7; /* reserved for further use ,... */ |
---|
| 30 | + unsigned int devno; /* S/390 devno */ |
---|
| 31 | + unsigned int real_devno; /* for aliases */ |
---|
| 32 | + unsigned int schid; /* S/390 subchannel identifier */ |
---|
| 33 | + unsigned int cu_type : 16; /* from SenseID */ |
---|
| 34 | + unsigned int cu_model : 8; /* from SenseID */ |
---|
| 35 | + unsigned int dev_type : 16; /* from SenseID */ |
---|
| 36 | + unsigned int dev_model : 8; /* from SenseID */ |
---|
| 37 | + unsigned int open_count; |
---|
| 38 | + unsigned int req_queue_len; |
---|
| 39 | + unsigned int chanq_len; /* length of chanq */ |
---|
| 40 | + char type[4]; /* from discipline.name, 'none' for unknown */ |
---|
| 41 | + unsigned int status; /* current device level */ |
---|
| 42 | + unsigned int label_block; /* where to find the VOLSER */ |
---|
| 43 | + unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ |
---|
| 44 | + unsigned int characteristics_size; |
---|
| 45 | + unsigned int confdata_size; |
---|
| 46 | + char characteristics[64]; /* from read_device_characteristics */ |
---|
| 47 | + char configuration_data[256]; /* from read_configuration_data */ |
---|
| 48 | + unsigned int format; /* format info like formatted/cdl/ldl/... */ |
---|
| 49 | + unsigned int features; /* dasd features like 'ro',... */ |
---|
| 50 | + unsigned int reserved0; /* reserved for further use ,... */ |
---|
| 51 | + unsigned int reserved1; /* reserved for further use ,... */ |
---|
| 52 | + unsigned int reserved2; /* reserved for further use ,... */ |
---|
| 53 | + unsigned int reserved3; /* reserved for further use ,... */ |
---|
| 54 | + unsigned int reserved4; /* reserved for further use ,... */ |
---|
| 55 | + unsigned int reserved5; /* reserved for further use ,... */ |
---|
| 56 | + unsigned int reserved6; /* reserved for further use ,... */ |
---|
| 57 | + unsigned int reserved7; /* reserved for further use ,... */ |
---|
58 | 58 | } dasd_information2_t; |
---|
59 | 59 | |
---|
60 | 60 | /* |
---|
.. | .. |
---|
92 | 92 | |
---|
93 | 93 | #define DASD_PARTN_BITS 2 |
---|
94 | 94 | |
---|
95 | | -/* |
---|
| 95 | +/* |
---|
96 | 96 | * struct dasd_information_t |
---|
97 | 97 | * represents any data about the data, which is visible to userspace |
---|
98 | 98 | */ |
---|
99 | 99 | typedef struct dasd_information_t { |
---|
100 | | - unsigned int devno; /* S/390 devno */ |
---|
101 | | - unsigned int real_devno; /* for aliases */ |
---|
102 | | - unsigned int schid; /* S/390 subchannel identifier */ |
---|
103 | | - unsigned int cu_type : 16; /* from SenseID */ |
---|
104 | | - unsigned int cu_model : 8; /* from SenseID */ |
---|
105 | | - unsigned int dev_type : 16; /* from SenseID */ |
---|
106 | | - unsigned int dev_model : 8; /* from SenseID */ |
---|
107 | | - unsigned int open_count; |
---|
108 | | - unsigned int req_queue_len; |
---|
109 | | - unsigned int chanq_len; /* length of chanq */ |
---|
110 | | - char type[4]; /* from discipline.name, 'none' for unknown */ |
---|
111 | | - unsigned int status; /* current device level */ |
---|
112 | | - unsigned int label_block; /* where to find the VOLSER */ |
---|
113 | | - unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ |
---|
114 | | - unsigned int characteristics_size; |
---|
115 | | - unsigned int confdata_size; |
---|
116 | | - char characteristics[64]; /* from read_device_characteristics */ |
---|
117 | | - char configuration_data[256]; /* from read_configuration_data */ |
---|
| 100 | + unsigned int devno; /* S/390 devno */ |
---|
| 101 | + unsigned int real_devno; /* for aliases */ |
---|
| 102 | + unsigned int schid; /* S/390 subchannel identifier */ |
---|
| 103 | + unsigned int cu_type : 16; /* from SenseID */ |
---|
| 104 | + unsigned int cu_model : 8; /* from SenseID */ |
---|
| 105 | + unsigned int dev_type : 16; /* from SenseID */ |
---|
| 106 | + unsigned int dev_model : 8; /* from SenseID */ |
---|
| 107 | + unsigned int open_count; |
---|
| 108 | + unsigned int req_queue_len; |
---|
| 109 | + unsigned int chanq_len; /* length of chanq */ |
---|
| 110 | + char type[4]; /* from discipline.name, 'none' for unknown */ |
---|
| 111 | + unsigned int status; /* current device level */ |
---|
| 112 | + unsigned int label_block; /* where to find the VOLSER */ |
---|
| 113 | + unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ |
---|
| 114 | + unsigned int characteristics_size; |
---|
| 115 | + unsigned int confdata_size; |
---|
| 116 | + char characteristics[64]; /* from read_device_characteristics */ |
---|
| 117 | + char configuration_data[256]; /* from read_configuration_data */ |
---|
118 | 118 | } dasd_information_t; |
---|
119 | 119 | |
---|
120 | 120 | /* |
---|
121 | 121 | * Read Subsystem Data - Performance Statistics |
---|
122 | | - */ |
---|
| 122 | + */ |
---|
123 | 123 | typedef struct dasd_rssd_perf_stats_t { |
---|
124 | 124 | unsigned char invalid:1; |
---|
125 | 125 | unsigned char format:3; |
---|
.. | .. |
---|
154 | 154 | unsigned char reseved2[96]; |
---|
155 | 155 | } __attribute__((packed)) dasd_rssd_perf_stats_t; |
---|
156 | 156 | |
---|
157 | | -/* |
---|
| 157 | +/* |
---|
158 | 158 | * struct profile_info_t |
---|
159 | | - * holds the profinling information |
---|
| 159 | + * holds the profinling information |
---|
160 | 160 | */ |
---|
161 | 161 | typedef struct dasd_profile_info_t { |
---|
162 | | - unsigned int dasd_io_reqs; /* number of requests processed at all */ |
---|
163 | | - unsigned int dasd_io_sects; /* number of sectors processed at all */ |
---|
164 | | - unsigned int dasd_io_secs[32]; /* histogram of request's sizes */ |
---|
165 | | - unsigned int dasd_io_times[32]; /* histogram of requests's times */ |
---|
166 | | - unsigned int dasd_io_timps[32]; /* histogram of requests's times per sector */ |
---|
167 | | - unsigned int dasd_io_time1[32]; /* histogram of time from build to start */ |
---|
168 | | - unsigned int dasd_io_time2[32]; /* histogram of time from start to irq */ |
---|
169 | | - unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */ |
---|
170 | | - unsigned int dasd_io_time3[32]; /* histogram of time from irq to end */ |
---|
171 | | - unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */ |
---|
| 162 | + unsigned int dasd_io_reqs; /* number of requests processed at all */ |
---|
| 163 | + unsigned int dasd_io_sects; /* number of sectors processed at all */ |
---|
| 164 | + unsigned int dasd_io_secs[32]; /* histogram of request's sizes */ |
---|
| 165 | + unsigned int dasd_io_times[32]; /* histogram of requests's times */ |
---|
| 166 | + unsigned int dasd_io_timps[32]; /* histogram of requests's times per sector */ |
---|
| 167 | + unsigned int dasd_io_time1[32]; /* histogram of time from build to start */ |
---|
| 168 | + unsigned int dasd_io_time2[32]; /* histogram of time from start to irq */ |
---|
| 169 | + unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */ |
---|
| 170 | + unsigned int dasd_io_time3[32]; /* histogram of time from irq to end */ |
---|
| 171 | + unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */ |
---|
172 | 172 | } dasd_profile_info_t; |
---|
173 | 173 | |
---|
174 | 174 | /* |
---|
.. | .. |
---|
189 | 189 | * 3/11: also write home address |
---|
190 | 190 | * 4/12: invalidate track |
---|
191 | 191 | */ |
---|
192 | | -#define DASD_FMT_INT_FMT_R0 1 /* write record zero */ |
---|
193 | | -#define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */ |
---|
194 | | -#define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ |
---|
195 | | -#define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ |
---|
| 192 | +#define DASD_FMT_INT_FMT_R0 1 /* write record zero */ |
---|
| 193 | +#define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */ |
---|
| 194 | +#define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ |
---|
| 195 | +#define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ |
---|
| 196 | +#define DASD_FMT_INT_FMT_NOR0 16 /* remove permission to write record zero */ |
---|
| 197 | +#define DASD_FMT_INT_ESE_FULL 32 /* release space for entire volume */ |
---|
196 | 198 | |
---|
197 | 199 | /* |
---|
198 | 200 | * struct format_check_t |
---|
.. | .. |
---|
225 | 227 | /* If key-length was != 0 */ |
---|
226 | 228 | #define DASD_FMT_ERR_KEY_LENGTH 5 |
---|
227 | 229 | |
---|
228 | | -/* |
---|
| 230 | +/* |
---|
229 | 231 | * struct attrib_data_t |
---|
230 | 232 | * represents the operation (cache) bits for the device. |
---|
231 | 233 | * Used in DE to influence caching of the DASD. |
---|
.. | .. |
---|
281 | 283 | * Here ist how the ioctl-nr should be used: |
---|
282 | 284 | * 0 - 31 DASD driver itself |
---|
283 | 285 | * 32 - 239 still open |
---|
284 | | - * 240 - 255 reserved for EMC |
---|
| 286 | + * 240 - 255 reserved for EMC |
---|
285 | 287 | *******************************************************************************/ |
---|
286 | 288 | |
---|
287 | 289 | /* Disable the volume (for Linux) */ |
---|
288 | | -#define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) |
---|
| 290 | +#define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) |
---|
289 | 291 | /* Enable the volume (for Linux) */ |
---|
290 | | -#define BIODASDENABLE _IO(DASD_IOCTL_LETTER,1) |
---|
| 292 | +#define BIODASDENABLE _IO(DASD_IOCTL_LETTER,1) |
---|
291 | 293 | /* Issue a reserve/release command, rsp. */ |
---|
292 | 294 | #define BIODASDRSRV _IO(DASD_IOCTL_LETTER,2) /* reserve */ |
---|
293 | 295 | #define BIODASDRLSE _IO(DASD_IOCTL_LETTER,3) /* release */ |
---|
.. | .. |
---|
295 | 297 | /* reset profiling information of a device */ |
---|
296 | 298 | #define BIODASDPRRST _IO(DASD_IOCTL_LETTER,5) |
---|
297 | 299 | /* Quiesce IO on device */ |
---|
298 | | -#define BIODASDQUIESCE _IO(DASD_IOCTL_LETTER,6) |
---|
| 300 | +#define BIODASDQUIESCE _IO(DASD_IOCTL_LETTER,6) |
---|
299 | 301 | /* Resume IO on device */ |
---|
300 | | -#define BIODASDRESUME _IO(DASD_IOCTL_LETTER,7) |
---|
| 302 | +#define BIODASDRESUME _IO(DASD_IOCTL_LETTER,7) |
---|
301 | 303 | /* Abort all I/O on a device */ |
---|
302 | 304 | #define BIODASDABORTIO _IO(DASD_IOCTL_LETTER, 240) |
---|
303 | 305 | /* Allow I/O on a device */ |
---|
.. | .. |
---|
315 | 317 | /* Performance Statistics Read */ |
---|
316 | 318 | #define BIODASDPSRD _IOR(DASD_IOCTL_LETTER,4,dasd_rssd_perf_stats_t) |
---|
317 | 319 | /* Get Attributes (cache operations) */ |
---|
318 | | -#define BIODASDGATTR _IOR(DASD_IOCTL_LETTER,5,attrib_data_t) |
---|
| 320 | +#define BIODASDGATTR _IOR(DASD_IOCTL_LETTER,5,attrib_data_t) |
---|
319 | 321 | |
---|
320 | 322 | |
---|
321 | 323 | /* #define BIODASDFORMAT _IOW(IOCTL_LETTER,0,format_data_t) , deprecated */ |
---|
322 | | -#define BIODASDFMT _IOW(DASD_IOCTL_LETTER,1,format_data_t) |
---|
| 324 | +#define BIODASDFMT _IOW(DASD_IOCTL_LETTER,1,format_data_t) |
---|
323 | 325 | /* Set Attributes (cache operations) */ |
---|
324 | | -#define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) |
---|
| 326 | +#define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) |
---|
| 327 | +/* Release Allocated Space */ |
---|
| 328 | +#define BIODASDRAS _IOW(DASD_IOCTL_LETTER, 3, format_data_t) |
---|
325 | 329 | |
---|
326 | 330 | /* Get Sense Path Group ID (SNID) data */ |
---|
327 | 331 | #define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) |
---|