ide-tape: remove idetape_pipeline_size()
authorBorislav Petkov <petkovbb@googlemail.com>
Sun, 27 Apr 2008 13:38:26 +0000 (15:38 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sun, 27 Apr 2008 13:38:26 +0000 (15:38 +0200)
The computation of the block offset of the the tape position (MTIOCPOS,
MTIOCGET) is not influenced by the stages queued in the pipeline anymore but by
the size of the current buffer which is going to be sent to the drive.

[bart: resurrect deleted idetape_wait_for_pipeline() call]

Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-tape.c

index 745e2fa549b9bff2d501f10dab2b52db57c453b2..25ffcbffb02ae7e7abe35761d887cca6281a763b 100644 (file)
@@ -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)