diff options
| author | Jan Höppner <hoeppner@linux.vnet.ibm.com> | 2015-08-19 07:41:20 -0400 |
|---|---|---|
| committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-04-15 12:16:39 -0400 |
| commit | 8fd575200db5b53f6ea6818dd017f1b43190db12 (patch) | |
| tree | 670f65e645d0d669864979d13a5e91448b53f8ad /arch/s390/include/uapi | |
| parent | 3fa7ee8844c31cb9c78992bb82cfaeb13375345d (diff) | |
s390/dasd: Add new ioctl BIODASDCHECKFMT
Implement new DASD IOCTL BIODASDCHECKFMT to check a range of tracks on a
DASD volume for correct formatting. The following characteristics are
checked:
- Block size
- ECKD key length
- ECKD record ID
- Number of records per track
Signed-off-by: Jan Höppner <hoeppner@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/uapi')
| -rw-r--r-- | arch/s390/include/uapi/asm/dasd.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/s390/include/uapi/asm/dasd.h b/arch/s390/include/uapi/asm/dasd.h index 5812a3b2df9e..1340311dab77 100644 --- a/arch/s390/include/uapi/asm/dasd.h +++ b/arch/s390/include/uapi/asm/dasd.h | |||
| @@ -187,6 +187,36 @@ typedef struct format_data_t { | |||
| 187 | #define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ | 187 | #define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ |
| 188 | #define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ | 188 | #define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ |
| 189 | 189 | ||
| 190 | /* | ||
| 191 | * struct format_check_t | ||
| 192 | * represents all data necessary to evaluate the format of | ||
| 193 | * different tracks of a dasd | ||
| 194 | */ | ||
| 195 | typedef struct format_check_t { | ||
| 196 | /* Input */ | ||
| 197 | struct format_data_t expect; | ||
| 198 | |||
| 199 | /* Output */ | ||
| 200 | unsigned int result; /* Error indication (DASD_FMT_ERR_*) */ | ||
| 201 | unsigned int unit; /* Track that is in error */ | ||
| 202 | unsigned int rec; /* Record that is in error */ | ||
| 203 | unsigned int num_records; /* Records in the track in error */ | ||
| 204 | unsigned int blksize; /* Blocksize of first record in error */ | ||
| 205 | unsigned int key_length; /* Key length of first record in error */ | ||
| 206 | } format_check_t; | ||
| 207 | |||
| 208 | /* Values returned in format_check_t when a format error is detected: */ | ||
| 209 | /* Too few records were found on a single track */ | ||
| 210 | #define DASD_FMT_ERR_TOO_FEW_RECORDS 1 | ||
| 211 | /* Too many records were found on a single track */ | ||
| 212 | #define DASD_FMT_ERR_TOO_MANY_RECORDS 2 | ||
| 213 | /* Blocksize/data-length of a record was wrong */ | ||
| 214 | #define DASD_FMT_ERR_BLKSIZE 3 | ||
| 215 | /* A record ID is defined by cylinder, head, and record number (CHR). */ | ||
| 216 | /* On mismatch, this error is set */ | ||
| 217 | #define DASD_FMT_ERR_RECORD_ID 4 | ||
| 218 | /* If key-length was != 0 */ | ||
| 219 | #define DASD_FMT_ERR_KEY_LENGTH 5 | ||
| 190 | 220 | ||
| 191 | /* | 221 | /* |
| 192 | * struct attrib_data_t | 222 | * struct attrib_data_t |
| @@ -288,6 +318,8 @@ struct dasd_snid_ioctl_data { | |||
| 288 | 318 | ||
| 289 | /* Get Sense Path Group ID (SNID) data */ | 319 | /* Get Sense Path Group ID (SNID) data */ |
| 290 | #define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) | 320 | #define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) |
| 321 | /* Check device format according to format_check_t */ | ||
| 322 | #define BIODASDCHECKFMT _IOWR(DASD_IOCTL_LETTER, 2, format_check_t) | ||
| 291 | 323 | ||
| 292 | #define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) | 324 | #define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) |
| 293 | 325 | ||
