forked from Minki/linux
ide: set REQ_PREEMPT request flag in ide_do_drive_cmd() users
* Set REQ_PREEMPT request flag in ide_do_drive_cmd() users for ide_preempt and ide_head_wait action types. * Remove setting REQ_PREEMPT from ide_do_drive_cmd(). While at it: * Set 'where' variable outside ide_lock. This is a preparation for converting IDE to use blk_execute_rq(). There should be no functional changes caused by this patch. Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Borislav Petkov <petkovbb@gmail.com> Cc: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
5d0cc8ae29
commit
e8a96aa713
@ -216,6 +216,7 @@ static void cdrom_queue_request_sense(ide_drive_t *drive, void *sense,
|
||||
rq->data_len = 18;
|
||||
|
||||
rq->cmd_type = REQ_TYPE_SENSE;
|
||||
rq->cmd_flags |= REQ_PREEMPT;
|
||||
|
||||
/* NOTE! Save the failed command in "rq->buffer" */
|
||||
rq->buffer = (void *) failed_command;
|
||||
|
@ -289,6 +289,7 @@ static void idefloppy_queue_pc_head(ide_drive_t *drive, struct ide_atapi_pc *pc,
|
||||
ide_init_drive_cmd(rq);
|
||||
rq->buffer = (char *) pc;
|
||||
rq->cmd_type = REQ_TYPE_SPECIAL;
|
||||
rq->cmd_flags |= REQ_PREEMPT;
|
||||
rq->rq_disk = floppy->disk;
|
||||
(void) ide_do_drive_cmd(drive, rq, ide_preempt);
|
||||
}
|
||||
|
@ -1600,13 +1600,12 @@ int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t actio
|
||||
rq->end_io = blk_end_sync_rq;
|
||||
}
|
||||
|
||||
if (action == ide_preempt || action == ide_head_wait)
|
||||
where = ELEVATOR_INSERT_FRONT;
|
||||
|
||||
spin_lock_irqsave(&ide_lock, flags);
|
||||
if (action == ide_preempt)
|
||||
hwgroup->rq = NULL;
|
||||
if (action == ide_preempt || action == ide_head_wait) {
|
||||
where = ELEVATOR_INSERT_FRONT;
|
||||
rq->cmd_flags |= REQ_PREEMPT;
|
||||
}
|
||||
__elv_add_request(drive->queue, rq, where, 0);
|
||||
ide_do_request(hwgroup, IDE_NO_IRQ);
|
||||
spin_unlock_irqrestore(&ide_lock, flags);
|
||||
|
@ -688,6 +688,7 @@ static void idetape_queue_pc_head(ide_drive_t *drive, struct ide_atapi_pc *pc,
|
||||
struct ide_tape_obj *tape = drive->driver_data;
|
||||
|
||||
idetape_init_rq(rq, REQ_IDETAPE_PC1);
|
||||
rq->cmd_flags |= REQ_PREEMPT;
|
||||
rq->buffer = (char *) pc;
|
||||
rq->rq_disk = tape->disk;
|
||||
(void) ide_do_drive_cmd(drive, rq, ide_preempt);
|
||||
|
@ -606,6 +606,7 @@ static int generic_ide_resume(struct device *dev)
|
||||
memset(&rqpm, 0, sizeof(rqpm));
|
||||
memset(&args, 0, sizeof(args));
|
||||
rq.cmd_type = REQ_TYPE_PM_RESUME;
|
||||
rq.cmd_flags |= REQ_PREEMPT;
|
||||
rq.special = &args;
|
||||
rq.data = &rqpm;
|
||||
rqpm.pm_step = ide_pm_state_start_resume;
|
||||
|
@ -235,6 +235,7 @@ static int idescsi_check_condition(ide_drive_t *drive,
|
||||
pc->c[0] = REQUEST_SENSE;
|
||||
pc->c[4] = pc->req_xfer = pc->buf_size = SCSI_SENSE_BUFFERSIZE;
|
||||
rq->cmd_type = REQ_TYPE_SENSE;
|
||||
rq->cmd_flags |= REQ_PREEMPT;
|
||||
pc->timeout = jiffies + WAIT_READY;
|
||||
/* NOTE! Save the failed packet command in "rq->buffer" */
|
||||
rq->buffer = (void *) failed_cmd->special;
|
||||
|
Loading…
Reference in New Issue
Block a user