diff mbox

[v4,28/37] target: Reduce number of __transport_wait_for_tasks() arguments

Message ID 20170208222507.25715-29-bart.vanassche@sandisk.com (mailing list archive)
State Superseded
Headers show

Commit Message

Bart Van Assche Feb. 8, 2017, 10:24 p.m. UTC
The *aborted and *tas variables are set by
__transport_wait_for_tasks() but the value that is set is ignored
by all callers due to previous patches. Hence remove the code that
sets these variables.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Cc: Nicholas A. Bellinger <nab@linux-iscsi.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: David Disseldorp <ddiss@suse.de>
---
 drivers/target/target_core_transport.c | 30 ++++++++++--------------------
 1 file changed, 10 insertions(+), 20 deletions(-)

Comments

Nicholas A. Bellinger Feb. 9, 2017, 11:09 a.m. UTC | #1
On Wed, 2017-02-08 at 14:24 -0800, Bart Van Assche wrote:
> The *aborted and *tas variables are set by
> __transport_wait_for_tasks() but the value that is set is ignored
> by all callers due to previous patches. Hence remove the code that
> sets these variables.
> 
> Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
> Reviewed-by: Hannes Reinecke <hare@suse.com>
> Cc: Nicholas A. Bellinger <nab@linux-iscsi.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: David Disseldorp <ddiss@suse.de>
> ---
>  drivers/target/target_core_transport.c | 30 ++++++++++--------------------
>  1 file changed, 10 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
> index 43b49f87dd22..f6d38eba139e 100644
> --- a/drivers/target/target_core_transport.c
> +++ b/drivers/target/target_core_transport.c
> @@ -2714,9 +2711,8 @@ void transport_clear_lun_ref(struct se_lun *lun)
>  	wait_for_completion(&lun->lun_ref_comp);
>  }
>  
> -static bool
> -__transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
> -			   bool *aborted, bool *tas, unsigned long *flags)
> +static bool __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
> +				       unsigned long *flags)
>  	__releases(&cmd->t_state_lock)
>  	__acquires(&cmd->t_state_lock)
>  {
> @@ -2727,12 +2723,6 @@ __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
>  	if (fabric_stop)
>  		cmd->transport_state |= CMD_T_FABRIC_STOP;
>  
> -	if (cmd->transport_state & CMD_T_ABORTED)
> -		*aborted = true;
> -
> -	if (cmd->transport_state & CMD_T_TAS)
> -		*tas = true;
> -
>  	if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD) &&
>  	    !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
>  		return false;

Given that patch #18 doesn't address the second order issue where
session shutdown quiesce is occuring, while se_cmd decriptors are
actively in CMD_T_ABORTED state blocked waiting for backend I/O
completion, these two parameters are still required.

Dropping for now.

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

Patch

diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 43b49f87dd22..f6d38eba139e 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2489,28 +2489,25 @@  static void transport_write_pending_qf(struct se_cmd *cmd)
 }
 
 static bool
-__transport_wait_for_tasks(struct se_cmd *, bool, bool *, bool *,
-			   unsigned long *flags);
+__transport_wait_for_tasks(struct se_cmd *, bool, unsigned long *flags);
 
-static void target_wait_free_cmd(struct se_cmd *cmd, bool *aborted, bool *tas)
+static void target_wait_free_cmd(struct se_cmd *cmd)
 {
 	unsigned long flags;
 
 	spin_lock_irqsave(&cmd->t_state_lock, flags);
-	__transport_wait_for_tasks(cmd, true, aborted, tas, &flags);
+	__transport_wait_for_tasks(cmd, true, &flags);
 	spin_unlock_irqrestore(&cmd->t_state_lock, flags);
 }
 
 int transport_generic_free_cmd(struct se_cmd *cmd, int wait_for_tasks)
 {
-	bool aborted = false, tas = false;
-
 	if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD)) {
 		if (wait_for_tasks && (cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
-			target_wait_free_cmd(cmd, &aborted, &tas);
+			target_wait_free_cmd(cmd);
 	} else {
 		if (wait_for_tasks)
-			target_wait_free_cmd(cmd, &aborted, &tas);
+			target_wait_free_cmd(cmd);
 		/*
 		 * Handle WRITE failure case where transport_generic_new_cmd()
 		 * has already added se_cmd to state_list, but fabric has
@@ -2714,9 +2711,8 @@  void transport_clear_lun_ref(struct se_lun *lun)
 	wait_for_completion(&lun->lun_ref_comp);
 }
 
-static bool
-__transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
-			   bool *aborted, bool *tas, unsigned long *flags)
+static bool __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
+				       unsigned long *flags)
 	__releases(&cmd->t_state_lock)
 	__acquires(&cmd->t_state_lock)
 {
@@ -2727,12 +2723,6 @@  __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
 	if (fabric_stop)
 		cmd->transport_state |= CMD_T_FABRIC_STOP;
 
-	if (cmd->transport_state & CMD_T_ABORTED)
-		*aborted = true;
-
-	if (cmd->transport_state & CMD_T_TAS)
-		*tas = true;
-
 	if (!(cmd->se_cmd_flags & SCF_SE_LUN_CMD) &&
 	    !(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB))
 		return false;
@@ -2744,7 +2734,7 @@  __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
 	if (!(cmd->transport_state & CMD_T_ACTIVE))
 		return false;
 
-	if (fabric_stop && *aborted)
+	if (fabric_stop && (cmd->transport_state & CMD_T_ABORTED))
 		return false;
 
 	cmd->transport_state |= CMD_T_STOP;
@@ -2773,10 +2763,10 @@  __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop,
 bool transport_wait_for_tasks(struct se_cmd *cmd)
 {
 	unsigned long flags;
-	bool ret, aborted = false, tas = false;
+	bool ret;
 
 	spin_lock_irqsave(&cmd->t_state_lock, flags);
-	ret = __transport_wait_for_tasks(cmd, false, &aborted, &tas, &flags);
+	ret = __transport_wait_for_tasks(cmd, false, &flags);
 	spin_unlock_irqrestore(&cmd->t_state_lock, flags);
 
 	return ret;