aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-tape.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-tape.c')
-rw-r--r--drivers/ide/ide-tape.c96
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 */
3217static int idetape_mtioctop (ide_drive_t *drive,short mt_op,int mt_count) 3168static 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 */
3354static int idetape_chrdev_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) 3287static 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;