Re: for-next iscsi target is broken

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

 



(RESENDING)

On Tue, 2015-09-08 at 06:14 -0700, Roland Dreier wrote:
> From: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> 
>  > Umm, the patch doesn't fix the problem. Do you see the issue?
> 
> Sorry, didn't have my test setup over the (long) weekend, so sent a
> proposed fix blind.  In fact, doing that again to unblock you: I think
> the issue is that we "cleaned up" the working patch by moving
> atomic_inc_return() into a pr_debug(), which means the increment
> doesn't happen unless you have debug prints enabled.
> 
> I will run this on my setup today but in the meantime here it is.
> Nic, assuming *this* fixes Sagi's test, can you fold this in?
> 
>  - Roland
> 
> ---------- 8< ---------- 8< ----------
> 
> From: Roland Dreier <roland@xxxxxxxxxxxxxxx>
> Date: Mon, 7 Sep 2015 09:08:37 -0700
> Subject: [PATCH] fixup! target: Drop iSCSI use of mutex around max_cmd_sn
>  increment
> 
> ---
>  drivers/target/iscsi/iscsi_target_device.c | 7 +++++--
>  drivers/target/iscsi/iscsi_target_nego.c   | 2 --
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/target/iscsi/iscsi_target_device.c b/drivers/target/iscsi/iscsi_target_device.c
> index 07d2ef67dba6..0382fa24b53b 100644
> --- a/drivers/target/iscsi/iscsi_target_device.c
> +++ b/drivers/target/iscsi/iscsi_target_device.c
> @@ -47,16 +47,19 @@ void iscsit_determine_maxcmdsn(struct iscsi_session *sess)
>  	 * core_set_queue_depth_for_node().
>  	 */
>  	sess->cmdsn_window = se_nacl->queue_depth;
> -	atomic_set(&sess->max_cmd_sn, (u32) atomic_read(&sess->max_cmd_sn) + se_nacl->queue_depth - 1);
> +	atomic_add(se_nacl->queue_depth - 1, &sess->max_cmd_sn);
>  }
>  
>  void iscsit_increment_maxcmdsn(struct iscsi_cmd *cmd, struct iscsi_session *sess)
>  {
> +	u32 max_cmd_sn;
> +
>  	if (cmd->immediate_cmd || cmd->maxcmdsn_inc)
>  		return;
>  
>  	cmd->maxcmdsn_inc = 1;
>  
> -	pr_debug("Updated MaxCmdSN to 0x%08x\n", atomic_inc_return(&sess->max_cmd_sn));
> +	max_cmd_sn = atomic_inc_return(&sess->max_cmd_sn);
> +	pr_debug("Updated MaxCmdSN to 0x%08x\n", max_cmd_sn);
>  }
>  EXPORT_SYMBOL(iscsit_increment_maxcmdsn);
> diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c
> index 74d041e815f4..4d08afe71e67 100644
> --- a/drivers/target/iscsi/iscsi_target_nego.c
> +++ b/drivers/target/iscsi/iscsi_target_nego.c
> @@ -366,8 +366,6 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
>  		return -1;
>  
>  	login->rsp_length		= 0;
> -	login_rsp->exp_cmdsn		= cpu_to_be32(login_rsp->exp_cmdsn);
> -	login_rsp->max_cmdsn		= cpu_to_be32(login_rsp->max_cmdsn);
>  
>  	return 0;
>  }


Applied as a incremental patch to target-pending/for-next code.

Thanks Roland & Sagi.

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