diff options
Diffstat (limited to 'drivers/ide/ide-tape.c')
-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; |