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, 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

[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