On Wed, 23 Apr 2008 09:31:36 +0200 Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> wrote: > On Tue, Apr 22, 2008 at 09:26:38AM +0900, FUJITA Tomonori wrote: > > This replaces struct request on the stack with blk_get_request in the > > ide_do_drive_cmd path that uses ide_wait. > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> > > Cc: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> > > --- > > drivers/ide/ide-tape.c | 35 ++++++++++++++++++++--------------- > > 1 files changed, 20 insertions(+), 15 deletions(-) > > > > diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c > > index 02851b3..04c611e 100644 > > --- a/drivers/ide/ide-tape.c > > +++ b/drivers/ide/ide-tape.c > > @@ -1910,13 +1910,15 @@ static void idetape_create_test_unit_ready_cmd(struct ide_atapi_pc *pc) > > static int __idetape_queue_pc_tail(ide_drive_t *drive, struct ide_atapi_pc *pc) > > { > > struct ide_tape_obj *tape = drive->driver_data; > > - struct request rq; > > + struct request *rq; > > int ret; > > > > - idetape_init_rq(&rq, REQ_IDETAPE_PC1); > > - rq.buffer = (char *) pc; > > - rq.rq_disk = tape->disk; > > - ret = ide_do_drive_cmd(drive, &rq, ide_wait); > > + rq = blk_get_request(drive->queue, READ, __GFP_WAIT); > > + rq->cmd_type = REQ_TYPE_SPECIAL; > > + rq->cmd[0] = REQ_IDETAPE_PC1; > > + rq->buffer = (char *)pc; > > + rq->rq_disk = tape->disk; > > + ret = ide_do_drive_cmd(drive, rq, ide_wait); > > return ret ? -EIO : 0; > > > > } > > @@ -2130,7 +2132,8 @@ static int idetape_queue_rw_tail(ide_drive_t *drive, int cmd, int blocks, > > struct idetape_bh *bh) > > { > > idetape_tape_t *tape = drive->driver_data; > > - struct request rq; > > + struct request *rq; > > + int ret; > > > > debug_log(DBG_SENSE, "%s: cmd=%d\n", __func__, cmd); > > > > @@ -2140,22 +2143,24 @@ static int idetape_queue_rw_tail(ide_drive_t *drive, int cmd, int blocks, > > return (0); > > } > > > > - idetape_init_rq(&rq, cmd); > > - rq.rq_disk = tape->disk; > > - rq.special = (void *)bh; > > - rq.sector = tape->first_frame; > > - rq.nr_sectors = blocks; > > - rq.current_nr_sectors = blocks; > > - (void) ide_do_drive_cmd(drive, &rq, ide_wait); > > + rq = blk_get_request(drive->queue, READ, __GFP_WAIT); > > + rq->cmd_type = REQ_TYPE_SPECIAL; > > + rq->cmd[0] = cmd; > > + rq->rq_disk = tape->disk; > > + rq->special = (void *)bh; > > + rq->sector = tape->first_frame; > > + rq->nr_sectors = blocks; > > + rq->current_nr_sectors = blocks; > > + ret = ide_do_drive_cmd(drive, rq, ide_wait); > > > > if ((cmd & (REQ_IDETAPE_READ | REQ_IDETAPE_WRITE)) == 0) > > return 0; > > > > if (tape->merge_stage) > > idetape_init_merge_stage(tape); > > - if (rq.errors == IDETAPE_ERROR_GENERAL) > > + if (ret == IDETAPE_ERROR_GENERAL) > > return -EIO; > > - return (tape->blk_size * (blocks-rq.current_nr_sectors)); > > + return (tape->blk_size * (blocks-rq->current_nr_sectors)); > > } > > > > /* start servicing the pipeline stages, starting from tape->next_stage. */ > > are you sure you're patching against the right ide tree? See, we removed > pipelining (patches went in around the beginning of April) and the above comment > kinda says the opposite. Just to make sure, the latest quilt tree is at > http://www.kernel.org/pub/linux/kernel/people/bart/pata-2.6/patches/. The patchset is against Bart's git tree: git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6.git Doesn't his git tree include the latest ide code? -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html