diff options
Diffstat (limited to 'drivers/ide/ide-disk.c')
| -rw-r--r-- | drivers/ide/ide-disk.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 8e08d083fce..3a2e80237c1 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c @@ -198,8 +198,7 @@ static ide_startstop_t __ide_do_rw_disk(ide_drive_t *drive, struct request *rq,  	}  	memset(&task, 0, sizeof(task)); -	task.tf_flags = IDE_TFLAG_NO_SELECT_MASK;  /* FIXME? */ -	task.tf_flags |= (IDE_TFLAG_TF | IDE_TFLAG_DEVICE); +	task.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;  	if (drive->select.b.lba) {  		if (lba48) { @@ -617,7 +616,8 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)   */  static int set_multcount(ide_drive_t *drive, int arg)  { -	struct request rq; +	struct request *rq; +	int error;  	if (arg < 0 || arg > drive->id->max_multsect)  		return -EINVAL; @@ -625,12 +625,13 @@ static int set_multcount(ide_drive_t *drive, int arg)  	if (drive->special.b.set_multmode)  		return -EBUSY; -	ide_init_drive_cmd(&rq); -	rq.cmd_type = REQ_TYPE_ATA_TASKFILE; +	rq = blk_get_request(drive->queue, READ, __GFP_WAIT); +	rq->cmd_type = REQ_TYPE_ATA_TASKFILE;  	drive->mult_req = arg;  	drive->special.b.set_multmode = 1; -	(void)ide_do_drive_cmd(drive, &rq, ide_wait); +	error = blk_execute_rq(drive->queue, NULL, rq, 0); +	blk_put_request(rq);  	return (drive->mult_count == arg) ? 0 : -EIO;  } @@ -984,7 +985,6 @@ static ide_driver_t idedisk_driver = {  	.do_request		= ide_do_rw_disk,  	.end_request		= ide_end_request,  	.error			= __ide_error, -	.abort			= __ide_abort,  #ifdef CONFIG_IDE_PROC_FS  	.proc			= idedisk_proc,  #endif  |