Re: [PATCH v1 1/4] iscsi-target: Introduce session_get_next_ttt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2015-01-26 at 12:49 +0200, Sagi Grimberg wrote:
> Reduce code duplication.
> 
> Signed-off-by: Sagi Grimberg <sagig@xxxxxxxxxxxx>
> ---
>  drivers/target/iscsi/iscsi_target.c      |   12 ++----------
>  drivers/target/iscsi/iscsi_target_util.c |    9 ++-------
>  include/target/iscsi/iscsi_target_core.h |   13 +++++++++++++
>  3 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
> index b21716a..866f9fe 100644
> --- a/drivers/target/iscsi/iscsi_target.c
> +++ b/drivers/target/iscsi/iscsi_target.c
> @@ -968,11 +968,7 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
>  
>  	conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt;
>  	if (hdr->flags & ISCSI_FLAG_CMD_READ) {
> -		spin_lock_bh(&conn->sess->ttt_lock);
> -		cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
> -		if (cmd->targ_xfer_tag == 0xFFFFFFFF)
> -			cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
> -		spin_unlock_bh(&conn->sess->ttt_lock);
> +		cmd->targ_xfer_tag = session_get_next_ttt(conn->sess);
>  	} else if (hdr->flags & ISCSI_FLAG_CMD_WRITE)
>  		cmd->targ_xfer_tag = 0xFFFFFFFF;
>  	cmd->cmd_sn		= be32_to_cpu(hdr->cmdsn);
> @@ -3047,11 +3043,7 @@ static int iscsit_send_r2t(
>  	int_to_scsilun(cmd->se_cmd.orig_fe_lun,
>  			(struct scsi_lun *)&hdr->lun);
>  	hdr->itt		= cmd->init_task_tag;
> -	spin_lock_bh(&conn->sess->ttt_lock);
> -	r2t->targ_xfer_tag	= conn->sess->targ_xfer_tag++;
> -	if (r2t->targ_xfer_tag == 0xFFFFFFFF)
> -		r2t->targ_xfer_tag = conn->sess->targ_xfer_tag++;
> -	spin_unlock_bh(&conn->sess->ttt_lock);
> +	r2t->targ_xfer_tag	= session_get_next_ttt(conn->sess);
>  	hdr->ttt		= cpu_to_be32(r2t->targ_xfer_tag);
>  	hdr->statsn		= cpu_to_be32(conn->stat_sn);
>  	hdr->exp_cmdsn		= cpu_to_be32(conn->sess->exp_cmd_sn);
> diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
> index 0b9c1d9..7df6919 100644
> --- a/drivers/target/iscsi/iscsi_target_util.c
> +++ b/drivers/target/iscsi/iscsi_target_util.c
> @@ -939,13 +939,8 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
>  	state = (want_response) ? ISTATE_SEND_NOPIN_WANT_RESPONSE :
>  				ISTATE_SEND_NOPIN_NO_RESPONSE;
>  	cmd->init_task_tag = RESERVED_ITT;
> -	spin_lock_bh(&conn->sess->ttt_lock);
> -	cmd->targ_xfer_tag = (want_response) ? conn->sess->targ_xfer_tag++ :
> -			0xFFFFFFFF;
> -	if (want_response && (cmd->targ_xfer_tag == 0xFFFFFFFF))
> -		cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
> -	spin_unlock_bh(&conn->sess->ttt_lock);
> -
> +	cmd->targ_xfer_tag = (want_response) ?
> +			     session_get_next_ttt(conn->sess) : 0xFFFFFFFF;
>  	spin_lock_bh(&conn->cmd_lock);
>  	list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
>  	spin_unlock_bh(&conn->cmd_lock);
> diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h
> index 09a522b..5f41a17 100644
> --- a/include/target/iscsi/iscsi_target_core.h
> +++ b/include/target/iscsi/iscsi_target_core.h
> @@ -880,4 +880,17 @@ struct iscsit_global {
>  	struct iscsi_portal_group	*discovery_tpg;
>  };
>  
> +static inline u32 session_get_next_ttt(struct iscsi_session *session)
> +{
> +	u32 ttt;
> +
> +	spin_lock_bh(&session->ttt_lock);
> +	ttt = session->targ_xfer_tag++;
> +	if (ttt == 0xFFFFFFFF)
> +		ttt = session->targ_xfer_tag++;
> +	spin_unlock_bh(&session->ttt_lock);
> +
> +	return ttt;
> +}
> +
>  #endif /* ISCSI_TARGET_CORE_H */

Looks fine.  Applied to target-pending/for-next.

--nab


--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux