Lines Matching refs:io_request

62 	struct pqi_io_request *io_request);
534 static inline void pqi_reinit_io_request(struct pqi_io_request *io_request) in pqi_reinit_io_request() argument
536 io_request->scmd = NULL; in pqi_reinit_io_request()
537 io_request->status = 0; in pqi_reinit_io_request()
538 io_request->error_info = NULL; in pqi_reinit_io_request()
539 io_request->raid_bypass = false; in pqi_reinit_io_request()
545 struct pqi_io_request *io_request; in pqi_alloc_io_request() local
549 io_request = &ctrl_info->io_request_pool[i]; in pqi_alloc_io_request()
550 if (atomic_inc_return(&io_request->refcount) == 1) in pqi_alloc_io_request()
552 atomic_dec(&io_request->refcount); in pqi_alloc_io_request()
559 pqi_reinit_io_request(io_request); in pqi_alloc_io_request()
561 return io_request; in pqi_alloc_io_request()
564 static void pqi_free_io_request(struct pqi_io_request *io_request) in pqi_free_io_request() argument
566 atomic_dec(&io_request->refcount); in pqi_free_io_request()
2716 static inline void pqi_aio_path_disabled(struct pqi_io_request *io_request) in pqi_aio_path_disabled() argument
2720 device = io_request->scmd->device->hostdata; in pqi_aio_path_disabled()
2742 static void pqi_process_raid_io_error(struct pqi_io_request *io_request) in pqi_process_raid_io_error() argument
2753 scmd = io_request->scmd; in pqi_process_raid_io_error()
2757 error_info = io_request->error_info; in pqi_process_raid_io_error()
2843 static void pqi_process_aio_io_error(struct pqi_io_request *io_request) in pqi_process_aio_io_error() argument
2854 scmd = io_request->scmd; in pqi_process_aio_io_error()
2855 error_info = io_request->error_info; in pqi_process_aio_io_error()
2882 pqi_aio_path_disabled(io_request); in pqi_process_aio_io_error()
2884 io_request->status = -EAGAIN; in pqi_process_aio_io_error()
2888 if (!io_request->raid_bypass) { in pqi_process_aio_io_error()
2934 struct pqi_io_request *io_request) in pqi_process_io_error() argument
2938 pqi_process_raid_io_error(io_request); in pqi_process_io_error()
2941 pqi_process_aio_io_error(io_request); in pqi_process_io_error()
2973 struct pqi_io_request *io_request; in pqi_process_io_intr() local
2992 io_request = &ctrl_info->io_request_pool[request_id]; in pqi_process_io_intr()
2993 WARN_ON(atomic_read(&io_request->refcount) == 0); in pqi_process_io_intr()
2998 if (io_request->scmd) in pqi_process_io_intr()
2999 io_request->scmd->result = 0; in pqi_process_io_intr()
3004 io_request->status = in pqi_process_io_intr()
3010 io_request->status = in pqi_process_io_intr()
3015 pqi_aio_path_disabled(io_request); in pqi_process_io_intr()
3016 io_request->status = -EAGAIN; in pqi_process_io_intr()
3020 io_request->error_info = ctrl_info->error_buffer + in pqi_process_io_intr()
3024 io_request); in pqi_process_io_intr()
3033 io_request->io_complete_callback(io_request, in pqi_process_io_intr()
3034 io_request->context); in pqi_process_io_intr()
3941 struct pqi_io_request *io_request) in pqi_start_io() argument
3956 if (io_request) { in pqi_start_io()
3957 io_request->queue_group = queue_group; in pqi_start_io()
3958 list_add_tail(&io_request->request_list_entry, in pqi_start_io()
3964 list_for_each_entry_safe(io_request, next, in pqi_start_io()
3967 request = io_request->iu; in pqi_start_io()
4004 list_del(&io_request->request_list_entry); in pqi_start_io()
4043 static void pqi_raid_synchronous_complete(struct pqi_io_request *io_request, in pqi_raid_synchronous_complete() argument
4079 struct pqi_io_request *io_request; in pqi_submit_raid_request_synchronous() local
4125 io_request = pqi_alloc_io_request(ctrl_info); in pqi_submit_raid_request_synchronous()
4127 put_unaligned_le16(io_request->index, in pqi_submit_raid_request_synchronous()
4136 memcpy(io_request->iu, request, iu_length); in pqi_submit_raid_request_synchronous()
4138 io_request->io_complete_callback = pqi_raid_synchronous_complete; in pqi_submit_raid_request_synchronous()
4139 io_request->context = &wait; in pqi_submit_raid_request_synchronous()
4143 io_request); in pqi_submit_raid_request_synchronous()
4159 if (io_request->error_info) in pqi_submit_raid_request_synchronous()
4160 memcpy(error_info, io_request->error_info, in pqi_submit_raid_request_synchronous()
4164 } else if (rc == 0 && io_request->error_info) { in pqi_submit_raid_request_synchronous()
4166 io_request->error_info); in pqi_submit_raid_request_synchronous()
4169 pqi_free_io_request(io_request); in pqi_submit_raid_request_synchronous()
4643 struct pqi_io_request *io_request; in pqi_free_all_io_requests() local
4650 io_request = ctrl_info->io_request_pool; in pqi_free_all_io_requests()
4653 kfree(io_request->iu); in pqi_free_all_io_requests()
4654 if (!io_request->sg_chain_buffer) in pqi_free_all_io_requests()
4657 io_request->sg_chain_buffer, in pqi_free_all_io_requests()
4658 io_request->sg_chain_buffer_dma_handle); in pqi_free_all_io_requests()
4659 io_request++; in pqi_free_all_io_requests()
4686 struct pqi_io_request *io_request; in pqi_alloc_io_resources() local
4700 io_request = ctrl_info->io_request_pool; in pqi_alloc_io_resources()
4703 io_request->iu = in pqi_alloc_io_resources()
4706 if (!io_request->iu) { in pqi_alloc_io_resources()
4722 io_request->index = i; in pqi_alloc_io_resources()
4723 io_request->sg_chain_buffer = sg_chain_buffer; in pqi_alloc_io_resources()
4724 io_request->sg_chain_buffer_dma_handle = in pqi_alloc_io_resources()
4726 io_request++; in pqi_alloc_io_resources()
4847 struct pqi_io_request *io_request) in pqi_build_raid_sg_list() argument
4885 (u64)io_request->sg_chain_buffer_dma_handle, in pqi_build_raid_sg_list()
4894 sg_descriptor = io_request->sg_chain_buffer; in pqi_build_raid_sg_list()
4911 struct pqi_io_request *io_request) in pqi_build_aio_sg_list() argument
4949 (u64)io_request->sg_chain_buffer_dma_handle, in pqi_build_aio_sg_list()
4958 sg_descriptor = io_request->sg_chain_buffer; in pqi_build_aio_sg_list()
4974 static void pqi_raid_io_complete(struct pqi_io_request *io_request, in pqi_raid_io_complete() argument
4979 scmd = io_request->scmd; in pqi_raid_io_complete()
4980 pqi_free_io_request(io_request); in pqi_raid_io_complete()
4986 struct pqi_ctrl_info *ctrl_info, struct pqi_io_request *io_request, in pqi_raid_submit_scsi_cmd_with_io_request() argument
4994 io_request->io_complete_callback = pqi_raid_io_complete; in pqi_raid_submit_scsi_cmd_with_io_request()
4995 io_request->scmd = scmd; in pqi_raid_submit_scsi_cmd_with_io_request()
4997 request = io_request->iu; in pqi_raid_submit_scsi_cmd_with_io_request()
5004 put_unaligned_le16(io_request->index, &request->request_id); in pqi_raid_submit_scsi_cmd_with_io_request()
5064 rc = pqi_build_raid_sg_list(ctrl_info, request, scmd, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5066 pqi_free_io_request(io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5070 pqi_start_io(ctrl_info, queue_group, RAID_PATH, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5079 struct pqi_io_request *io_request; in pqi_raid_submit_scsi_cmd() local
5081 io_request = pqi_alloc_io_request(ctrl_info); in pqi_raid_submit_scsi_cmd()
5083 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request, in pqi_raid_submit_scsi_cmd()
5093 static bool pqi_raid_bypass_retry_needed(struct pqi_io_request *io_request) in pqi_raid_bypass_retry_needed() argument
5099 if (!io_request->raid_bypass) in pqi_raid_bypass_retry_needed()
5102 scmd = io_request->scmd; in pqi_raid_bypass_retry_needed()
5121 struct pqi_io_request *io_request, bool at_head) in pqi_add_to_raid_bypass_retry_list() argument
5127 list_add(&io_request->request_list_entry, in pqi_add_to_raid_bypass_retry_list()
5130 list_add_tail(&io_request->request_list_entry, in pqi_add_to_raid_bypass_retry_list()
5135 static void pqi_queued_raid_bypass_complete(struct pqi_io_request *io_request, in pqi_queued_raid_bypass_complete() argument
5140 scmd = io_request->scmd; in pqi_queued_raid_bypass_complete()
5141 pqi_free_io_request(io_request); in pqi_queued_raid_bypass_complete()
5145 static void pqi_queue_raid_bypass_retry(struct pqi_io_request *io_request) in pqi_queue_raid_bypass_retry() argument
5150 io_request->io_complete_callback = pqi_queued_raid_bypass_complete; in pqi_queue_raid_bypass_retry()
5151 scmd = io_request->scmd; in pqi_queue_raid_bypass_retry()
5155 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request, false); in pqi_queue_raid_bypass_retry()
5159 static int pqi_retry_raid_bypass(struct pqi_io_request *io_request) in pqi_retry_raid_bypass() argument
5166 scmd = io_request->scmd; in pqi_retry_raid_bypass()
5169 pqi_free_io_request(io_request); in pqi_retry_raid_bypass()
5176 queue_group = io_request->queue_group; in pqi_retry_raid_bypass()
5178 pqi_reinit_io_request(io_request); in pqi_retry_raid_bypass()
5180 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request, in pqi_retry_raid_bypass()
5188 struct pqi_io_request *io_request; in pqi_next_queued_raid_bypass_request() local
5191 io_request = list_first_entry_or_null( in pqi_next_queued_raid_bypass_request()
5194 if (io_request) in pqi_next_queued_raid_bypass_request()
5195 list_del(&io_request->request_list_entry); in pqi_next_queued_raid_bypass_request()
5198 return io_request; in pqi_next_queued_raid_bypass_request()
5204 struct pqi_io_request *io_request; in pqi_retry_raid_bypass_requests() local
5211 io_request = pqi_next_queued_raid_bypass_request(ctrl_info); in pqi_retry_raid_bypass_requests()
5212 if (!io_request) in pqi_retry_raid_bypass_requests()
5214 rc = pqi_retry_raid_bypass(io_request); in pqi_retry_raid_bypass_requests()
5216 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request, in pqi_retry_raid_bypass_requests()
5245 static void pqi_aio_io_complete(struct pqi_io_request *io_request, in pqi_aio_io_complete() argument
5250 scmd = io_request->scmd; in pqi_aio_io_complete()
5252 if (io_request->status == -EAGAIN) in pqi_aio_io_complete()
5254 else if (pqi_raid_bypass_retry_needed(io_request)) { in pqi_aio_io_complete()
5255 pqi_queue_raid_bypass_retry(io_request); in pqi_aio_io_complete()
5258 pqi_free_io_request(io_request); in pqi_aio_io_complete()
5276 struct pqi_io_request *io_request; in pqi_aio_submit_io() local
5279 io_request = pqi_alloc_io_request(ctrl_info); in pqi_aio_submit_io()
5280 io_request->io_complete_callback = pqi_aio_io_complete; in pqi_aio_submit_io()
5281 io_request->scmd = scmd; in pqi_aio_submit_io()
5282 io_request->raid_bypass = raid_bypass; in pqi_aio_submit_io()
5284 request = io_request->iu; in pqi_aio_submit_io()
5292 put_unaligned_le16(io_request->index, &request->request_id); in pqi_aio_submit_io()
5329 rc = pqi_build_aio_sg_list(ctrl_info, request, scmd, io_request); in pqi_aio_submit_io()
5331 pqi_free_io_request(io_request); in pqi_aio_submit_io()
5335 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request); in pqi_aio_submit_io()
5516 struct pqi_io_request *io_request; in pqi_fail_io_queued_for_device() local
5528 list_for_each_entry_safe(io_request, next, in pqi_fail_io_queued_for_device()
5531 scmd = io_request->scmd; in pqi_fail_io_queued_for_device()
5539 list_del(&io_request->request_list_entry); in pqi_fail_io_queued_for_device()
5556 struct pqi_io_request *io_request; in pqi_fail_io_queued_for_all_devices() local
5567 list_for_each_entry_safe(io_request, next, in pqi_fail_io_queued_for_all_devices()
5571 scmd = io_request->scmd; in pqi_fail_io_queued_for_all_devices()
5575 list_del(&io_request->request_list_entry); in pqi_fail_io_queued_for_all_devices()
5653 static void pqi_lun_reset_complete(struct pqi_io_request *io_request, in pqi_lun_reset_complete() argument
5689 struct pqi_io_request *io_request; in pqi_lun_reset() local
5693 io_request = pqi_alloc_io_request(ctrl_info); in pqi_lun_reset()
5694 io_request->io_complete_callback = pqi_lun_reset_complete; in pqi_lun_reset()
5695 io_request->context = &wait; in pqi_lun_reset()
5697 request = io_request->iu; in pqi_lun_reset()
5703 put_unaligned_le16(io_request->index, &request->request_id); in pqi_lun_reset()
5710 io_request); in pqi_lun_reset()
5714 rc = io_request->status; in pqi_lun_reset()
5716 pqi_free_io_request(io_request); in pqi_lun_reset()
7821 struct pqi_io_request *io_request; in pqi_fail_all_outstanding_requests() local
7825 io_request = &ctrl_info->io_request_pool[i]; in pqi_fail_all_outstanding_requests()
7826 if (atomic_read(&io_request->refcount) == 0) in pqi_fail_all_outstanding_requests()
7829 scmd = io_request->scmd; in pqi_fail_all_outstanding_requests()
7833 io_request->status = -ENXIO; in pqi_fail_all_outstanding_requests()
7834 io_request->error_info = in pqi_fail_all_outstanding_requests()
7838 io_request->io_complete_callback(io_request, in pqi_fail_all_outstanding_requests()
7839 io_request->context); in pqi_fail_all_outstanding_requests()