Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65422d70 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen
Browse files

scsi: target: Fold core_tmr_handle_tas_abort() into transport_cmd_finish_abort()



For the two calls to transport_cmd_finish_abort() outside
core_tmr_handle_tas_abort() it is guaranteed that CMD_T_TAS is not set. Use
this property to fold core_tmr_handle_tas_abort() into
transport_cmd_finish_abort(). This patch does not change any functionality.

Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: default avatarMike Christie <mchristi@redhat.com>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 709d5651
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ int init_se_kmem_caches(void);
void	release_se_kmem_caches(void);
u32	scsi_get_new_index(scsi_index_t);
void	transport_subsystem_check_init(void);
int	transport_cmd_finish_abort(struct se_cmd *, int);
int	transport_cmd_finish_abort(struct se_cmd *);
unsigned char *transport_dump_cmd_direction(struct se_cmd *);
void	transport_dump_dev_state(struct se_device *, char *, int *);
void	transport_dump_dev_info(struct se_device *, struct se_lun *,
+3 −13
Original line number Diff line number Diff line
@@ -75,16 +75,6 @@ void core_tmr_release_req(struct se_tmr_req *tmr)
	kfree(tmr);
}

static int core_tmr_handle_tas_abort(struct se_cmd *cmd, int tas)
{
	bool send_tas = cmd->transport_state & CMD_T_TAS;

	if (send_tas)
		transport_send_task_abort(cmd);

	return transport_cmd_finish_abort(cmd, !send_tas);
}

static int target_check_cdb_and_preempt(struct list_head *list,
		struct se_cmd *cmd)
{
@@ -183,7 +173,7 @@ void core_tmr_abort_task(
		cancel_work_sync(&se_cmd->work);
		transport_wait_for_tasks(se_cmd);

		if (!transport_cmd_finish_abort(se_cmd, true))
		if (!transport_cmd_finish_abort(se_cmd))
			target_put_sess_cmd(se_cmd);

		printk("ABORT_TASK: Sending TMR_FUNCTION_COMPLETE for"
@@ -281,7 +271,7 @@ static void core_tmr_drain_tmr_list(
		cancel_work_sync(&cmd->work);
		transport_wait_for_tasks(cmd);

		if (!transport_cmd_finish_abort(cmd, 1))
		if (!transport_cmd_finish_abort(cmd))
			target_put_sess_cmd(cmd);
	}
}
@@ -370,7 +360,7 @@ static void core_tmr_drain_state_list(
		cancel_work_sync(&cmd->work);
		transport_wait_for_tasks(cmd);

		if (!core_tmr_handle_tas_abort(cmd, tas))
		if (!transport_cmd_finish_abort(cmd))
			target_put_sess_cmd(cmd);
	}
}
+7 −3
Original line number Diff line number Diff line
@@ -688,23 +688,27 @@ static void transport_lun_remove_cmd(struct se_cmd *cmd)
		percpu_ref_put(&lun->lun_ref);
}

int transport_cmd_finish_abort(struct se_cmd *cmd, int remove)
int transport_cmd_finish_abort(struct se_cmd *cmd)
{
	bool send_tas = cmd->transport_state & CMD_T_TAS;
	bool ack_kref = (cmd->se_cmd_flags & SCF_ACK_KREF);
	int ret = 0;

	if (send_tas)
		transport_send_task_abort(cmd);

	if (cmd->se_cmd_flags & SCF_SE_LUN_CMD)
		transport_lun_remove_cmd(cmd);
	/*
	 * Allow the fabric driver to unmap any resources before
	 * releasing the descriptor via TFO->release_cmd()
	 */
	if (remove)
	if (!send_tas)
		cmd->se_tfo->aborted_task(cmd);

	if (transport_cmd_check_stop_to_fabric(cmd))
		return 1;
	if (remove && ack_kref)
	if (!send_tas && ack_kref)
		ret = target_put_sess_cmd(cmd);

	return ret;