Skip to content

Commit

Permalink
ide-tape: remove idetape_pipeline_size()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Borislav Petkov authored and Bartlomiej Zolnierkiewicz committed Apr 27, 2008
1 parent 7f5e72f commit b361acb
Showing 1 changed file with 2 additions and 22 deletions.
24 changes: 2 additions & 22 deletions drivers/ide/ide-tape.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit b361acb

Please sign in to comment.