|
@@ -2270,27 +2270,6 @@ static void idetape_pad_zeros(ide_drive_t *drive, int bcount)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static int idetape_pipeline_size(ide_drive_t *drive)
|
|
|
-{
|
|
|
- idetape_tape_t *tape = drive->driver_data;
|
|
|
- idetape_stage_t *stage;
|
|
|
- struct request *rq;
|
|
|
- int size = 0;
|
|
|
-
|
|
|
- idetape_wait_for_pipeline(drive);
|
|
|
- stage = tape->first_stage;
|
|
|
- while (stage != NULL) {
|
|
|
- rq = &stage->rq;
|
|
|
- size += tape->blk_size * (rq->nr_sectors -
|
|
|
- rq->current_nr_sectors);
|
|
|
- if (rq->errors == IDETAPE_ERROR_FILEMARK)
|
|
|
- size += tape->blk_size;
|
|
|
- stage = stage->next;
|
|
|
- }
|
|
|
- size += tape->merge_stage_size;
|
|
|
- return size;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Rewinds the tape to the Beginning Of the current Partition (BOP). We
|
|
|
* currently support only one partition.
|
|
@@ -2737,7 +2716,8 @@ static int idetape_chrdev_ioctl(struct inode *inode, struct file *file,
|
|
|
idetape_flush_tape_buffers(drive);
|
|
|
}
|
|
|
if (cmd == MTIOCGET || cmd == MTIOCPOS) {
|
|
|
- block_offset = idetape_pipeline_size(drive) /
|
|
|
+ idetape_wait_for_pipeline(drive);
|
|
|
+ block_offset = tape->merge_stage_size /
|
|
|
(tape->blk_size * tape->user_bs_factor);
|
|
|
position = idetape_read_position(drive);
|
|
|
if (position < 0)
|