Re: [PATCH 07/11] ide-tape: use blk_get_request in the ide_do_drive_cmd path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 23, 2008 at 10:25 AM, FUJITA Tomonori
<fujita.tomonori@xxxxxxxxxxxxx> wrote:
>
> 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?
>

No, this is the git tree that Bart sends to Linus to merge upstream. You should
get the latest patches from the URL i gave you before and quilt push them on
your git tree. That's the way i do it.

-- 
Regards/Gruß,
Boris
--
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

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux