Lines Matching refs:io_request

74 	struct pqi_io_request *io_request);
673 static inline void pqi_reinit_io_request(struct pqi_io_request *io_request) in pqi_reinit_io_request() argument
675 io_request->scmd = NULL; in pqi_reinit_io_request()
676 io_request->status = 0; in pqi_reinit_io_request()
677 io_request->error_info = NULL; in pqi_reinit_io_request()
678 io_request->raid_bypass = false; in pqi_reinit_io_request()
684 struct pqi_io_request *io_request; in pqi_alloc_io_request() local
688 io_request = &ctrl_info->io_request_pool[i]; in pqi_alloc_io_request()
689 if (atomic_inc_return(&io_request->refcount) == 1) in pqi_alloc_io_request()
691 atomic_dec(&io_request->refcount); in pqi_alloc_io_request()
698 pqi_reinit_io_request(io_request); in pqi_alloc_io_request()
700 return io_request; in pqi_alloc_io_request()
703 static void pqi_free_io_request(struct pqi_io_request *io_request) in pqi_free_io_request() argument
705 atomic_dec(&io_request->refcount); in pqi_free_io_request()
3095 static inline void pqi_aio_path_disabled(struct pqi_io_request *io_request) in pqi_aio_path_disabled() argument
3099 device = io_request->scmd->device->hostdata; in pqi_aio_path_disabled()
3121 static void pqi_process_raid_io_error(struct pqi_io_request *io_request) in pqi_process_raid_io_error() argument
3132 scmd = io_request->scmd; in pqi_process_raid_io_error()
3136 error_info = io_request->error_info; in pqi_process_raid_io_error()
3222 static void pqi_process_aio_io_error(struct pqi_io_request *io_request) in pqi_process_aio_io_error() argument
3234 scmd = io_request->scmd; in pqi_process_aio_io_error()
3235 error_info = io_request->error_info; in pqi_process_aio_io_error()
3263 pqi_aio_path_disabled(io_request); in pqi_process_aio_io_error()
3270 io_request->status = -EAGAIN; in pqi_process_aio_io_error()
3275 if (!io_request->raid_bypass) { in pqi_process_aio_io_error()
3320 struct pqi_io_request *io_request) in pqi_process_io_error() argument
3324 pqi_process_raid_io_error(io_request); in pqi_process_io_error()
3327 pqi_process_aio_io_error(io_request); in pqi_process_io_error()
3371 struct pqi_io_request *io_request; in pqi_process_io_intr() local
3403 io_request = &ctrl_info->io_request_pool[request_id]; in pqi_process_io_intr()
3404 if (atomic_read(&io_request->refcount) == 0) { in pqi_process_io_intr()
3415 if (io_request->scmd) in pqi_process_io_intr()
3416 io_request->scmd->result = 0; in pqi_process_io_intr()
3421 io_request->status = in pqi_process_io_intr()
3426 io_request->status = pqi_interpret_task_management_response(ctrl_info, in pqi_process_io_intr()
3430 pqi_aio_path_disabled(io_request); in pqi_process_io_intr()
3431 io_request->status = -EAGAIN; in pqi_process_io_intr()
3435 io_request->error_info = ctrl_info->error_buffer + in pqi_process_io_intr()
3438 pqi_process_io_error(response->header.iu_type, io_request); in pqi_process_io_intr()
3448 io_request->io_complete_callback(io_request, io_request->context); in pqi_process_io_intr()
4422 struct pqi_io_request *io_request) in pqi_start_io() argument
4437 if (io_request) { in pqi_start_io()
4438 io_request->queue_group = queue_group; in pqi_start_io()
4439 list_add_tail(&io_request->request_list_entry, in pqi_start_io()
4445 list_for_each_entry_safe(io_request, next, in pqi_start_io()
4448 request = io_request->iu; in pqi_start_io()
4485 list_del(&io_request->request_list_entry); in pqi_start_io()
4524 static void pqi_raid_synchronous_complete(struct pqi_io_request *io_request, in pqi_raid_synchronous_complete() argument
4565 struct pqi_io_request *io_request; in pqi_submit_raid_request_synchronous() local
4589 io_request = pqi_alloc_io_request(ctrl_info); in pqi_submit_raid_request_synchronous()
4591 put_unaligned_le16(io_request->index, in pqi_submit_raid_request_synchronous()
4600 memcpy(io_request->iu, request, iu_length); in pqi_submit_raid_request_synchronous()
4602 io_request->io_complete_callback = pqi_raid_synchronous_complete; in pqi_submit_raid_request_synchronous()
4603 io_request->context = &wait; in pqi_submit_raid_request_synchronous()
4606 io_request); in pqi_submit_raid_request_synchronous()
4611 if (io_request->error_info) in pqi_submit_raid_request_synchronous()
4612 memcpy(error_info, io_request->error_info, sizeof(*error_info)); in pqi_submit_raid_request_synchronous()
4615 } else if (rc == 0 && io_request->error_info) { in pqi_submit_raid_request_synchronous()
4616 rc = pqi_process_raid_io_error_synchronous(io_request->error_info); in pqi_submit_raid_request_synchronous()
4619 pqi_free_io_request(io_request); in pqi_submit_raid_request_synchronous()
5084 struct pqi_io_request *io_request; in pqi_free_all_io_requests() local
5091 io_request = ctrl_info->io_request_pool; in pqi_free_all_io_requests()
5094 kfree(io_request->iu); in pqi_free_all_io_requests()
5095 if (!io_request->sg_chain_buffer) in pqi_free_all_io_requests()
5098 io_request->sg_chain_buffer, in pqi_free_all_io_requests()
5099 io_request->sg_chain_buffer_dma_handle); in pqi_free_all_io_requests()
5100 io_request++; in pqi_free_all_io_requests()
5126 struct pqi_io_request *io_request; in pqi_alloc_io_resources() local
5139 io_request = ctrl_info->io_request_pool; in pqi_alloc_io_resources()
5142 io_request->iu = kmalloc(ctrl_info->max_inbound_iu_length, GFP_KERNEL); in pqi_alloc_io_resources()
5144 if (!io_request->iu) { in pqi_alloc_io_resources()
5160 io_request->index = i; in pqi_alloc_io_resources()
5161 io_request->sg_chain_buffer = sg_chain_buffer; in pqi_alloc_io_resources()
5162 io_request->sg_chain_buffer_dma_handle = sg_chain_buffer_dma_handle; in pqi_alloc_io_resources()
5163 io_request++; in pqi_alloc_io_resources()
5289 struct scatterlist *sg, int sg_count, struct pqi_io_request *io_request, in pqi_build_sg_list() argument
5309 put_unaligned_le64((u64)io_request->sg_chain_buffer_dma_handle, in pqi_build_sg_list()
5316 sg_descriptor = io_request->sg_chain_buffer; in pqi_build_sg_list()
5328 struct pqi_io_request *io_request) in pqi_build_raid_sg_list() argument
5350 num_sg_in_iu = pqi_build_sg_list(sg_descriptor, sg, sg_count, io_request, in pqi_build_raid_sg_list()
5364 struct pqi_io_request *io_request) in pqi_build_aio_r1_sg_list() argument
5387 num_sg_in_iu = pqi_build_sg_list(sg_descriptor, sg, sg_count, io_request, in pqi_build_aio_r1_sg_list()
5402 struct pqi_io_request *io_request) in pqi_build_aio_r56_sg_list() argument
5423 num_sg_in_iu = pqi_build_sg_list(sg_descriptor, sg, sg_count, io_request, in pqi_build_aio_r56_sg_list()
5438 struct pqi_io_request *io_request) in pqi_build_aio_sg_list() argument
5461 num_sg_in_iu = pqi_build_sg_list(sg_descriptor, sg, sg_count, io_request, in pqi_build_aio_sg_list()
5474 static void pqi_raid_io_complete(struct pqi_io_request *io_request, in pqi_raid_io_complete() argument
5479 scmd = io_request->scmd; in pqi_raid_io_complete()
5480 pqi_free_io_request(io_request); in pqi_raid_io_complete()
5486 struct pqi_ctrl_info *ctrl_info, struct pqi_io_request *io_request, in pqi_raid_submit_scsi_cmd_with_io_request() argument
5494 io_request->io_complete_callback = pqi_raid_io_complete; in pqi_raid_submit_scsi_cmd_with_io_request()
5495 io_request->scmd = scmd; in pqi_raid_submit_scsi_cmd_with_io_request()
5497 request = io_request->iu; in pqi_raid_submit_scsi_cmd_with_io_request()
5503 put_unaligned_le16(io_request->index, &request->request_id); in pqi_raid_submit_scsi_cmd_with_io_request()
5553 rc = pqi_build_raid_sg_list(ctrl_info, request, scmd, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5555 pqi_free_io_request(io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5559 pqi_start_io(ctrl_info, queue_group, RAID_PATH, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5568 struct pqi_io_request *io_request; in pqi_raid_submit_scsi_cmd() local
5570 io_request = pqi_alloc_io_request(ctrl_info); in pqi_raid_submit_scsi_cmd()
5572 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request, in pqi_raid_submit_scsi_cmd()
5576 static bool pqi_raid_bypass_retry_needed(struct pqi_io_request *io_request) in pqi_raid_bypass_retry_needed() argument
5582 if (!io_request->raid_bypass) in pqi_raid_bypass_retry_needed()
5585 scmd = io_request->scmd; in pqi_raid_bypass_retry_needed()
5602 static void pqi_aio_io_complete(struct pqi_io_request *io_request, in pqi_aio_io_complete() argument
5607 scmd = io_request->scmd; in pqi_aio_io_complete()
5609 if (io_request->status == -EAGAIN || pqi_raid_bypass_retry_needed(io_request)) { in pqi_aio_io_complete()
5614 pqi_free_io_request(io_request); in pqi_aio_io_complete()
5669 struct pqi_io_request *io_request; in pqi_aio_submit_io() local
5674 io_request = pqi_alloc_io_request(ctrl_info); in pqi_aio_submit_io()
5675 io_request->io_complete_callback = pqi_aio_io_complete; in pqi_aio_submit_io()
5676 io_request->scmd = scmd; in pqi_aio_submit_io()
5677 io_request->raid_bypass = raid_bypass; in pqi_aio_submit_io()
5679 request = io_request->iu; in pqi_aio_submit_io()
5687 put_unaligned_le16(io_request->index, &request->request_id); in pqi_aio_submit_io()
5726 rc = pqi_build_aio_sg_list(ctrl_info, request, scmd, io_request); in pqi_aio_submit_io()
5728 pqi_free_io_request(io_request); in pqi_aio_submit_io()
5732 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request); in pqi_aio_submit_io()
5743 struct pqi_io_request *io_request; in pqi_aio_submit_r1_write_io() local
5746 io_request = pqi_alloc_io_request(ctrl_info); in pqi_aio_submit_r1_write_io()
5747 io_request->io_complete_callback = pqi_aio_io_complete; in pqi_aio_submit_r1_write_io()
5748 io_request->scmd = scmd; in pqi_aio_submit_r1_write_io()
5749 io_request->raid_bypass = true; in pqi_aio_submit_r1_write_io()
5751 r1_request = io_request->iu; in pqi_aio_submit_r1_write_io()
5764 put_unaligned_le16(io_request->index, &r1_request->request_id); in pqi_aio_submit_r1_write_io()
5784 rc = pqi_build_aio_r1_sg_list(ctrl_info, r1_request, scmd, io_request); in pqi_aio_submit_r1_write_io()
5786 pqi_free_io_request(io_request); in pqi_aio_submit_r1_write_io()
5790 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request); in pqi_aio_submit_r1_write_io()
5801 struct pqi_io_request *io_request; in pqi_aio_submit_r56_write_io() local
5804 io_request = pqi_alloc_io_request(ctrl_info); in pqi_aio_submit_r56_write_io()
5805 io_request->io_complete_callback = pqi_aio_io_complete; in pqi_aio_submit_r56_write_io()
5806 io_request->scmd = scmd; in pqi_aio_submit_r56_write_io()
5807 io_request->raid_bypass = true; in pqi_aio_submit_r56_write_io()
5809 r56_request = io_request->iu; in pqi_aio_submit_r56_write_io()
5828 put_unaligned_le16(io_request->index, &r56_request->request_id); in pqi_aio_submit_r56_write_io()
5849 rc = pqi_build_aio_r56_sg_list(ctrl_info, r56_request, scmd, io_request); in pqi_aio_submit_r56_write_io()
5851 pqi_free_io_request(io_request); in pqi_aio_submit_r56_write_io()
5855 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request); in pqi_aio_submit_r56_write_io()
6053 struct pqi_io_request *io_request; in pqi_queued_io_count() local
6061 list_for_each_entry(io_request, &queue_group->request_list[path], request_list_entry) in pqi_queued_io_count()
6141 struct pqi_io_request *io_request; in pqi_fail_io_queued_for_device() local
6153 list_for_each_entry_safe(io_request, next, in pqi_fail_io_queued_for_device()
6157 scmd = io_request->scmd; in pqi_fail_io_queued_for_device()
6165 list_del(&io_request->request_list_entry); in pqi_fail_io_queued_for_device()
6167 pqi_free_io_request(io_request); in pqi_fail_io_queued_for_device()
6218 static void pqi_lun_reset_complete(struct pqi_io_request *io_request, in pqi_lun_reset_complete() argument
6265 struct pqi_io_request *io_request; in pqi_lun_reset() local
6271 io_request = pqi_alloc_io_request(ctrl_info); in pqi_lun_reset()
6272 io_request->io_complete_callback = pqi_lun_reset_complete; in pqi_lun_reset()
6273 io_request->context = &wait; in pqi_lun_reset()
6275 request = io_request->iu; in pqi_lun_reset()
6281 put_unaligned_le16(io_request->index, &request->request_id); in pqi_lun_reset()
6291 io_request); in pqi_lun_reset()
6295 rc = io_request->status; in pqi_lun_reset()
6297 pqi_free_io_request(io_request); in pqi_lun_reset()
8875 struct pqi_io_request *io_request; in pqi_fail_all_outstanding_requests() local
8880 io_request = &ctrl_info->io_request_pool[i]; in pqi_fail_all_outstanding_requests()
8881 if (atomic_read(&io_request->refcount) == 0) in pqi_fail_all_outstanding_requests()
8884 scmd = io_request->scmd; in pqi_fail_all_outstanding_requests()
8888 pqi_free_io_request(io_request); in pqi_fail_all_outstanding_requests()
8894 io_request->status = -ENXIO; in pqi_fail_all_outstanding_requests()
8895 io_request->error_info = in pqi_fail_all_outstanding_requests()
8899 io_request->io_complete_callback(io_request, in pqi_fail_all_outstanding_requests()
8900 io_request->context); in pqi_fail_all_outstanding_requests()
9028 struct pqi_io_request *io_request; in pqi_crash_if_pending_command() local
9032 io_request = &ctrl_info->io_request_pool[i]; in pqi_crash_if_pending_command()
9033 if (atomic_read(&io_request->refcount) == 0) in pqi_crash_if_pending_command()
9035 scmd = io_request->scmd; in pqi_crash_if_pending_command()