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 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/.

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

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