Lines Matching refs:io_request

62 	struct pqi_io_request *io_request);
568 static inline void pqi_reinit_io_request(struct pqi_io_request *io_request) in pqi_reinit_io_request() argument
570 io_request->scmd = NULL; in pqi_reinit_io_request()
571 io_request->status = 0; in pqi_reinit_io_request()
572 io_request->error_info = NULL; in pqi_reinit_io_request()
573 io_request->raid_bypass = false; in pqi_reinit_io_request()
579 struct pqi_io_request *io_request; in pqi_alloc_io_request() local
583 io_request = &ctrl_info->io_request_pool[i]; in pqi_alloc_io_request()
584 if (atomic_inc_return(&io_request->refcount) == 1) in pqi_alloc_io_request()
586 atomic_dec(&io_request->refcount); in pqi_alloc_io_request()
593 pqi_reinit_io_request(io_request); in pqi_alloc_io_request()
595 return io_request; in pqi_alloc_io_request()
598 static void pqi_free_io_request(struct pqi_io_request *io_request) in pqi_free_io_request() argument
600 atomic_dec(&io_request->refcount); in pqi_free_io_request()
2633 static inline void pqi_aio_path_disabled(struct pqi_io_request *io_request) in pqi_aio_path_disabled() argument
2637 device = io_request->scmd->device->hostdata; in pqi_aio_path_disabled()
2659 static void pqi_process_raid_io_error(struct pqi_io_request *io_request) in pqi_process_raid_io_error() argument
2670 scmd = io_request->scmd; in pqi_process_raid_io_error()
2674 error_info = io_request->error_info; in pqi_process_raid_io_error()
2760 static void pqi_process_aio_io_error(struct pqi_io_request *io_request) in pqi_process_aio_io_error() argument
2771 scmd = io_request->scmd; in pqi_process_aio_io_error()
2772 error_info = io_request->error_info; in pqi_process_aio_io_error()
2799 pqi_aio_path_disabled(io_request); in pqi_process_aio_io_error()
2801 io_request->status = -EAGAIN; in pqi_process_aio_io_error()
2805 if (!io_request->raid_bypass) { in pqi_process_aio_io_error()
2851 struct pqi_io_request *io_request) in pqi_process_io_error() argument
2855 pqi_process_raid_io_error(io_request); in pqi_process_io_error()
2858 pqi_process_aio_io_error(io_request); in pqi_process_io_error()
2894 struct pqi_io_request *io_request; in pqi_process_io_intr() local
2926 io_request = &ctrl_info->io_request_pool[request_id]; in pqi_process_io_intr()
2927 if (atomic_read(&io_request->refcount) == 0) { in pqi_process_io_intr()
2938 if (io_request->scmd) in pqi_process_io_intr()
2939 io_request->scmd->result = 0; in pqi_process_io_intr()
2944 io_request->status = in pqi_process_io_intr()
2950 io_request->status = in pqi_process_io_intr()
2955 pqi_aio_path_disabled(io_request); in pqi_process_io_intr()
2956 io_request->status = -EAGAIN; in pqi_process_io_intr()
2960 io_request->error_info = ctrl_info->error_buffer + in pqi_process_io_intr()
2963 pqi_process_io_error(response->header.iu_type, io_request); in pqi_process_io_intr()
2973 io_request->io_complete_callback(io_request, io_request->context); in pqi_process_io_intr()
3892 struct pqi_io_request *io_request) in pqi_start_io() argument
3907 if (io_request) { in pqi_start_io()
3908 io_request->queue_group = queue_group; in pqi_start_io()
3909 list_add_tail(&io_request->request_list_entry, in pqi_start_io()
3915 list_for_each_entry_safe(io_request, next, in pqi_start_io()
3918 request = io_request->iu; in pqi_start_io()
3955 list_del(&io_request->request_list_entry); in pqi_start_io()
3994 static void pqi_raid_synchronous_complete(struct pqi_io_request *io_request, in pqi_raid_synchronous_complete() argument
4030 struct pqi_io_request *io_request; in pqi_submit_raid_request_synchronous() local
4078 io_request = pqi_alloc_io_request(ctrl_info); in pqi_submit_raid_request_synchronous()
4080 put_unaligned_le16(io_request->index, in pqi_submit_raid_request_synchronous()
4089 memcpy(io_request->iu, request, iu_length); in pqi_submit_raid_request_synchronous()
4091 io_request->io_complete_callback = pqi_raid_synchronous_complete; in pqi_submit_raid_request_synchronous()
4092 io_request->context = &wait; in pqi_submit_raid_request_synchronous()
4096 io_request); in pqi_submit_raid_request_synchronous()
4112 if (io_request->error_info) in pqi_submit_raid_request_synchronous()
4113 memcpy(error_info, io_request->error_info, in pqi_submit_raid_request_synchronous()
4117 } else if (rc == 0 && io_request->error_info) { in pqi_submit_raid_request_synchronous()
4119 io_request->error_info); in pqi_submit_raid_request_synchronous()
4122 pqi_free_io_request(io_request); in pqi_submit_raid_request_synchronous()
4597 struct pqi_io_request *io_request; in pqi_free_all_io_requests() local
4604 io_request = ctrl_info->io_request_pool; in pqi_free_all_io_requests()
4607 kfree(io_request->iu); in pqi_free_all_io_requests()
4608 if (!io_request->sg_chain_buffer) in pqi_free_all_io_requests()
4611 io_request->sg_chain_buffer, in pqi_free_all_io_requests()
4612 io_request->sg_chain_buffer_dma_handle); in pqi_free_all_io_requests()
4613 io_request++; in pqi_free_all_io_requests()
4640 struct pqi_io_request *io_request; in pqi_alloc_io_resources() local
4654 io_request = ctrl_info->io_request_pool; in pqi_alloc_io_resources()
4657 io_request->iu = in pqi_alloc_io_resources()
4660 if (!io_request->iu) { in pqi_alloc_io_resources()
4676 io_request->index = i; in pqi_alloc_io_resources()
4677 io_request->sg_chain_buffer = sg_chain_buffer; in pqi_alloc_io_resources()
4678 io_request->sg_chain_buffer_dma_handle = in pqi_alloc_io_resources()
4680 io_request++; in pqi_alloc_io_resources()
4801 struct pqi_io_request *io_request) in pqi_build_raid_sg_list() argument
4839 (u64)io_request->sg_chain_buffer_dma_handle, in pqi_build_raid_sg_list()
4848 sg_descriptor = io_request->sg_chain_buffer; in pqi_build_raid_sg_list()
4865 struct pqi_io_request *io_request) in pqi_build_aio_sg_list() argument
4903 (u64)io_request->sg_chain_buffer_dma_handle, in pqi_build_aio_sg_list()
4912 sg_descriptor = io_request->sg_chain_buffer; in pqi_build_aio_sg_list()
4928 static void pqi_raid_io_complete(struct pqi_io_request *io_request, in pqi_raid_io_complete() argument
4933 scmd = io_request->scmd; in pqi_raid_io_complete()
4934 pqi_free_io_request(io_request); in pqi_raid_io_complete()
4940 struct pqi_ctrl_info *ctrl_info, struct pqi_io_request *io_request, in pqi_raid_submit_scsi_cmd_with_io_request() argument
4948 io_request->io_complete_callback = pqi_raid_io_complete; in pqi_raid_submit_scsi_cmd_with_io_request()
4949 io_request->scmd = scmd; in pqi_raid_submit_scsi_cmd_with_io_request()
4951 request = io_request->iu; in pqi_raid_submit_scsi_cmd_with_io_request()
4958 put_unaligned_le16(io_request->index, &request->request_id); in pqi_raid_submit_scsi_cmd_with_io_request()
5018 rc = pqi_build_raid_sg_list(ctrl_info, request, scmd, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5020 pqi_free_io_request(io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5024 pqi_start_io(ctrl_info, queue_group, RAID_PATH, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5033 struct pqi_io_request *io_request; in pqi_raid_submit_scsi_cmd() local
5035 io_request = pqi_alloc_io_request(ctrl_info); in pqi_raid_submit_scsi_cmd()
5037 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request, in pqi_raid_submit_scsi_cmd()
5047 static bool pqi_raid_bypass_retry_needed(struct pqi_io_request *io_request) in pqi_raid_bypass_retry_needed() argument
5053 if (!io_request->raid_bypass) in pqi_raid_bypass_retry_needed()
5056 scmd = io_request->scmd; in pqi_raid_bypass_retry_needed()
5075 struct pqi_io_request *io_request, bool at_head) in pqi_add_to_raid_bypass_retry_list() argument
5081 list_add(&io_request->request_list_entry, in pqi_add_to_raid_bypass_retry_list()
5084 list_add_tail(&io_request->request_list_entry, in pqi_add_to_raid_bypass_retry_list()
5089 static void pqi_queued_raid_bypass_complete(struct pqi_io_request *io_request, in pqi_queued_raid_bypass_complete() argument
5094 scmd = io_request->scmd; in pqi_queued_raid_bypass_complete()
5095 pqi_free_io_request(io_request); in pqi_queued_raid_bypass_complete()
5099 static void pqi_queue_raid_bypass_retry(struct pqi_io_request *io_request) in pqi_queue_raid_bypass_retry() argument
5104 io_request->io_complete_callback = pqi_queued_raid_bypass_complete; in pqi_queue_raid_bypass_retry()
5105 scmd = io_request->scmd; in pqi_queue_raid_bypass_retry()
5109 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request, false); in pqi_queue_raid_bypass_retry()
5113 static int pqi_retry_raid_bypass(struct pqi_io_request *io_request) in pqi_retry_raid_bypass() argument
5120 scmd = io_request->scmd; in pqi_retry_raid_bypass()
5123 pqi_free_io_request(io_request); in pqi_retry_raid_bypass()
5130 queue_group = io_request->queue_group; in pqi_retry_raid_bypass()
5132 pqi_reinit_io_request(io_request); in pqi_retry_raid_bypass()
5134 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request, in pqi_retry_raid_bypass()
5142 struct pqi_io_request *io_request; in pqi_next_queued_raid_bypass_request() local
5145 io_request = list_first_entry_or_null( in pqi_next_queued_raid_bypass_request()
5148 if (io_request) in pqi_next_queued_raid_bypass_request()
5149 list_del(&io_request->request_list_entry); in pqi_next_queued_raid_bypass_request()
5152 return io_request; in pqi_next_queued_raid_bypass_request()
5158 struct pqi_io_request *io_request; in pqi_retry_raid_bypass_requests() local
5165 io_request = pqi_next_queued_raid_bypass_request(ctrl_info); in pqi_retry_raid_bypass_requests()
5166 if (!io_request) in pqi_retry_raid_bypass_requests()
5168 rc = pqi_retry_raid_bypass(io_request); in pqi_retry_raid_bypass_requests()
5170 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request, in pqi_retry_raid_bypass_requests()
5199 static void pqi_aio_io_complete(struct pqi_io_request *io_request, in pqi_aio_io_complete() argument
5204 scmd = io_request->scmd; in pqi_aio_io_complete()
5206 if (io_request->status == -EAGAIN) in pqi_aio_io_complete()
5208 else if (pqi_raid_bypass_retry_needed(io_request)) { in pqi_aio_io_complete()
5209 pqi_queue_raid_bypass_retry(io_request); in pqi_aio_io_complete()
5212 pqi_free_io_request(io_request); in pqi_aio_io_complete()
5230 struct pqi_io_request *io_request; in pqi_aio_submit_io() local
5233 io_request = pqi_alloc_io_request(ctrl_info); in pqi_aio_submit_io()
5234 io_request->io_complete_callback = pqi_aio_io_complete; in pqi_aio_submit_io()
5235 io_request->scmd = scmd; in pqi_aio_submit_io()
5236 io_request->raid_bypass = raid_bypass; in pqi_aio_submit_io()
5238 request = io_request->iu; in pqi_aio_submit_io()
5246 put_unaligned_le16(io_request->index, &request->request_id); in pqi_aio_submit_io()
5283 rc = pqi_build_aio_sg_list(ctrl_info, request, scmd, io_request); in pqi_aio_submit_io()
5285 pqi_free_io_request(io_request); in pqi_aio_submit_io()
5289 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request); in pqi_aio_submit_io()
5469 struct pqi_io_request *io_request; in pqi_fail_io_queued_for_device() local
5481 list_for_each_entry_safe(io_request, next, in pqi_fail_io_queued_for_device()
5484 scmd = io_request->scmd; in pqi_fail_io_queued_for_device()
5492 list_del(&io_request->request_list_entry); in pqi_fail_io_queued_for_device()
5509 struct pqi_io_request *io_request; in pqi_fail_io_queued_for_all_devices() local
5520 list_for_each_entry_safe(io_request, next, in pqi_fail_io_queued_for_all_devices()
5524 scmd = io_request->scmd; in pqi_fail_io_queued_for_all_devices()
5528 list_del(&io_request->request_list_entry); in pqi_fail_io_queued_for_all_devices()
5618 static void pqi_lun_reset_complete(struct pqi_io_request *io_request, in pqi_lun_reset_complete() argument
5655 struct pqi_io_request *io_request; in pqi_lun_reset() local
5659 io_request = pqi_alloc_io_request(ctrl_info); in pqi_lun_reset()
5660 io_request->io_complete_callback = pqi_lun_reset_complete; in pqi_lun_reset()
5661 io_request->context = &wait; in pqi_lun_reset()
5663 request = io_request->iu; in pqi_lun_reset()
5669 put_unaligned_le16(io_request->index, &request->request_id); in pqi_lun_reset()
5679 io_request); in pqi_lun_reset()
5683 rc = io_request->status; in pqi_lun_reset()
5685 pqi_free_io_request(io_request); in pqi_lun_reset()
7901 struct pqi_io_request *io_request; in pqi_fail_all_outstanding_requests() local
7905 io_request = &ctrl_info->io_request_pool[i]; in pqi_fail_all_outstanding_requests()
7906 if (atomic_read(&io_request->refcount) == 0) in pqi_fail_all_outstanding_requests()
7909 scmd = io_request->scmd; in pqi_fail_all_outstanding_requests()
7913 io_request->status = -ENXIO; in pqi_fail_all_outstanding_requests()
7914 io_request->error_info = in pqi_fail_all_outstanding_requests()
7918 io_request->io_complete_callback(io_request, in pqi_fail_all_outstanding_requests()
7919 io_request->context); in pqi_fail_all_outstanding_requests()
8042 struct pqi_io_request *io_request; in pqi_crash_if_pending_command() local
8046 io_request = &ctrl_info->io_request_pool[i]; in pqi_crash_if_pending_command()
8047 if (atomic_read(&io_request->refcount) == 0) in pqi_crash_if_pending_command()
8049 scmd = io_request->scmd; in pqi_crash_if_pending_command()