From d43d6aea844e66b847e3a0e5cb2c24b6ba84908a Mon Sep 17 00:00:00 2001
From: Christoph Hellwig <hch@infradead.org>
Date: Tue, 24 Apr 2012 00:25:08 -0400
Subject: [PATCH] target: remove the t_task_cdbs_ex_left field in struct se_cmd

Now that tasks are gone we are guaranteed to only get a single completion
per command, and thus don't need this counter.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
---
 drivers/target/target_core_tmr.c       | 7 -------
 drivers/target/target_core_transport.c | 7 +------
 include/target/target_core_base.h      | 1 -
 3 files changed, 1 insertion(+), 14 deletions(-)

diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
index bd0b4e62e9c6..84caf1bed9a3 100644
--- a/drivers/target/target_core_tmr.c
+++ b/drivers/target/target_core_tmr.c
@@ -333,13 +333,6 @@ static void core_tmr_drain_state_list(
 		spin_lock_irqsave(&cmd->t_state_lock, flags);
 		target_stop_cmd(cmd, &flags);
 
-		if (!atomic_dec_and_test(&cmd->t_task_cdbs_ex_left)) {
-			spin_unlock_irqrestore(&cmd->t_state_lock, flags);
-			pr_debug("LUN_RESET: Skipping cmd: %p, dev: %p for"
-				" t_task_cdbs_ex_left: %d\n", cmd, dev,
-				atomic_read(&cmd->t_task_cdbs_ex_left));
-			continue;
-		}
 		fe_count = atomic_read(&cmd->t_fe_count);
 
 		if (!(cmd->transport_state & CMD_T_ACTIVE)) {
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 28df7b8ea9c4..d110ead38721 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -457,7 +457,6 @@ static void target_remove_from_state_list(struct se_cmd *cmd)
 	spin_lock_irqsave(&dev->execute_task_lock, flags);
 	if (cmd->state_active) {
 		list_del(&cmd->state_list);
-		atomic_dec(&cmd->t_task_cdbs_ex_left);
 		cmd->state_active = false;
 	}
 	spin_unlock_irqrestore(&dev->execute_task_lock, flags);
@@ -1771,9 +1770,7 @@ void transport_generic_request_failure(struct se_cmd *cmd)
 	pr_debug("-----[ i_state: %d t_state: %d scsi_sense_reason: %d\n",
 		cmd->se_tfo->get_cmd_state(cmd),
 		cmd->t_state, cmd->scsi_sense_reason);
-	pr_debug("-----[ t_task_cdbs_ex_left: %d --"
-		" CMD_T_ACTIVE: %d CMD_T_STOP: %d CMD_T_SENT: %d\n",
-		atomic_read(&cmd->t_task_cdbs_ex_left),
+	pr_debug("-----[ CMD_T_ACTIVE: %d CMD_T_STOP: %d CMD_T_SENT: %d\n",
 		(cmd->transport_state & CMD_T_ACTIVE) != 0,
 		(cmd->transport_state & CMD_T_STOP) != 0,
 		(cmd->transport_state & CMD_T_SENT) != 0);
@@ -3503,8 +3500,6 @@ int transport_generic_new_cmd(struct se_cmd *cmd)
 	atomic_inc(&cmd->t_fe_count);
 	atomic_inc(&cmd->t_se_count);
 
-	atomic_set(&cmd->t_task_cdbs_ex_left, 1);
-
 	/*
 	 * For WRITEs, let the fabric know its buffer is ready.
 	 *
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index f176b8215302..6c83b14b3075 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -549,7 +549,6 @@ struct se_cmd {
 	unsigned long long	t_task_lba;
 	atomic_t		t_fe_count;
 	atomic_t		t_se_count;
-	atomic_t		t_task_cdbs_ex_left;
 	unsigned int		transport_state;
 #define CMD_T_ABORTED		(1 << 0)
 #define CMD_T_ACTIVE		(1 << 1)