Lines Matching defs:io_request
62 struct pqi_io_request *io_request);
568 static inline void pqi_reinit_io_request(struct pqi_io_request *io_request)
570 io_request->scmd = NULL;
571 io_request->status = 0;
572 io_request->error_info = NULL;
573 io_request->raid_bypass = false;
579 struct pqi_io_request *io_request;
583 io_request = &ctrl_info->io_request_pool[i];
584 if (atomic_inc_return(&io_request->refcount) == 1)
586 atomic_dec(&io_request->refcount);
593 pqi_reinit_io_request(io_request);
595 return io_request;
598 static void pqi_free_io_request(struct pqi_io_request *io_request)
600 atomic_dec(&io_request->refcount);
2634 static inline void pqi_aio_path_disabled(struct pqi_io_request *io_request)
2638 device = io_request->scmd->device->hostdata;
2660 static void pqi_process_raid_io_error(struct pqi_io_request *io_request)
2671 scmd = io_request->scmd;
2675 error_info = io_request->error_info;
2761 static void pqi_process_aio_io_error(struct pqi_io_request *io_request)
2772 scmd = io_request->scmd;
2773 error_info = io_request->error_info;
2800 pqi_aio_path_disabled(io_request);
2802 io_request->status = -EAGAIN;
2806 if (!io_request->raid_bypass) {
2852 struct pqi_io_request *io_request)
2856 pqi_process_raid_io_error(io_request);
2859 pqi_process_aio_io_error(io_request);
2895 struct pqi_io_request *io_request;
2927 io_request = &ctrl_info->io_request_pool[request_id];
2928 if (atomic_read(&io_request->refcount) == 0) {
2939 if (io_request->scmd)
2940 io_request->scmd->result = 0;
2945 io_request->status =
2951 io_request->status =
2956 pqi_aio_path_disabled(io_request);
2957 io_request->status = -EAGAIN;
2961 io_request->error_info = ctrl_info->error_buffer +
2964 pqi_process_io_error(response->header.iu_type, io_request);
2974 io_request->io_complete_callback(io_request, io_request->context);
3893 struct pqi_io_request *io_request)
3908 if (io_request) {
3909 io_request->queue_group = queue_group;
3910 list_add_tail(&io_request->request_list_entry,
3916 list_for_each_entry_safe(io_request, next,
3919 request = io_request->iu;
3956 list_del(&io_request->request_list_entry);
3995 static void pqi_raid_synchronous_complete(struct pqi_io_request *io_request,
4031 struct pqi_io_request *io_request;
4079 io_request = pqi_alloc_io_request(ctrl_info);
4081 put_unaligned_le16(io_request->index,
4090 memcpy(io_request->iu, request, iu_length);
4092 io_request->io_complete_callback = pqi_raid_synchronous_complete;
4093 io_request->context = &wait;
4097 io_request);
4113 if (io_request->error_info)
4114 memcpy(error_info, io_request->error_info,
4118 } else if (rc == 0 && io_request->error_info) {
4120 io_request->error_info);
4123 pqi_free_io_request(io_request);
4598 struct pqi_io_request *io_request;
4605 io_request = ctrl_info->io_request_pool;
4608 kfree(io_request->iu);
4609 if (!io_request->sg_chain_buffer)
4612 io_request->sg_chain_buffer,
4613 io_request->sg_chain_buffer_dma_handle);
4614 io_request++;
4641 struct pqi_io_request *io_request;
4655 io_request = ctrl_info->io_request_pool;
4658 io_request->iu =
4661 if (!io_request->iu) {
4677 io_request->index = i;
4678 io_request->sg_chain_buffer = sg_chain_buffer;
4679 io_request->sg_chain_buffer_dma_handle =
4681 io_request++;
4802 struct pqi_io_request *io_request)
4840 (u64)io_request->sg_chain_buffer_dma_handle,
4849 sg_descriptor = io_request->sg_chain_buffer;
4866 struct pqi_io_request *io_request)
4904 (u64)io_request->sg_chain_buffer_dma_handle,
4913 sg_descriptor = io_request->sg_chain_buffer;
4929 static void pqi_raid_io_complete(struct pqi_io_request *io_request,
4934 scmd = io_request->scmd;
4935 pqi_free_io_request(io_request);
4941 struct pqi_ctrl_info *ctrl_info, struct pqi_io_request *io_request,
4949 io_request->io_complete_callback = pqi_raid_io_complete;
4950 io_request->scmd = scmd;
4952 request = io_request->iu;
4959 put_unaligned_le16(io_request->index, &request->request_id);
5019 rc = pqi_build_raid_sg_list(ctrl_info, request, scmd, io_request);
5021 pqi_free_io_request(io_request);
5025 pqi_start_io(ctrl_info, queue_group, RAID_PATH, io_request);
5034 struct pqi_io_request *io_request;
5036 io_request = pqi_alloc_io_request(ctrl_info);
5038 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request,
5048 static bool pqi_raid_bypass_retry_needed(struct pqi_io_request *io_request)
5054 if (!io_request->raid_bypass)
5057 scmd = io_request->scmd;
5076 struct pqi_io_request *io_request, bool at_head)
5082 list_add(&io_request->request_list_entry,
5085 list_add_tail(&io_request->request_list_entry,
5090 static void pqi_queued_raid_bypass_complete(struct pqi_io_request *io_request,
5095 scmd = io_request->scmd;
5096 pqi_free_io_request(io_request);
5100 static void pqi_queue_raid_bypass_retry(struct pqi_io_request *io_request)
5105 io_request->io_complete_callback = pqi_queued_raid_bypass_complete;
5106 scmd = io_request->scmd;
5110 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request, false);
5114 static int pqi_retry_raid_bypass(struct pqi_io_request *io_request)
5121 scmd = io_request->scmd;
5124 pqi_free_io_request(io_request);
5131 queue_group = io_request->queue_group;
5133 pqi_reinit_io_request(io_request);
5135 return pqi_raid_submit_scsi_cmd_with_io_request(ctrl_info, io_request,
5143 struct pqi_io_request *io_request;
5146 io_request = list_first_entry_or_null(
5149 if (io_request)
5150 list_del(&io_request->request_list_entry);
5153 return io_request;
5159 struct pqi_io_request *io_request;
5166 io_request = pqi_next_queued_raid_bypass_request(ctrl_info);
5167 if (!io_request)
5169 rc = pqi_retry_raid_bypass(io_request);
5171 pqi_add_to_raid_bypass_retry_list(ctrl_info, io_request,
5200 static void pqi_aio_io_complete(struct pqi_io_request *io_request,
5205 scmd = io_request->scmd;
5207 if (io_request->status == -EAGAIN)
5209 else if (pqi_raid_bypass_retry_needed(io_request)) {
5210 pqi_queue_raid_bypass_retry(io_request);
5213 pqi_free_io_request(io_request);
5231 struct pqi_io_request *io_request;
5234 io_request = pqi_alloc_io_request(ctrl_info);
5235 io_request->io_complete_callback = pqi_aio_io_complete;
5236 io_request->scmd = scmd;
5237 io_request->raid_bypass = raid_bypass;
5239 request = io_request->iu;
5247 put_unaligned_le16(io_request->index, &request->request_id);
5284 rc = pqi_build_aio_sg_list(ctrl_info, request, scmd, io_request);
5286 pqi_free_io_request(io_request);
5290 pqi_start_io(ctrl_info, queue_group, AIO_PATH, io_request);
5470 struct pqi_io_request *io_request;
5482 list_for_each_entry_safe(io_request, next,
5485 scmd = io_request->scmd;
5493 list_del(&io_request->request_list_entry);
5495 pqi_free_io_request(io_request);
5512 struct pqi_io_request *io_request;
5523 list_for_each_entry_safe(io_request, next,
5527 scmd = io_request->scmd;
5531 list_del(&io_request->request_list_entry);
5533 pqi_free_io_request(io_request);
5623 static void pqi_lun_reset_complete(struct pqi_io_request *io_request,
5660 struct pqi_io_request *io_request;
5664 io_request = pqi_alloc_io_request(ctrl_info);
5665 io_request->io_complete_callback = pqi_lun_reset_complete;
5666 io_request->context = &wait;
5668 request = io_request->iu;
5674 put_unaligned_le16(io_request->index, &request->request_id);
5684 io_request);
5688 rc = io_request->status;
5690 pqi_free_io_request(io_request);
7907 struct pqi_io_request *io_request;
7911 io_request = &ctrl_info->io_request_pool[i];
7912 if (atomic_read(&io_request->refcount) == 0)
7915 scmd = io_request->scmd;
7919 io_request->status = -ENXIO;
7920 io_request->error_info =
7924 io_request->io_complete_callback(io_request,
7925 io_request->context);
8048 struct pqi_io_request *io_request;
8052 io_request = &ctrl_info->io_request_pool[i];
8053 if (atomic_read(&io_request->refcount) == 0)
8055 scmd = io_request->scmd;