Lines Matching refs:scmd
79 struct scsi_cmnd *scmd, u32 aio_handle, u8 *cdb,
83 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group,
87 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group,
218 static inline void pqi_scsi_done(struct scsi_cmnd *scmd) in pqi_scsi_done() argument
220 pqi_prep_for_scsi_done(scmd); in pqi_scsi_done()
221 scsi_done(scmd); in pqi_scsi_done()
675 io_request->scmd = NULL; in pqi_reinit_io_request()
681 …truct pqi_io_request *pqi_alloc_io_request(struct pqi_ctrl_info *ctrl_info, struct scsi_cmnd *scmd) in pqi_alloc_io_request() argument
686 if (scmd) { /* SML I/O request */ in pqi_alloc_io_request()
687 u32 blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd)); in pqi_alloc_io_request()
2677 static int pqi_get_aio_lba_and_block_count(struct scsi_cmnd *scmd, in pqi_get_aio_lba_and_block_count() argument
2681 switch (scmd->cmnd[0]) { in pqi_get_aio_lba_and_block_count()
2686 rmd->first_block = (u64)(((scmd->cmnd[1] & 0x1f) << 16) | in pqi_get_aio_lba_and_block_count()
2687 (scmd->cmnd[2] << 8) | scmd->cmnd[3]); in pqi_get_aio_lba_and_block_count()
2688 rmd->block_cnt = (u32)scmd->cmnd[4]; in pqi_get_aio_lba_and_block_count()
2696 rmd->first_block = (u64)get_unaligned_be32(&scmd->cmnd[2]); in pqi_get_aio_lba_and_block_count()
2697 rmd->block_cnt = (u32)get_unaligned_be16(&scmd->cmnd[7]); in pqi_get_aio_lba_and_block_count()
2703 rmd->first_block = (u64)get_unaligned_be32(&scmd->cmnd[2]); in pqi_get_aio_lba_and_block_count()
2704 rmd->block_cnt = get_unaligned_be32(&scmd->cmnd[6]); in pqi_get_aio_lba_and_block_count()
2710 rmd->first_block = get_unaligned_be64(&scmd->cmnd[2]); in pqi_get_aio_lba_and_block_count()
2711 rmd->block_cnt = get_unaligned_be32(&scmd->cmnd[10]); in pqi_get_aio_lba_and_block_count()
2718 put_unaligned_le32(scsi_bufflen(scmd), &rmd->data_length); in pqi_get_aio_lba_and_block_count()
2958 struct pqi_scsi_dev *device, struct scsi_cmnd *scmd, in pqi_raid_bypass_submit_scsi_cmd() argument
2969 rc = pqi_get_aio_lba_and_block_count(scmd, &rmd); in pqi_raid_bypass_submit_scsi_cmd()
3040 return pqi_aio_submit_r1_write_io(ctrl_info, scmd, queue_group, in pqi_raid_bypass_submit_scsi_cmd()
3044 return pqi_aio_submit_r56_write_io(ctrl_info, scmd, queue_group, in pqi_raid_bypass_submit_scsi_cmd()
3049 return pqi_aio_submit_io(ctrl_info, scmd, rmd.aio_handle, in pqi_raid_bypass_submit_scsi_cmd()
3122 device = io_request->scmd->device->hostdata; in pqi_aio_path_disabled()
3148 struct scsi_cmnd *scmd; in pqi_process_raid_io_error() local
3155 scmd = io_request->scmd; in pqi_process_raid_io_error()
3156 if (!scmd) in pqi_process_raid_io_error()
3169 residual_count = scsi_bufflen(scmd) - xfer_count; in pqi_process_raid_io_error()
3170 scsi_set_resid(scmd, residual_count); in pqi_process_raid_io_error()
3171 if (xfer_count < scmd->underflow) in pqi_process_raid_io_error()
3215 struct pqi_ctrl_info *ctrl_info = shost_to_hba(scmd->device->host); in pqi_process_raid_io_error()
3216 struct pqi_scsi_dev *device = scmd->device->hostdata; in pqi_process_raid_io_error()
3221 …scmd_printk(KERN_ERR, scmd, "received 'logical unit failure' from controller for scsi %d:%d:%d:%d\… in pqi_process_raid_io_error()
3223 pqi_take_device_offline(scmd->device, "RAID"); in pqi_process_raid_io_error()
3229 … scmd_printk(KERN_ERR, scmd, "received unhandled error %d from controller for scsi %d:%d:%d:%d\n", in pqi_process_raid_io_error()
3237 memcpy(scmd->sense_buffer, error_info->data, in pqi_process_raid_io_error()
3241 scmd->result = scsi_status; in pqi_process_raid_io_error()
3242 set_host_byte(scmd, host_byte); in pqi_process_raid_io_error()
3249 struct scsi_cmnd *scmd; in pqi_process_aio_io_error() local
3257 scmd = io_request->scmd; in pqi_process_aio_io_error()
3262 device = scmd->device->hostdata; in pqi_process_aio_io_error()
3277 scsi_set_resid(scmd, residual_count); in pqi_process_aio_io_error()
3278 xfer_count = scsi_bufflen(scmd) - residual_count; in pqi_process_aio_io_error()
3279 if (xfer_count < scmd->underflow) in pqi_process_aio_io_error()
3300 pqi_take_device_offline(scmd->device, "AIO"); in pqi_process_aio_io_error()
3330 memcpy(scmd->sense_buffer, error_info->data, in pqi_process_aio_io_error()
3336 scsi_build_sense(scmd, 0, HARDWARE_ERROR, 0x3e, 0x1); in pqi_process_aio_io_error()
3338 scmd->result = scsi_status; in pqi_process_aio_io_error()
3339 set_host_byte(scmd, host_byte); in pqi_process_aio_io_error()
3438 if (io_request->scmd) in pqi_process_io_intr()
3439 io_request->scmd->result = 0; in pqi_process_io_intr()
5349 struct pqi_raid_path_request *request, struct scsi_cmnd *scmd, in pqi_build_raid_sg_list() argument
5359 sg_count = scsi_dma_map(scmd); in pqi_build_raid_sg_list()
5369 sg = scsi_sglist(scmd); in pqi_build_raid_sg_list()
5385 struct pqi_aio_r1_path_request *request, struct scsi_cmnd *scmd, in pqi_build_aio_r1_sg_list() argument
5395 sg_count = scsi_dma_map(scmd); in pqi_build_aio_r1_sg_list()
5406 sg = scsi_sglist(scmd); in pqi_build_aio_r1_sg_list()
5423 struct pqi_aio_r56_path_request *request, struct scsi_cmnd *scmd, in pqi_build_aio_r56_sg_list() argument
5433 sg_count = scsi_dma_map(scmd); in pqi_build_aio_r56_sg_list()
5442 sg = scsi_sglist(scmd); in pqi_build_aio_r56_sg_list()
5459 struct pqi_aio_path_request *request, struct scsi_cmnd *scmd, in pqi_build_aio_sg_list() argument
5469 sg_count = scsi_dma_map(scmd); in pqi_build_aio_sg_list()
5480 sg = scsi_sglist(scmd); in pqi_build_aio_sg_list()
5499 struct scsi_cmnd *scmd; in pqi_raid_io_complete() local
5501 scmd = io_request->scmd; in pqi_raid_io_complete()
5503 scsi_dma_unmap(scmd); in pqi_raid_io_complete()
5504 pqi_scsi_done(scmd); in pqi_raid_io_complete()
5509 struct pqi_scsi_dev *device, struct scsi_cmnd *scmd, in pqi_raid_submit_scsi_cmd_with_io_request() argument
5517 io_request->scmd = scmd; in pqi_raid_submit_scsi_cmd_with_io_request()
5523 put_unaligned_le32(scsi_bufflen(scmd), &request->buffer_length); in pqi_raid_submit_scsi_cmd_with_io_request()
5528 request->ml_device_lun_number = (u8)scmd->device->lun; in pqi_raid_submit_scsi_cmd_with_io_request()
5530 cdb_length = min_t(size_t, scmd->cmd_len, sizeof(request->cdb)); in pqi_raid_submit_scsi_cmd_with_io_request()
5531 memcpy(request->cdb, scmd->cmnd, cdb_length); in pqi_raid_submit_scsi_cmd_with_io_request()
5555 switch (scmd->sc_data_direction) { in pqi_raid_submit_scsi_cmd_with_io_request()
5571 scmd->sc_data_direction); in pqi_raid_submit_scsi_cmd_with_io_request()
5575 rc = pqi_build_raid_sg_list(ctrl_info, request, scmd, io_request); in pqi_raid_submit_scsi_cmd_with_io_request()
5587 struct pqi_scsi_dev *device, struct scsi_cmnd *scmd, in pqi_raid_submit_scsi_cmd() argument
5592 io_request = pqi_alloc_io_request(ctrl_info, scmd); in pqi_raid_submit_scsi_cmd()
5597 device, scmd, queue_group); in pqi_raid_submit_scsi_cmd()
5602 struct scsi_cmnd *scmd; in pqi_raid_bypass_retry_needed() local
5609 scmd = io_request->scmd; in pqi_raid_bypass_retry_needed()
5610 if ((scmd->result & 0xff) == SAM_STAT_GOOD) in pqi_raid_bypass_retry_needed()
5612 if (host_byte(scmd->result) == DID_NO_CONNECT) in pqi_raid_bypass_retry_needed()
5615 device = scmd->device->hostdata; in pqi_raid_bypass_retry_needed()
5619 ctrl_info = shost_to_hba(scmd->device->host); in pqi_raid_bypass_retry_needed()
5629 struct scsi_cmnd *scmd; in pqi_aio_io_complete() local
5631 scmd = io_request->scmd; in pqi_aio_io_complete()
5632 scsi_dma_unmap(scmd); in pqi_aio_io_complete()
5634 set_host_byte(scmd, DID_IMM_RETRY); in pqi_aio_io_complete()
5635 pqi_cmd_priv(scmd)->this_residual++; in pqi_aio_io_complete()
5639 pqi_scsi_done(scmd); in pqi_aio_io_complete()
5643 struct pqi_scsi_dev *device, struct scsi_cmnd *scmd) in pqi_is_io_high_priority() argument
5652 IOPRIO_PRIO_CLASS(req_get_ioprio(scsi_cmd_to_rq(scmd))); in pqi_is_io_high_priority()
5655 switch (scmd->cmnd[0]) { in pqi_is_io_high_priority()
5674 struct pqi_scsi_dev *device, struct scsi_cmnd *scmd, in pqi_aio_submit_scsi_cmd() argument
5679 io_high_prio = pqi_is_io_high_priority(ctrl_info, device, scmd); in pqi_aio_submit_scsi_cmd()
5681 return pqi_aio_submit_io(ctrl_info, scmd, device->aio_handle, in pqi_aio_submit_scsi_cmd()
5682 scmd->cmnd, scmd->cmd_len, queue_group, NULL, in pqi_aio_submit_scsi_cmd()
5687 struct scsi_cmnd *scmd, u32 aio_handle, u8 *cdb, in pqi_aio_submit_io() argument
5697 device = scmd->device->hostdata; in pqi_aio_submit_io()
5698 io_request = pqi_alloc_io_request(ctrl_info, scmd); in pqi_aio_submit_io()
5702 io_request->scmd = scmd; in pqi_aio_submit_io()
5710 put_unaligned_le32(scsi_bufflen(scmd), &request->buffer_length); in pqi_aio_submit_io()
5716 put_unaligned_le64(((scmd->device->lun) << 8), &request->lun_number); in pqi_aio_submit_io()
5722 switch (scmd->sc_data_direction) { in pqi_aio_submit_io()
5738 scmd->sc_data_direction); in pqi_aio_submit_io()
5752 rc = pqi_build_aio_sg_list(ctrl_info, request, scmd, io_request); in pqi_aio_submit_io()
5764 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group, in pqi_aio_submit_r1_write_io() argument
5772 io_request = pqi_alloc_io_request(ctrl_info, scmd); in pqi_aio_submit_r1_write_io()
5777 io_request->scmd = scmd; in pqi_aio_submit_r1_write_io()
5791 put_unaligned_le32(scsi_bufflen(scmd), &r1_request->data_length); in pqi_aio_submit_r1_write_io()
5813 rc = pqi_build_aio_r1_sg_list(ctrl_info, r1_request, scmd, io_request); in pqi_aio_submit_r1_write_io()
5825 struct scsi_cmnd *scmd, struct pqi_queue_group *queue_group, in pqi_aio_submit_r56_write_io() argument
5833 io_request = pqi_alloc_io_request(ctrl_info, scmd); in pqi_aio_submit_r56_write_io()
5837 io_request->scmd = scmd; in pqi_aio_submit_r56_write_io()
5855 put_unaligned_le32(scsi_bufflen(scmd), &r56_request->data_length); in pqi_aio_submit_r56_write_io()
5880 rc = pqi_build_aio_r56_sg_list(ctrl_info, r56_request, scmd, io_request); in pqi_aio_submit_r56_write_io()
5892 struct scsi_cmnd *scmd) in pqi_get_hw_queue() argument
5897 return blk_mq_unique_tag_to_hwq(blk_mq_unique_tag(scsi_cmd_to_rq(scmd))); in pqi_get_hw_queue()
5900 static inline bool pqi_is_bypass_eligible_request(struct scsi_cmnd *scmd) in pqi_is_bypass_eligible_request() argument
5902 if (blk_rq_is_passthrough(scsi_cmd_to_rq(scmd))) in pqi_is_bypass_eligible_request()
5905 return pqi_cmd_priv(scmd)->this_residual == 0; in pqi_is_bypass_eligible_request()
5913 void pqi_prep_for_scsi_done(struct scsi_cmnd *scmd) in pqi_prep_for_scsi_done() argument
5917 if (!scmd->device) { in pqi_prep_for_scsi_done()
5918 set_host_byte(scmd, DID_NO_CONNECT); in pqi_prep_for_scsi_done()
5922 device = scmd->device->hostdata; in pqi_prep_for_scsi_done()
5924 set_host_byte(scmd, DID_NO_CONNECT); in pqi_prep_for_scsi_done()
5928 atomic_dec(&device->scsi_cmds_outstanding[scmd->device->lun]); in pqi_prep_for_scsi_done()
5932 struct scsi_cmnd *scmd) in pqi_is_parity_write_stream() argument
5945 rc = pqi_get_aio_lba_and_block_count(scmd, &rmd); in pqi_is_parity_write_stream()
5953 device = scmd->device->hostdata; in pqi_is_parity_write_stream()
6006 static int pqi_scsi_queue_command(struct Scsi_Host *shost, struct scsi_cmnd *scmd) in pqi_scsi_queue_command() argument
6015 device = scmd->device->hostdata; in pqi_scsi_queue_command()
6018 set_host_byte(scmd, DID_NO_CONNECT); in pqi_scsi_queue_command()
6019 pqi_scsi_done(scmd); in pqi_scsi_queue_command()
6023 atomic_inc(&device->scsi_cmds_outstanding[scmd->device->lun]); in pqi_scsi_queue_command()
6028 set_host_byte(scmd, DID_NO_CONNECT); in pqi_scsi_queue_command()
6029 pqi_scsi_done(scmd); in pqi_scsi_queue_command()
6042 scmd->result = 0; in pqi_scsi_queue_command()
6044 hw_queue = pqi_get_hw_queue(ctrl_info, scmd); in pqi_scsi_queue_command()
6050 pqi_is_bypass_eligible_request(scmd) && in pqi_scsi_queue_command()
6051 !pqi_is_parity_write_stream(ctrl_info, scmd)) { in pqi_scsi_queue_command()
6052 rc = pqi_raid_bypass_submit_scsi_cmd(ctrl_info, device, scmd, queue_group); in pqi_scsi_queue_command()
6059 rc = pqi_raid_submit_scsi_cmd(ctrl_info, device, scmd, queue_group); in pqi_scsi_queue_command()
6062 rc = pqi_aio_submit_scsi_cmd(ctrl_info, device, scmd, queue_group); in pqi_scsi_queue_command()
6064 rc = pqi_raid_submit_scsi_cmd(ctrl_info, device, scmd, queue_group); in pqi_scsi_queue_command()
6069 atomic_dec(&device->scsi_cmds_outstanding[scmd->device->lun]); in pqi_scsi_queue_command()
6171 struct scsi_cmnd *scmd; in pqi_fail_io_queued_for_device() local
6185 scmd = io_request->scmd; in pqi_fail_io_queued_for_device()
6186 if (!scmd) in pqi_fail_io_queued_for_device()
6189 scsi_device = scmd->device->hostdata; in pqi_fail_io_queued_for_device()
6194 set_host_byte(scmd, DID_RESET); in pqi_fail_io_queued_for_device()
6196 scsi_dma_unmap(scmd); in pqi_fail_io_queued_for_device()
6197 pqi_scsi_done(scmd); in pqi_fail_io_queued_for_device()
6290 static int pqi_lun_reset(struct pqi_ctrl_info *ctrl_info, struct scsi_cmnd *scmd) in pqi_lun_reset() argument
6298 device = scmd->device->hostdata; in pqi_lun_reset()
6313 request->ml_device_lun_number = (u8)scmd->device->lun; in pqi_lun_reset()
6321 rc = pqi_wait_for_lun_reset_completion(ctrl_info, device, (u8)scmd->device->lun, &wait); in pqi_lun_reset()
6335 static int pqi_lun_reset_with_retries(struct pqi_ctrl_info *ctrl_info, struct scsi_cmnd *scmd) in pqi_lun_reset_with_retries() argument
6343 device = scmd->device->hostdata; in pqi_lun_reset_with_retries()
6345 reset_rc = pqi_lun_reset(ctrl_info, scmd); in pqi_lun_reset_with_retries()
6354 wait_rc = pqi_device_wait_for_pending_io(ctrl_info, device, scmd->device->lun, timeout_msecs); in pqi_lun_reset_with_retries()
6361 static int pqi_device_reset(struct pqi_ctrl_info *ctrl_info, struct scsi_cmnd *scmd) in pqi_device_reset() argument
6366 device = scmd->device->hostdata; in pqi_device_reset()
6374 rc = pqi_lun_reset_with_retries(ctrl_info, scmd); in pqi_device_reset()
6380 static int pqi_eh_device_reset_handler(struct scsi_cmnd *scmd) in pqi_eh_device_reset_handler() argument
6387 shost = scmd->device->host; in pqi_eh_device_reset_handler()
6389 device = scmd->device->hostdata; in pqi_eh_device_reset_handler()
6396 device->bus, device->target, (u32)scmd->device->lun, in pqi_eh_device_reset_handler()
6397 scmd->cmd_len > 0 ? scmd->cmnd[0] : 0xff); in pqi_eh_device_reset_handler()
6403 rc = pqi_device_reset(ctrl_info, scmd); in pqi_eh_device_reset_handler()
6407 shost->host_no, device->bus, device->target, (u32)scmd->device->lun, in pqi_eh_device_reset_handler()
8909 struct scsi_cmnd *scmd; in pqi_fail_all_outstanding_requests() local
8917 scmd = io_request->scmd; in pqi_fail_all_outstanding_requests()
8918 if (scmd) { in pqi_fail_all_outstanding_requests()
8919 sdev = scmd->device; in pqi_fail_all_outstanding_requests()
8924 set_host_byte(scmd, DID_NO_CONNECT); in pqi_fail_all_outstanding_requests()
9070 struct scsi_cmnd *scmd; in pqi_crash_if_pending_command() local
9076 scmd = io_request->scmd; in pqi_crash_if_pending_command()
9077 WARN_ON(scmd != NULL); /* IO command from SML */ in pqi_crash_if_pending_command()
9078 WARN_ON(scmd == NULL); /* Non-IO cmd or driver initiated*/ in pqi_crash_if_pending_command()