diff options
| -rw-r--r-- | drivers/ide/ide-tape.c | 96 |
1 files changed, 15 insertions, 81 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 8b9da8bb5cce..06d21bba4ea8 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c | |||
| @@ -3152,69 +3152,20 @@ static int idetape_write_filemark (ide_drive_t *drive) | |||
| 3152 | } | 3152 | } |
| 3153 | 3153 | ||
| 3154 | /* | 3154 | /* |
| 3155 | * idetape_mtioctop is called from idetape_chrdev_ioctl when | 3155 | * Called from idetape_chrdev_ioctl when the general mtio MTIOCTOP ioctl is |
| 3156 | * the general mtio MTIOCTOP ioctl is requested. | 3156 | * requested. |
| 3157 | * | 3157 | * |
| 3158 | * We currently support the following mtio.h operations: | 3158 | * Note: MTBSF and MTBSFM are not supported when the tape doesn't support |
| 3159 | * spacing over filemarks in the reverse direction. In this case, MTFSFM is also | ||
| 3160 | * usually not supported (it is supported in the rare case in which we crossed | ||
| 3161 | * the filemark during our read-ahead pipelined operation mode). | ||
| 3159 | * | 3162 | * |
| 3160 | * MTFSF - Space over mt_count filemarks in the positive direction. | 3163 | * The following commands are currently not supported: |
| 3161 | * The tape is positioned after the last spaced filemark. | ||
| 3162 | * | 3164 | * |
| 3163 | * MTFSFM - Same as MTFSF, but the tape is positioned before the | 3165 | * MTFSS, MTBSS, MTWSM, MTSETDENSITY, MTSETDRVBUFFER, MT_ST_BOOLEANS, |
| 3164 | * last filemark. | 3166 | * MT_ST_WRITE_THRESHOLD. |
| 3165 | * | ||
| 3166 | * MTBSF - Steps background over mt_count filemarks, tape is | ||
| 3167 | * positioned before the last filemark. | ||
| 3168 | * | ||
| 3169 | * MTBSFM - Like MTBSF, only tape is positioned after the last filemark. | ||
| 3170 | * | ||
| 3171 | * Note: | ||
| 3172 | * | ||
| 3173 | * MTBSF and MTBSFM are not supported when the tape doesn't | ||
| 3174 | * support spacing over filemarks in the reverse direction. | ||
| 3175 | * In this case, MTFSFM is also usually not supported (it is | ||
| 3176 | * supported in the rare case in which we crossed the filemark | ||
| 3177 | * during our read-ahead pipelined operation mode). | ||
| 3178 | * | ||
| 3179 | * MTWEOF - Writes mt_count filemarks. Tape is positioned after | ||
| 3180 | * the last written filemark. | ||
| 3181 | * | ||
| 3182 | * MTREW - Rewinds tape. | ||
| 3183 | * | ||
| 3184 | * MTLOAD - Loads the tape. | ||
| 3185 | * | ||
| 3186 | * MTOFFL - Puts the tape drive "Offline": Rewinds the tape and | ||
| 3187 | * MTUNLOAD prevents further access until the media is replaced. | ||
| 3188 | * | ||
| 3189 | * MTNOP - Flushes tape buffers. | ||
| 3190 | * | ||
| 3191 | * MTRETEN - Retension media. This typically consists of one end | ||
| 3192 | * to end pass on the media. | ||
| 3193 | * | ||
| 3194 | * MTEOM - Moves to the end of recorded data. | ||
| 3195 | * | ||
| 3196 | * MTERASE - Erases tape. | ||
| 3197 | * | ||
| 3198 | * MTSETBLK - Sets the user block size to mt_count bytes. If | ||
| 3199 | * mt_count is 0, we will attempt to autodetect | ||
| 3200 | * the block size. | ||
| 3201 | * | ||
| 3202 | * MTSEEK - Positions the tape in a specific block number, where | ||
| 3203 | * each block is assumed to contain which user_block_size | ||
| 3204 | * bytes. | ||
| 3205 | * | ||
| 3206 | * MTSETPART - Switches to another tape partition. | ||
| 3207 | * | ||
| 3208 | * MTLOCK - Locks the tape door. | ||
| 3209 | * | ||
| 3210 | * MTUNLOCK - Unlocks the tape door. | ||
| 3211 | * | ||
| 3212 | * The following commands are currently not supported: | ||
| 3213 | * | ||
| 3214 | * MTFSS, MTBSS, MTWSM, MTSETDENSITY, | ||
| 3215 | * MTSETDRVBUFFER, MT_ST_BOOLEANS, MT_ST_WRITE_THRESHOLD. | ||
| 3216 | */ | 3167 | */ |
| 3217 | static int idetape_mtioctop (ide_drive_t *drive,short mt_op,int mt_count) | 3168 | static int idetape_mtioctop(ide_drive_t *drive, short mt_op, int mt_count) |
| 3218 | { | 3169 | { |
| 3219 | idetape_tape_t *tape = drive->driver_data; | 3170 | idetape_tape_t *tape = drive->driver_data; |
| 3220 | idetape_pc_t pc; | 3171 | idetape_pc_t pc; |
| @@ -3329,29 +3280,12 @@ static int idetape_mtioctop (ide_drive_t *drive,short mt_op,int mt_count) | |||
| 3329 | } | 3280 | } |
| 3330 | 3281 | ||
| 3331 | /* | 3282 | /* |
| 3332 | * Our character device ioctls. | 3283 | * Our character device ioctls. General mtio.h magnetic io commands are |
| 3333 | * | 3284 | * supported here, and not in the corresponding block interface. Our own |
| 3334 | * General mtio.h magnetic io commands are supported here, and not in | 3285 | * ide-tape ioctls are supported on both interfaces. |
| 3335 | * the corresponding block interface. | ||
| 3336 | * | ||
| 3337 | * The following ioctls are supported: | ||
| 3338 | * | ||
| 3339 | * MTIOCTOP - Refer to idetape_mtioctop for detailed description. | ||
| 3340 | * | ||
| 3341 | * MTIOCGET - The mt_dsreg field in the returned mtget structure | ||
| 3342 | * will be set to (user block size in bytes << | ||
| 3343 | * MT_ST_BLKSIZE_SHIFT) & MT_ST_BLKSIZE_MASK. | ||
| 3344 | * | ||
| 3345 | * The mt_blkno is set to the current user block number. | ||
| 3346 | * The other mtget fields are not supported. | ||
| 3347 | * | ||
| 3348 | * MTIOCPOS - The current tape "block position" is returned. We | ||
| 3349 | * assume that each block contains user_block_size | ||
| 3350 | * bytes. | ||
| 3351 | * | ||
| 3352 | * Our own ide-tape ioctls are supported on both interfaces. | ||
| 3353 | */ | 3286 | */ |
| 3354 | static int idetape_chrdev_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) | 3287 | static int idetape_chrdev_ioctl(struct inode *inode, struct file *file, |
| 3288 | unsigned int cmd, unsigned long arg) | ||
| 3355 | { | 3289 | { |
| 3356 | struct ide_tape_obj *tape = ide_tape_f(file); | 3290 | struct ide_tape_obj *tape = ide_tape_f(file); |
| 3357 | ide_drive_t *drive = tape->drive; | 3291 | ide_drive_t *drive = tape->drive; |
