Lines Matching refs:cmd

98 target_scsi2_reservation_check(struct se_cmd *cmd)  in target_scsi2_reservation_check()  argument
100 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_check()
101 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_check()
103 switch (cmd->t_task_cdb[0]) { in target_scsi2_reservation_check()
130 static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd) in target_check_scsi2_reservation_conflict() argument
132 struct se_session *se_sess = cmd->se_sess; in target_check_scsi2_reservation_conflict()
133 struct se_device *dev = cmd->se_dev; in target_check_scsi2_reservation_conflict()
138 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in target_check_scsi2_reservation_conflict()
202 target_scsi2_reservation_release(struct se_cmd *cmd) in target_scsi2_reservation_release() argument
204 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_release()
205 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_release()
211 rc = target_check_scsi2_reservation_conflict(cmd); in target_scsi2_reservation_release()
236 cmd->se_lun->unpacked_lun, cmd->se_deve->mapped_lun, in target_scsi2_reservation_release()
242 target_complete_cmd(cmd, GOOD); in target_scsi2_reservation_release()
247 target_scsi2_reservation_reserve(struct se_cmd *cmd) in target_scsi2_reservation_reserve() argument
249 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_reserve()
250 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_reserve()
255 if ((cmd->t_task_cdb[1] & 0x01) && in target_scsi2_reservation_reserve()
256 (cmd->t_task_cdb[1] & 0x02)) { in target_scsi2_reservation_reserve()
267 rc = target_check_scsi2_reservation_conflict(cmd); in target_scsi2_reservation_reserve()
281 cmd->se_lun->unpacked_lun, in target_scsi2_reservation_reserve()
284 " from %s \n", cmd->se_lun->unpacked_lun, in target_scsi2_reservation_reserve()
285 cmd->se_deve->mapped_lun, in target_scsi2_reservation_reserve()
299 cmd->se_lun->unpacked_lun, cmd->se_deve->mapped_lun, in target_scsi2_reservation_reserve()
306 target_complete_cmd(cmd, GOOD); in target_scsi2_reservation_reserve()
318 struct se_cmd *cmd, in core_scsi3_pr_seq_non_holder() argument
321 unsigned char *cdb = cmd->t_task_cdb; in core_scsi3_pr_seq_non_holder()
323 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pr_seq_non_holder()
334 se_deve = se_sess->se_node_acl->device_list[cmd->orig_fe_lun]; in core_scsi3_pr_seq_non_holder()
507 if (cmd->data_direction == DMA_TO_DEVICE) { in core_scsi3_pr_seq_non_holder()
513 transport_dump_cmd_direction(cmd), in core_scsi3_pr_seq_non_holder()
555 if (cmd->data_direction == DMA_FROM_DEVICE) { in core_scsi3_pr_seq_non_holder()
564 " for %s reservation\n", transport_dump_cmd_direction(cmd), in core_scsi3_pr_seq_non_holder()
573 target_scsi3_pr_reservation_check(struct se_cmd *cmd) in target_scsi3_pr_reservation_check() argument
575 struct se_device *dev = cmd->se_dev; in target_scsi3_pr_reservation_check()
576 struct se_session *sess = cmd->se_sess; in target_scsi3_pr_reservation_check()
583 cmd->pr_res_key = dev->dev_pr_res_holder->pr_res_key; in target_scsi3_pr_reservation_check()
598 if (core_scsi3_pr_seq_non_holder(cmd, pr_reg_type)) in target_scsi3_pr_reservation_check()
1434 struct se_cmd *cmd, in core_scsi3_decode_spec_i_port() argument
1441 struct se_device *dev = cmd->se_dev; in core_scsi3_decode_spec_i_port()
1444 struct se_session *se_sess = cmd->se_sess; in core_scsi3_decode_spec_i_port()
1460 local_se_deve = se_sess->se_node_acl->device_list[cmd->orig_fe_lun]; in core_scsi3_decode_spec_i_port()
1477 local_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_decode_spec_i_port()
1493 if (cmd->data_length < 28) { in core_scsi3_decode_spec_i_port()
1495 " length too small: %u\n", cmd->data_length); in core_scsi3_decode_spec_i_port()
1500 buf = transport_kmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
1516 if ((tpdl + 28) != cmd->data_length) { in core_scsi3_decode_spec_i_port()
1519 cmd->data_length); in core_scsi3_decode_spec_i_port()
1617 dest_tpg->se_tpg_tfo->get_fabric_name(), cmd->data_length, in core_scsi3_decode_spec_i_port()
1714 dest_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_decode_spec_i_port()
1734 transport_kunmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
1762 __core_scsi3_add_registration(cmd->se_dev, dest_node_acl, in core_scsi3_decode_spec_i_port()
1780 transport_kunmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
2001 core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, in core_scsi3_emulate_pro_register() argument
2004 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_register()
2005 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_register()
2007 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_emulate_pro_register()
2020 se_deve = se_sess->se_node_acl->device_list[cmd->orig_fe_lun]; in core_scsi3_emulate_pro_register()
2050 if (core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_emulate_pro_register()
2067 ret = core_scsi3_decode_spec_i_port(cmd, se_tpg, in core_scsi3_emulate_pro_register()
2116 pr_reg->pr_res_generation = core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_emulate_pro_register()
2120 " 0x%08x\n", cmd->se_tfo->get_fabric_name(), in core_scsi3_emulate_pro_register()
2130 pr_holder = core_scsi3_check_implicit_release(cmd->se_dev, in core_scsi3_emulate_pro_register()
2165 __core_scsi3_free_registration(cmd->se_dev, pr_reg, NULL, 1); in core_scsi3_emulate_pro_register()
2228 core_scsi3_pro_reserve(struct se_cmd *cmd, int type, int scope, u64 res_key) in core_scsi3_pro_reserve() argument
2230 struct se_device *dev = cmd->se_dev; in core_scsi3_pro_reserve()
2231 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pro_reserve()
2232 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_pro_reserve()
2247 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_pro_reserve()
2308 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2331 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2366 cmd->se_tfo->get_fabric_name(), core_scsi3_pr_dump_type(type), in core_scsi3_pro_reserve()
2369 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2375 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_reserve()
2384 core_scsi3_emulate_pro_reserve(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_reserve() argument
2394 return core_scsi3_pro_reserve(cmd, type, scope, res_key); in core_scsi3_emulate_pro_reserve()
2472 core_scsi3_emulate_pro_release(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_release() argument
2475 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_release()
2476 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_release()
2477 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_emulate_pro_release()
2561 cmd->se_tfo->get_fabric_name(), in core_scsi3_emulate_pro_release()
2621 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_emulate_pro_release()
2629 core_scsi3_emulate_pro_clear(struct se_cmd *cmd, u64 res_key) in core_scsi3_emulate_pro_clear() argument
2631 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_clear()
2633 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_clear()
2641 pr_reg_n = core_scsi3_locate_pr_reg(cmd->se_dev, in core_scsi3_emulate_pro_clear()
2704 cmd->se_tfo->get_fabric_name()); in core_scsi3_emulate_pro_clear()
2706 core_scsi3_update_and_write_aptpl(cmd->se_dev, false); in core_scsi3_emulate_pro_clear()
2783 core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, in core_scsi3_pro_preempt() argument
2786 struct se_device *dev = cmd->se_dev; in core_scsi3_pro_preempt()
2788 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pro_preempt()
2800 pr_reg_n = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_pro_preempt()
2941 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_preempt()
2944 core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_pro_preempt()
3064 core_tmr_lun_reset(dev, NULL, &preempt_and_abort_list, cmd); in core_scsi3_pro_preempt()
3070 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_preempt()
3073 core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_pro_preempt()
3078 core_scsi3_emulate_pro_preempt(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_preempt() argument
3088 return core_scsi3_pro_preempt(cmd, type, scope, res_key, in core_scsi3_emulate_pro_preempt()
3099 core_scsi3_emulate_pro_register_and_move(struct se_cmd *cmd, u64 res_key, in core_scsi3_emulate_pro_register_and_move() argument
3102 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_register_and_move()
3103 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_register_and_move()
3105 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_emulate_pro_register_and_move()
3135 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_emulate_pro_register_and_move()
3168 buf = transport_kmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3180 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3183 if ((tid_len + 24) != cmd->data_length) { in core_scsi3_emulate_pro_register_and_move()
3186 cmd->data_length); in core_scsi3_emulate_pro_register_and_move()
3226 buf = transport_kmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3261 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3427 if (core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_emulate_pro_register_and_move()
3490 core_scsi3_update_and_write_aptpl(cmd->se_dev, aptpl); in core_scsi3_emulate_pro_register_and_move()
3492 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3498 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3524 target_scsi3_emulate_pr_out(struct se_cmd *cmd) in target_scsi3_emulate_pr_out() argument
3526 struct se_device *dev = cmd->se_dev; in target_scsi3_emulate_pr_out()
3527 unsigned char *cdb = &cmd->t_task_cdb[0]; in target_scsi3_emulate_pr_out()
3543 if (cmd->se_dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS) { in target_scsi3_emulate_pr_out()
3554 if (!cmd->se_sess) in target_scsi3_emulate_pr_out()
3557 if (cmd->data_length < 24) { in target_scsi3_emulate_pr_out()
3559 " length too small: %u\n", cmd->data_length); in target_scsi3_emulate_pr_out()
3570 buf = transport_kmap_data_sg(cmd); in target_scsi3_emulate_pr_out()
3598 transport_kunmap_data_sg(cmd); in target_scsi3_emulate_pr_out()
3617 (cmd->data_length != 24)) { in target_scsi3_emulate_pr_out()
3619 " list length: %u\n", cmd->data_length); in target_scsi3_emulate_pr_out()
3630 ret = core_scsi3_emulate_pro_register(cmd, in target_scsi3_emulate_pr_out()
3634 ret = core_scsi3_emulate_pro_reserve(cmd, type, scope, res_key); in target_scsi3_emulate_pr_out()
3637 ret = core_scsi3_emulate_pro_release(cmd, type, scope, res_key); in target_scsi3_emulate_pr_out()
3640 ret = core_scsi3_emulate_pro_clear(cmd, res_key); in target_scsi3_emulate_pr_out()
3643 ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, in target_scsi3_emulate_pr_out()
3647 ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, in target_scsi3_emulate_pr_out()
3651 ret = core_scsi3_emulate_pro_register(cmd, in target_scsi3_emulate_pr_out()
3655 ret = core_scsi3_emulate_pro_register_and_move(cmd, res_key, in target_scsi3_emulate_pr_out()
3665 target_complete_cmd(cmd, GOOD); in target_scsi3_emulate_pr_out()
3675 core_scsi3_pri_read_keys(struct se_cmd *cmd) in core_scsi3_pri_read_keys() argument
3677 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_keys()
3682 if (cmd->data_length < 8) { in core_scsi3_pri_read_keys()
3684 " too small\n", cmd->data_length); in core_scsi3_pri_read_keys()
3688 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_keys()
3704 if ((add_len + 8) > (cmd->data_length - 8)) in core_scsi3_pri_read_keys()
3725 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_keys()
3736 core_scsi3_pri_read_reservation(struct se_cmd *cmd) in core_scsi3_pri_read_reservation() argument
3738 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_reservation()
3744 if (cmd->data_length < 8) { in core_scsi3_pri_read_reservation()
3746 " too small\n", cmd->data_length); in core_scsi3_pri_read_reservation()
3750 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_reservation()
3770 if (cmd->data_length < 22) in core_scsi3_pri_read_reservation()
3812 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_reservation()
3823 core_scsi3_pri_report_capabilities(struct se_cmd *cmd) in core_scsi3_pri_report_capabilities() argument
3825 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_report_capabilities()
3830 if (cmd->data_length < 6) { in core_scsi3_pri_report_capabilities()
3832 " %u too small\n", cmd->data_length); in core_scsi3_pri_report_capabilities()
3836 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_report_capabilities()
3870 transport_kunmap_data_sg(cmd); in core_scsi3_pri_report_capabilities()
3881 core_scsi3_pri_read_full_status(struct se_cmd *cmd) in core_scsi3_pri_read_full_status() argument
3883 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_full_status()
3894 if (cmd->data_length < 8) { in core_scsi3_pri_read_full_status()
3896 " too small\n", cmd->data_length); in core_scsi3_pri_read_full_status()
3900 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_full_status()
3939 if ((exp_desc_len + add_len) > cmd->data_length) { in core_scsi3_pri_read_full_status()
3941 " out of buffer: %d\n", cmd->data_length); in core_scsi3_pri_read_full_status()
4039 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_full_status()
4045 target_scsi3_emulate_pr_in(struct se_cmd *cmd) in target_scsi3_emulate_pr_in() argument
4058 if (cmd->se_dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS) { in target_scsi3_emulate_pr_in()
4065 switch (cmd->t_task_cdb[1] & 0x1f) { in target_scsi3_emulate_pr_in()
4067 ret = core_scsi3_pri_read_keys(cmd); in target_scsi3_emulate_pr_in()
4070 ret = core_scsi3_pri_read_reservation(cmd); in target_scsi3_emulate_pr_in()
4073 ret = core_scsi3_pri_report_capabilities(cmd); in target_scsi3_emulate_pr_in()
4076 ret = core_scsi3_pri_read_full_status(cmd); in target_scsi3_emulate_pr_in()
4080 " action: 0x%02x\n", cmd->t_task_cdb[1] & 0x1f); in target_scsi3_emulate_pr_in()
4085 target_complete_cmd(cmd, GOOD); in target_scsi3_emulate_pr_in()
4090 target_check_reservation(struct se_cmd *cmd) in target_check_reservation() argument
4092 struct se_device *dev = cmd->se_dev; in target_check_reservation()
4095 if (!cmd->se_sess) in target_check_reservation()
4104 ret = target_scsi2_reservation_check(cmd); in target_check_reservation()
4106 ret = target_scsi3_pr_reservation_check(cmd); in target_check_reservation()