Lines Matching refs:rq

57 int ide_end_rq(ide_drive_t *drive, struct request *rq, blk_status_t error,  in ide_end_rq()  argument
70 if (!blk_update_request(rq, error, nr_bytes)) { in ide_end_rq()
71 if (rq == drive->sense_rq) { in ide_end_rq()
76 __blk_mq_end_request(rq, error); in ide_end_rq()
88 struct request *rq = cmd->rq; in ide_complete_cmd() local
115 if (rq && ata_taskfile_request(rq)) { in ide_complete_cmd()
116 struct ide_cmd *orig_cmd = ide_req(rq)->special; in ide_complete_cmd()
128 struct request *rq = hwif->rq; in ide_complete_rq() local
135 if (blk_noretry_request(rq) && error) in ide_complete_rq()
136 nr_bytes = blk_rq_sectors(rq) << 9; in ide_complete_rq()
138 rc = ide_end_rq(drive, rq, error, nr_bytes); in ide_complete_rq()
140 hwif->rq = NULL; in ide_complete_rq()
146 void ide_kill_rq(ide_drive_t *drive, struct request *rq) in ide_kill_rq() argument
148 u8 drv_req = ata_misc_request(rq) && rq->rq_disk; in ide_kill_rq()
154 scsi_req(rq)->result = 0; in ide_kill_rq()
157 scsi_req(rq)->result = IDE_DRV_ERROR_GENERAL; in ide_kill_rq()
158 else if (blk_rq_is_passthrough(rq) && scsi_req(rq)->result == 0) in ide_kill_rq()
159 scsi_req(rq)->result = -EIO; in ide_kill_rq()
162 ide_complete_rq(drive, BLK_STS_IOERR, blk_rq_bytes(rq)); in ide_kill_rq()
237 struct request *rq = cmd->rq; in ide_map_sg() local
239 cmd->sg_nents = __blk_rq_map_sg(drive->queue, rq, sg, &last_sg); in ide_map_sg()
240 if (blk_rq_bytes(rq) && (blk_rq_bytes(rq) & rq->q->dma_pad_mask)) in ide_map_sg()
242 (rq->q->dma_pad_mask & ~blk_rq_bytes(rq)) + 1; in ide_map_sg()
267 struct request *rq) in execute_drive_cmd() argument
269 struct ide_cmd *cmd = ide_req(rq)->special; in execute_drive_cmd()
273 ide_init_sg_cmd(cmd, blk_rq_sectors(rq) << 9); in execute_drive_cmd()
287 scsi_req(rq)->result = 0; in execute_drive_cmd()
288 ide_complete_rq(drive, BLK_STS_OK, blk_rq_bytes(rq)); in execute_drive_cmd()
293 static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq) in ide_special_rq() argument
295 u8 cmd = scsi_req(rq)->cmd[0]; in ide_special_rq()
300 return ide_do_park_unpark(drive, rq); in ide_special_rq()
302 return ide_do_devset(drive, rq); in ide_special_rq()
319 static ide_startstop_t start_request (ide_drive_t *drive, struct request *rq) in start_request() argument
325 drive->hwif->name, (unsigned long) rq); in start_request()
330 rq->rq_flags |= RQF_FAILED; in start_request()
334 if (drive->prep_rq && !drive->prep_rq(drive, rq)) in start_request()
337 if (ata_pm_request(rq)) in start_request()
338 ide_check_pm_state(drive, rq); in start_request()
357 if (ata_taskfile_request(rq)) in start_request()
358 return execute_drive_cmd(drive, rq); in start_request()
359 else if (ata_pm_request(rq)) { in start_request()
360 struct ide_pm_state *pm = ide_req(rq)->special; in start_request()
365 startstop = ide_start_power_step(drive, rq); in start_request()
368 ide_complete_pm_rq(drive, rq); in start_request()
370 } else if (!rq->rq_disk && ata_misc_request(rq)) in start_request()
379 return ide_special_rq(drive, rq); in start_request()
381 drv = *(struct ide_driver **)rq->rq_disk->private_data; in start_request()
383 return drv->do_request(drive, rq, blk_rq_pos(rq)); in start_request()
387 ide_kill_rq(drive, rq); in start_request()
447 void ide_requeue_and_plug(ide_drive_t *drive, struct request *rq) in ide_requeue_and_plug() argument
452 if (rq) { in ide_requeue_and_plug()
453 blk_mq_requeue_request(rq, false); in ide_requeue_and_plug()
459 blk_status_t ide_issue_rq(ide_drive_t *drive, struct request *rq, in ide_issue_rq() argument
466 if (!blk_rq_is_passthrough(rq) && !(rq->rq_flags & RQF_DONTPREP)) { in ide_issue_rq()
467 rq->rq_flags |= RQF_DONTPREP; in ide_issue_rq()
468 ide_req(rq)->special = NULL; in ide_issue_rq()
482 WARN_ON_ONCE(hwif->rq); in ide_issue_rq()
520 ata_pm_request(rq) == 0 && in ide_issue_rq()
521 (rq->rq_flags & RQF_PM) == 0) { in ide_issue_rq()
527 scsi_req(rq)->resid_len = blk_rq_bytes(rq); in ide_issue_rq()
528 hwif->rq = rq; in ide_issue_rq()
531 startstop = start_request(drive, rq); in ide_issue_rq()
535 rq = hwif->rq; in ide_issue_rq()
536 hwif->rq = NULL; in ide_issue_rq()
537 if (rq) in ide_issue_rq()
545 list_add(&rq->queuelist, &drive->rq_list); in ide_issue_rq()
549 ide_requeue_and_plug(drive, rq); in ide_issue_rq()
555 if (rq == NULL) in ide_issue_rq()
576 blk_mq_start_request(bd->rq); in ide_queue_rq()
577 return ide_issue_rq(drive, bd->rq, false); in ide_queue_rq()
688 rq_in_flight = hwif->rq; in ide_timer_expiry()
689 hwif->rq = NULL; in ide_timer_expiry()
865 rq_in_flight = hwif->rq; in ide_intr()
866 hwif->rq = NULL; in ide_intr()
898 void ide_insert_request_head(ide_drive_t *drive, struct request *rq) in ide_insert_request_head() argument
901 list_add_tail(&rq->queuelist, &drive->rq_list); in ide_insert_request_head()