[PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request - Kernel

This is a discussion on [PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request - Kernel ; We fall back to non-pipelined operation through idetape_queue_rw_tail with cmd set to REQ_IDETAPE_READ. Also, remove idetape_switch_buffers() since it becomes unused. Signed-off-by: Borislav Petkov --- drivers/ide/ide-tape.c | 46 +--------------------------------------------- 1 files changed, 1 insertions(+), 45 deletions(-) diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: [PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request

  1. [PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request

    We fall back to non-pipelined operation through idetape_queue_rw_tail with cmd
    set to REQ_IDETAPE_READ. Also, remove idetape_switch_buffers() since it becomes
    unused.

    Signed-off-by: Borislav Petkov
    ---
    drivers/ide/ide-tape.c | 46 +---------------------------------------------
    1 files changed, 1 insertions(+), 45 deletions(-)

    diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
    index abf3efa..e919d41 100644
    --- a/drivers/ide/ide-tape.c
    +++ b/drivers/ide/ide-tape.c
    @@ -1776,16 +1776,6 @@ static void idetape_init_merge_stage(idetape_tape_t *tape)
    }
    }

    -static void idetape_switch_buffers(idetape_tape_t *tape, idetape_stage_t *stage)
    -{
    - struct idetape_bh *tmp;
    -
    - tmp = stage->bh;
    - stage->bh = tape->merge_stage->bh;
    - tape->merge_stage->bh = tmp;
    - idetape_init_merge_stage(tape);
    -}
    -
    /* Add a new stage at the end of the pipeline. */
    static void idetape_add_stage_tail(ide_drive_t *drive, idetape_stage_t *stage)
    {
    @@ -2403,9 +2393,6 @@ static int idetape_init_read(ide_drive_t *drive, int max_stages)
    static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    {
    idetape_tape_t *tape = drive->driver_data;
    - unsigned long flags;
    - struct request *rq_ptr;
    - int bytes_read;

    debug_log(DBG_PROCS, "Enter %s, %d blocks\n", __func__, blocks);

    @@ -2413,39 +2400,8 @@ static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    if (test_bit(IDETAPE_FLAG_FILEMARK, &tape->flags))
    return 0;

    - /* Wait for the next block to reach the head of the pipeline. */
    - idetape_init_read(drive, tape->max_stages);
    - if (tape->first_stage == NULL) {
    - if (test_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags))
    - return 0;
    - return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    + return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    tape->merge_stage->bh);
    - }
    - idetape_wait_first_stage(drive);
    - rq_ptr = &tape->first_stage->rq;
    - bytes_read = tape->blk_size * (rq_ptr->nr_sectors -
    - rq_ptr->current_nr_sectors);
    - rq_ptr->nr_sectors = 0;
    - rq_ptr->current_nr_sectors = 0;
    -
    - if (rq_ptr->errors == IDETAPE_ERROR_EOD)
    - return 0;
    - else {
    - idetape_switch_buffers(tape, tape->first_stage);
    - if (rq_ptr->errors == IDETAPE_ERROR_FILEMARK)
    - set_bit(IDETAPE_FLAG_FILEMARK, &tape->flags);
    - spin_lock_irqsave(&tape->lock, flags);
    - idetape_remove_stage_head(drive);
    - spin_unlock_irqrestore(&tape->lock, flags);
    - tape->pipeline_head++;
    - idetape_calculate_speeds(drive);
    - }
    - if (bytes_read > blocks * tape->blk_size) {
    - printk(KERN_ERR "ide-tape: bug: trying to return more bytes"
    - " than requested\n");
    - bytes_read = blocks * tape->blk_size;
    - }
    - return (bytes_read);
    }

    static void idetape_pad_zeros(ide_drive_t *drive, int bcount)
    --
    1.5.4.1

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request

    On Saturday 01 March 2008, Borislav Petkov wrote:
    > We fall back to non-pipelined operation through idetape_queue_rw_tail with cmd
    > set to REQ_IDETAPE_READ. Also, remove idetape_switch_buffers() since it becomes
    > unused.
    >
    > Signed-off-by: Borislav Petkov
    > ---
    > drivers/ide/ide-tape.c | 46 +---------------------------------------------
    > 1 files changed, 1 insertions(+), 45 deletions(-)
    >
    > diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
    > index abf3efa..e919d41 100644
    > --- a/drivers/ide/ide-tape.c
    > +++ b/drivers/ide/ide-tape.c
    > @@ -1776,16 +1776,6 @@ static void idetape_init_merge_stage(idetape_tape_t *tape)
    > }
    > }
    >
    > -static void idetape_switch_buffers(idetape_tape_t *tape, idetape_stage_t *stage)
    > -{
    > - struct idetape_bh *tmp;
    > -
    > - tmp = stage->bh;
    > - stage->bh = tape->merge_stage->bh;
    > - tape->merge_stage->bh = tmp;
    > - idetape_init_merge_stage(tape);
    > -}
    > -
    > /* Add a new stage at the end of the pipeline. */
    > static void idetape_add_stage_tail(ide_drive_t *drive, idetape_stage_t *stage)
    > {
    > @@ -2403,9 +2393,6 @@ static int idetape_init_read(ide_drive_t *drive, int max_stages)
    > static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    > {
    > idetape_tape_t *tape = drive->driver_data;
    > - unsigned long flags;
    > - struct request *rq_ptr;
    > - int bytes_read;
    >
    > debug_log(DBG_PROCS, "Enter %s, %d blocks\n", __func__, blocks);
    >
    > @@ -2413,39 +2400,8 @@ static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    > if (test_bit(IDETAPE_FLAG_FILEMARK, &tape->flags))
    > return 0;
    >
    > - /* Wait for the next block to reach the head of the pipeline. */
    > - idetape_init_read(drive, tape->max_stages);


    Can it be simply removed? Why?

    > - if (tape->first_stage == NULL) {
    > - if (test_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags))
    > - return 0;
    > - return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    > + return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    > tape->merge_stage->bh);


    Looking at the driver code tape->first_stage is not always NULL,
    seems like ide_tape_add_stage_tail() should vanish first?
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH 03/24] ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request

    On Sun, Mar 02, 2008 at 07:36:12PM +0100, Bartlomiej Zolnierkiewicz wrote:
    > On Saturday 01 March 2008, Borislav Petkov wrote:
    > > We fall back to non-pipelined operation through idetape_queue_rw_tail with cmd
    > > set to REQ_IDETAPE_READ. Also, remove idetape_switch_buffers() since it becomes
    > > unused.
    > >
    > > Signed-off-by: Borislav Petkov
    > > ---
    > > drivers/ide/ide-tape.c | 46 +---------------------------------------------
    > > 1 files changed, 1 insertions(+), 45 deletions(-)
    > >
    > > diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
    > > index abf3efa..e919d41 100644
    > > --- a/drivers/ide/ide-tape.c
    > > +++ b/drivers/ide/ide-tape.c
    > > @@ -1776,16 +1776,6 @@ static void idetape_init_merge_stage(idetape_tape_t *tape)
    > > }
    > > }
    > >
    > > -static void idetape_switch_buffers(idetape_tape_t *tape, idetape_stage_t *stage)
    > > -{
    > > - struct idetape_bh *tmp;
    > > -
    > > - tmp = stage->bh;
    > > - stage->bh = tape->merge_stage->bh;
    > > - tape->merge_stage->bh = tmp;
    > > - idetape_init_merge_stage(tape);
    > > -}
    > > -
    > > /* Add a new stage at the end of the pipeline. */
    > > static void idetape_add_stage_tail(ide_drive_t *drive, idetape_stage_t *stage)
    > > {
    > > @@ -2403,9 +2393,6 @@ static int idetape_init_read(ide_drive_t *drive, int max_stages)
    > > static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    > > {
    > > idetape_tape_t *tape = drive->driver_data;
    > > - unsigned long flags;
    > > - struct request *rq_ptr;
    > > - int bytes_read;
    > >
    > > debug_log(DBG_PROCS, "Enter %s, %d blocks\n", __func__, blocks);
    > >
    > > @@ -2413,39 +2400,8 @@ static int idetape_add_chrdev_read_request(ide_drive_t *drive, int blocks)
    > > if (test_bit(IDETAPE_FLAG_FILEMARK, &tape->flags))
    > > return 0;
    > >
    > > - /* Wait for the next block to reach the head of the pipeline. */
    > > - idetape_init_read(drive, tape->max_stages);

    >
    > Can it be simply removed? Why?


    Bugger, actually this one _has_ to stay since it inits the tape->merge_stage
    buffer.

    > > - if (tape->first_stage == NULL) {
    > > - if (test_bit(IDETAPE_FLAG_PIPELINE_ERR, &tape->flags))
    > > - return 0;
    > > - return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    > > + return idetape_queue_rw_tail(drive, REQ_IDETAPE_READ, blocks,
    > > tape->merge_stage->bh);

    >
    > Looking at the driver code tape->first_stage is not always NULL,
    > seems like ide_tape_add_stage_tail() should vanish first?


    At this moment there are no more stages in the pipeline besides only
    tape->merge_stage. But this boils down to whether we want to keep the driver
    functional in intermittent stages of the removal, as i pointed out before...

    --
    Regards/Gruß,
    Boris.
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread