Re: [PATCH] target: Remove write-only stats fields and lock from struct se_node_acl

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

 



On Tue, 2013-11-19 at 10:12 -0800, Roland Dreier wrote:
> From: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> 
> The only fabric driver that touches these counters is iscsi, and the
> core has no way to report or otherwise use the values, so we should just
> get rid of them.
> 
> Signed-off-by: Roland Dreier <roland@xxxxxxxxxxxxxxx>

Hi Roland,

So I've already applied the following patch to drop the locks for
statistics, and use atomic_long_t for this particular items here:

iscsi-target: Convert iscsi_session statistics to atomic_long_t
https://git.kernel.org/cgit/linux/kernel/git/nab/target-pending.git/commit/?h=for-next&id=3e07395441c8b44e661572d33d3f06d249b48fb2

Also FYI, these particular values are exposed via
drivers/target/target_core_stat.c, and not directly by
iscsi_target_stat.c code.

--nab

> ---
>  drivers/target/iscsi/iscsi_target.c | 15 ---------------
>  drivers/target/target_core_tpg.c    |  2 --
>  include/target/target_core_base.h   |  4 ----
>  3 files changed, 21 deletions(-)
> 
> diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
> index 38e44b9abf0f..6ecd5479a1cc 100644
> --- a/drivers/target/iscsi/iscsi_target.c
> +++ b/drivers/target/iscsi/iscsi_target.c
> @@ -807,11 +807,6 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
>  
>  	spin_lock_bh(&conn->sess->session_stats_lock);
>  	conn->sess->cmd_pdus++;
> -	if (conn->sess->se_sess->se_node_acl) {
> -		spin_lock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -		conn->sess->se_sess->se_node_acl->num_cmds++;
> -		spin_unlock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -	}
>  	spin_unlock_bh(&conn->sess->session_stats_lock);
>  
>  	hdr			= (struct iscsi_scsi_req *) buf;
> @@ -1262,11 +1257,6 @@ iscsit_check_dataout_hdr(struct iscsi_conn *conn, unsigned char *buf,
>  	/* iSCSI write */
>  	spin_lock_bh(&conn->sess->session_stats_lock);
>  	conn->sess->rx_data_octets += payload_length;
> -	if (conn->sess->se_sess->se_node_acl) {
> -		spin_lock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -		conn->sess->se_sess->se_node_acl->write_bytes += payload_length;
> -		spin_unlock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -	}
>  	spin_unlock_bh(&conn->sess->session_stats_lock);
>  
>  	if (payload_length > conn->conn_ops->MaxXmitDataSegmentLength) {
> @@ -2632,11 +2622,6 @@ static int iscsit_send_datain(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
>  
>  	spin_lock_bh(&conn->sess->session_stats_lock);
>  	conn->sess->tx_data_octets += datain.length;
> -	if (conn->sess->se_sess->se_node_acl) {
> -		spin_lock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -		conn->sess->se_sess->se_node_acl->read_bytes += datain.length;
> -		spin_unlock(&conn->sess->se_sess->se_node_acl->stats_lock);
> -	}
>  	spin_unlock_bh(&conn->sess->session_stats_lock);
>  	/*
>  	 * Special case for successfully execution w/ both DATAIN
> diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
> index b9a6ec0aa5fe..ad653306b4ca 100644
> --- a/drivers/target/target_core_tpg.c
> +++ b/drivers/target/target_core_tpg.c
> @@ -277,7 +277,6 @@ struct se_node_acl *core_tpg_check_initiator_node_acl(
>  	snprintf(acl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname);
>  	acl->se_tpg = tpg;
>  	acl->acl_index = scsi_get_new_index(SCSI_AUTH_INTR_INDEX);
> -	spin_lock_init(&acl->stats_lock);
>  	acl->dynamic_node_acl = 1;
>  
>  	tpg->se_tpg_tfo->set_default_node_attributes(acl);
> @@ -405,7 +404,6 @@ struct se_node_acl *core_tpg_add_initiator_node_acl(
>  	snprintf(acl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname);
>  	acl->se_tpg = tpg;
>  	acl->acl_index = scsi_get_new_index(SCSI_AUTH_INTR_INDEX);
> -	spin_lock_init(&acl->stats_lock);
>  
>  	tpg->se_tpg_tfo->set_default_node_attributes(acl);
>  
> diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
> index 5bdb8b7d2a69..75db43774478 100644
> --- a/include/target/target_core_base.h
> +++ b/include/target/target_core_base.h
> @@ -517,10 +517,6 @@ struct se_node_acl {
>  	u32			acl_index;
>  #define MAX_ACL_TAG_SIZE 64
>  	char			acl_tag[MAX_ACL_TAG_SIZE];
> -	u64			num_cmds;
> -	u64			read_bytes;
> -	u64			write_bytes;
> -	spinlock_t		stats_lock;
>  	/* Used for PR SPEC_I_PT=1 and REGISTER_AND_MOVE */
>  	atomic_t		acl_pr_ref_count;
>  	struct se_dev_entry	**device_list;


--
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