Lines Matching refs:cmd

96 target_scsi2_reservation_check(struct se_cmd *cmd)  in target_scsi2_reservation_check()  argument
98 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_check()
99 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_check()
101 switch (cmd->t_task_cdb[0]) { in target_scsi2_reservation_check()
128 static int target_check_scsi2_reservation_conflict(struct se_cmd *cmd) in target_check_scsi2_reservation_conflict() argument
130 struct se_session *se_sess = cmd->se_sess; in target_check_scsi2_reservation_conflict()
131 struct se_device *dev = cmd->se_dev; in target_check_scsi2_reservation_conflict()
136 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in target_check_scsi2_reservation_conflict()
200 target_scsi2_reservation_release(struct se_cmd *cmd) in target_scsi2_reservation_release() argument
202 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_release()
203 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_release()
209 rc = target_check_scsi2_reservation_conflict(cmd); in target_scsi2_reservation_release()
235 cmd->se_lun->unpacked_lun, cmd->orig_fe_lun, in target_scsi2_reservation_release()
241 target_complete_cmd(cmd, GOOD); in target_scsi2_reservation_release()
246 target_scsi2_reservation_reserve(struct se_cmd *cmd) in target_scsi2_reservation_reserve() argument
248 struct se_device *dev = cmd->se_dev; in target_scsi2_reservation_reserve()
249 struct se_session *sess = cmd->se_sess; in target_scsi2_reservation_reserve()
254 if ((cmd->t_task_cdb[1] & 0x01) && in target_scsi2_reservation_reserve()
255 (cmd->t_task_cdb[1] & 0x02)) { in target_scsi2_reservation_reserve()
266 rc = target_check_scsi2_reservation_conflict(cmd); in target_scsi2_reservation_reserve()
280 cmd->se_lun->unpacked_lun, in target_scsi2_reservation_reserve()
283 " from %s \n", cmd->se_lun->unpacked_lun, in target_scsi2_reservation_reserve()
284 cmd->orig_fe_lun, in target_scsi2_reservation_reserve()
298 cmd->se_lun->unpacked_lun, cmd->orig_fe_lun, in target_scsi2_reservation_reserve()
305 target_complete_cmd(cmd, GOOD); in target_scsi2_reservation_reserve()
316 static int core_scsi3_pr_seq_non_holder(struct se_cmd *cmd, u32 pr_reg_type, in core_scsi3_pr_seq_non_holder() argument
319 unsigned char *cdb = cmd->t_task_cdb; in core_scsi3_pr_seq_non_holder()
320 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pr_seq_non_holder()
335 se_deve = target_nacl_find_deve(nacl, cmd->orig_fe_lun); in core_scsi3_pr_seq_non_holder()
500 if (cmd->data_direction == DMA_TO_DEVICE) { in core_scsi3_pr_seq_non_holder()
506 transport_dump_cmd_direction(cmd), in core_scsi3_pr_seq_non_holder()
548 if (cmd->data_direction == DMA_FROM_DEVICE) { in core_scsi3_pr_seq_non_holder()
557 " for %s reservation\n", transport_dump_cmd_direction(cmd), in core_scsi3_pr_seq_non_holder()
566 target_scsi3_pr_reservation_check(struct se_cmd *cmd) in target_scsi3_pr_reservation_check() argument
568 struct se_device *dev = cmd->se_dev; in target_scsi3_pr_reservation_check()
569 struct se_session *sess = cmd->se_sess; in target_scsi3_pr_reservation_check()
577 cmd->pr_res_key = dev->dev_pr_res_holder->pr_res_key; in target_scsi3_pr_reservation_check()
592 if (core_scsi3_pr_seq_non_holder(cmd, pr_reg_type, isid_mismatch)) in target_scsi3_pr_reservation_check()
1499 struct se_cmd *cmd, in core_scsi3_decode_spec_i_port() argument
1506 struct se_device *dev = cmd->se_dev; in core_scsi3_decode_spec_i_port()
1508 struct se_session *se_sess = cmd->se_sess; in core_scsi3_decode_spec_i_port()
1536 local_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_decode_spec_i_port()
1537 se_sess->se_node_acl, cmd->se_lun, in core_scsi3_decode_spec_i_port()
1538 NULL, cmd->orig_fe_lun, l_isid, in core_scsi3_decode_spec_i_port()
1553 if (cmd->data_length < 28) { in core_scsi3_decode_spec_i_port()
1555 " length too small: %u\n", cmd->data_length); in core_scsi3_decode_spec_i_port()
1560 buf = transport_kmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
1576 if ((tpdl + 28) != cmd->data_length) { in core_scsi3_decode_spec_i_port()
1579 cmd->data_length); in core_scsi3_decode_spec_i_port()
1670 dest_tpg->se_tpg_tfo->get_fabric_name(), cmd->data_length, in core_scsi3_decode_spec_i_port()
1770 dest_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_decode_spec_i_port()
1791 transport_kunmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
1818 __core_scsi3_add_registration(cmd->se_dev, dest_node_acl, in core_scsi3_decode_spec_i_port()
1839 transport_kunmap_data_sg(cmd); in core_scsi3_decode_spec_i_port()
2060 core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, in core_scsi3_emulate_pro_register() argument
2063 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_register()
2064 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_register()
2065 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_emulate_pro_register()
2107 if (core_scsi3_alloc_registration(cmd->se_dev, in core_scsi3_emulate_pro_register()
2108 se_sess->se_node_acl, cmd->se_lun, in core_scsi3_emulate_pro_register()
2109 NULL, cmd->orig_fe_lun, isid_ptr, in core_scsi3_emulate_pro_register()
2125 ret = core_scsi3_decode_spec_i_port(cmd, se_tpg, in core_scsi3_emulate_pro_register()
2173 pr_reg->pr_res_generation = core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_emulate_pro_register()
2177 " 0x%08x\n", cmd->se_tfo->get_fabric_name(), in core_scsi3_emulate_pro_register()
2187 pr_holder = core_scsi3_check_implicit_release(cmd->se_dev, in core_scsi3_emulate_pro_register()
2222 __core_scsi3_free_registration(cmd->se_dev, pr_reg, NULL, 1); in core_scsi3_emulate_pro_register()
2285 core_scsi3_pro_reserve(struct se_cmd *cmd, int type, int scope, u64 res_key) in core_scsi3_pro_reserve() argument
2287 struct se_device *dev = cmd->se_dev; in core_scsi3_pro_reserve()
2288 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pro_reserve()
2289 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_pro_reserve()
2304 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_pro_reserve()
2365 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2388 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2423 cmd->se_tfo->get_fabric_name(), core_scsi3_pr_dump_type(type), in core_scsi3_pro_reserve()
2426 cmd->se_tfo->get_fabric_name(), in core_scsi3_pro_reserve()
2432 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_reserve()
2441 core_scsi3_emulate_pro_reserve(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_reserve() argument
2451 return core_scsi3_pro_reserve(cmd, type, scope, res_key); in core_scsi3_emulate_pro_reserve()
2529 core_scsi3_emulate_pro_release(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_release() argument
2532 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_release()
2533 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_release()
2534 struct se_lun *se_lun = cmd->se_lun; in core_scsi3_emulate_pro_release()
2618 cmd->se_tfo->get_fabric_name(), in core_scsi3_emulate_pro_release()
2678 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_emulate_pro_release()
2686 core_scsi3_emulate_pro_clear(struct se_cmd *cmd, u64 res_key) in core_scsi3_emulate_pro_clear() argument
2688 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_clear()
2690 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_clear()
2698 pr_reg_n = core_scsi3_locate_pr_reg(cmd->se_dev, in core_scsi3_emulate_pro_clear()
2761 cmd->se_tfo->get_fabric_name()); in core_scsi3_emulate_pro_clear()
2763 core_scsi3_update_and_write_aptpl(cmd->se_dev, false); in core_scsi3_emulate_pro_clear()
2840 core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, in core_scsi3_pro_preempt() argument
2843 struct se_device *dev = cmd->se_dev; in core_scsi3_pro_preempt()
2845 struct se_session *se_sess = cmd->se_sess; in core_scsi3_pro_preempt()
2857 pr_reg_n = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_pro_preempt()
2998 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_preempt()
3001 core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_pro_preempt()
3121 core_tmr_lun_reset(dev, NULL, &preempt_and_abort_list, cmd); in core_scsi3_pro_preempt()
3127 core_scsi3_update_and_write_aptpl(cmd->se_dev, true); in core_scsi3_pro_preempt()
3130 core_scsi3_pr_generation(cmd->se_dev); in core_scsi3_pro_preempt()
3135 core_scsi3_emulate_pro_preempt(struct se_cmd *cmd, int type, int scope, in core_scsi3_emulate_pro_preempt() argument
3145 return core_scsi3_pro_preempt(cmd, type, scope, res_key, in core_scsi3_emulate_pro_preempt()
3156 core_scsi3_emulate_pro_register_and_move(struct se_cmd *cmd, u64 res_key, in core_scsi3_emulate_pro_register_and_move() argument
3159 struct se_session *se_sess = cmd->se_sess; in core_scsi3_emulate_pro_register_and_move()
3160 struct se_device *dev = cmd->se_dev; in core_scsi3_emulate_pro_register_and_move()
3162 struct se_lun *se_lun = cmd->se_lun, *tmp_lun; in core_scsi3_emulate_pro_register_and_move()
3191 pr_reg = core_scsi3_locate_pr_reg(cmd->se_dev, se_sess->se_node_acl, in core_scsi3_emulate_pro_register_and_move()
3224 buf = transport_kmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3236 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3239 if ((tid_len + 24) != cmd->data_length) { in core_scsi3_emulate_pro_register_and_move()
3242 cmd->data_length); in core_scsi3_emulate_pro_register_and_move()
3280 buf = transport_kmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3308 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3478 if (core_scsi3_alloc_registration(cmd->se_dev, dest_node_acl, in core_scsi3_emulate_pro_register_and_move()
3541 core_scsi3_update_and_write_aptpl(cmd->se_dev, aptpl); in core_scsi3_emulate_pro_register_and_move()
3543 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3549 transport_kunmap_data_sg(cmd); in core_scsi3_emulate_pro_register_and_move()
3575 target_scsi3_emulate_pr_out(struct se_cmd *cmd) in target_scsi3_emulate_pr_out() argument
3577 struct se_device *dev = cmd->se_dev; in target_scsi3_emulate_pr_out()
3578 unsigned char *cdb = &cmd->t_task_cdb[0]; in target_scsi3_emulate_pr_out()
3594 if (cmd->se_dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS) { in target_scsi3_emulate_pr_out()
3605 if (!cmd->se_sess) in target_scsi3_emulate_pr_out()
3608 if (cmd->data_length < 24) { in target_scsi3_emulate_pr_out()
3610 " length too small: %u\n", cmd->data_length); in target_scsi3_emulate_pr_out()
3621 buf = transport_kmap_data_sg(cmd); in target_scsi3_emulate_pr_out()
3649 transport_kunmap_data_sg(cmd); in target_scsi3_emulate_pr_out()
3668 (cmd->data_length != 24)) { in target_scsi3_emulate_pr_out()
3670 " list length: %u\n", cmd->data_length); in target_scsi3_emulate_pr_out()
3681 ret = core_scsi3_emulate_pro_register(cmd, in target_scsi3_emulate_pr_out()
3685 ret = core_scsi3_emulate_pro_reserve(cmd, type, scope, res_key); in target_scsi3_emulate_pr_out()
3688 ret = core_scsi3_emulate_pro_release(cmd, type, scope, res_key); in target_scsi3_emulate_pr_out()
3691 ret = core_scsi3_emulate_pro_clear(cmd, res_key); in target_scsi3_emulate_pr_out()
3694 ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, in target_scsi3_emulate_pr_out()
3698 ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, in target_scsi3_emulate_pr_out()
3702 ret = core_scsi3_emulate_pro_register(cmd, in target_scsi3_emulate_pr_out()
3706 ret = core_scsi3_emulate_pro_register_and_move(cmd, res_key, in target_scsi3_emulate_pr_out()
3716 target_complete_cmd(cmd, GOOD); in target_scsi3_emulate_pr_out()
3726 core_scsi3_pri_read_keys(struct se_cmd *cmd) in core_scsi3_pri_read_keys() argument
3728 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_keys()
3733 if (cmd->data_length < 8) { in core_scsi3_pri_read_keys()
3735 " too small\n", cmd->data_length); in core_scsi3_pri_read_keys()
3739 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_keys()
3755 if ((add_len + 8) > (cmd->data_length - 8)) in core_scsi3_pri_read_keys()
3776 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_keys()
3787 core_scsi3_pri_read_reservation(struct se_cmd *cmd) in core_scsi3_pri_read_reservation() argument
3789 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_reservation()
3795 if (cmd->data_length < 8) { in core_scsi3_pri_read_reservation()
3797 " too small\n", cmd->data_length); in core_scsi3_pri_read_reservation()
3801 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_reservation()
3821 if (cmd->data_length < 22) in core_scsi3_pri_read_reservation()
3863 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_reservation()
3874 core_scsi3_pri_report_capabilities(struct se_cmd *cmd) in core_scsi3_pri_report_capabilities() argument
3876 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_report_capabilities()
3881 if (cmd->data_length < 6) { in core_scsi3_pri_report_capabilities()
3883 " %u too small\n", cmd->data_length); in core_scsi3_pri_report_capabilities()
3887 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_report_capabilities()
3921 transport_kunmap_data_sg(cmd); in core_scsi3_pri_report_capabilities()
3932 core_scsi3_pri_read_full_status(struct se_cmd *cmd) in core_scsi3_pri_read_full_status() argument
3934 struct se_device *dev = cmd->se_dev; in core_scsi3_pri_read_full_status()
3946 if (cmd->data_length < 8) { in core_scsi3_pri_read_full_status()
3948 " too small\n", cmd->data_length); in core_scsi3_pri_read_full_status()
3952 buf = transport_kmap_data_sg(cmd); in core_scsi3_pri_read_full_status()
3991 exp_desc_len + add_len > cmd->data_length) { in core_scsi3_pri_read_full_status()
3993 " out of buffer: %d\n", cmd->data_length); in core_scsi3_pri_read_full_status()
4096 transport_kunmap_data_sg(cmd); in core_scsi3_pri_read_full_status()
4102 target_scsi3_emulate_pr_in(struct se_cmd *cmd) in target_scsi3_emulate_pr_in() argument
4115 if (cmd->se_dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS) { in target_scsi3_emulate_pr_in()
4122 switch (cmd->t_task_cdb[1] & 0x1f) { in target_scsi3_emulate_pr_in()
4124 ret = core_scsi3_pri_read_keys(cmd); in target_scsi3_emulate_pr_in()
4127 ret = core_scsi3_pri_read_reservation(cmd); in target_scsi3_emulate_pr_in()
4130 ret = core_scsi3_pri_report_capabilities(cmd); in target_scsi3_emulate_pr_in()
4133 ret = core_scsi3_pri_read_full_status(cmd); in target_scsi3_emulate_pr_in()
4137 " action: 0x%02x\n", cmd->t_task_cdb[1] & 0x1f); in target_scsi3_emulate_pr_in()
4142 target_complete_cmd(cmd, GOOD); in target_scsi3_emulate_pr_in()
4147 target_check_reservation(struct se_cmd *cmd) in target_check_reservation() argument
4149 struct se_device *dev = cmd->se_dev; in target_check_reservation()
4152 if (!cmd->se_sess) in target_check_reservation()
4161 ret = target_scsi2_reservation_check(cmd); in target_check_reservation()
4163 ret = target_scsi3_pr_reservation_check(cmd); in target_check_reservation()