aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2011-11-02 11:28:20 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2011-11-02 11:58:46 -0400
commit3151d069e9e77043b0e791719bc65896cf24d9f0 (patch)
tree7913988d9a7efc0ac7ef6cd44ca892243adcb9bd
parent88dd9e26d6d3e743f9c7e4562b94b2ad3c2994d3 (diff)
target: Remove core TRANSPORT_FREE_CMD_INTR usage
This patch drops TRANSPORT_FREE_CMD_INTR usage from target core, which includes the removal of transport_generic_free_cmd_intr() symbol, TRANSPORT_FREE_CMD_INTR usage in transport_processing_thread(), and special case LUN_RESET handling to skip TRANSPORT_FREE_CMD_INTR processing in core_tmr_drain_cmd_list(). We now expect that fabric modules will use an internal workqueue to provide process context when releasing se_cmd descriptor resources via transport_generic_free_cmd(). Reported-by: Christoph Hellwig <hch@lst.de> Cc: Christoph Hellwig <hch@lst.de> Cc: Roland Dreier <roland@purestorage.com> Cc: Madhuranath Iyengar <mni@risingtidesystems.com> Signed-off-by: Nicholas Bellinger <nab@risingtidesystems.com>
-rw-r--r--drivers/target/target_core_tmr.c10
-rw-r--r--drivers/target/target_core_transport.c10
-rw-r--r--include/target/target_core_base.h1
-rw-r--r--include/target/target_core_transport.h1
4 files changed, 0 insertions, 22 deletions
diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c
index b1b9f2d6f935..1d2aaba3f372 100644
--- a/drivers/target/target_core_tmr.c
+++ b/drivers/target/target_core_tmr.c
@@ -329,16 +329,6 @@ static void core_tmr_drain_cmd_list(
329 */ 329 */
330 if (prout_cmd == cmd) 330 if (prout_cmd == cmd)
331 continue; 331 continue;
332 /*
333 * Skip direct processing of TRANSPORT_FREE_CMD_INTR for
334 * HW target mode fabrics.
335 */
336 spin_lock(&cmd->t_state_lock);
337 if (cmd->t_state == TRANSPORT_FREE_CMD_INTR) {
338 spin_unlock(&cmd->t_state_lock);
339 continue;
340 }
341 spin_unlock(&cmd->t_state_lock);
342 332
343 atomic_set(&cmd->t_transport_queue_active, 0); 333 atomic_set(&cmd->t_transport_queue_active, 0);
344 atomic_dec(&qobj->queue_cnt); 334 atomic_dec(&qobj->queue_cnt);
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index bf8867f44021..64ee3342e0c2 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -1718,13 +1718,6 @@ int transport_generic_handle_tmr(
1718} 1718}
1719EXPORT_SYMBOL(transport_generic_handle_tmr); 1719EXPORT_SYMBOL(transport_generic_handle_tmr);
1720 1720
1721void transport_generic_free_cmd_intr(
1722 struct se_cmd *cmd)
1723{
1724 transport_add_cmd_to_queue(cmd, TRANSPORT_FREE_CMD_INTR, false);
1725}
1726EXPORT_SYMBOL(transport_generic_free_cmd_intr);
1727
1728/* 1721/*
1729 * If the task is active, request it to be stopped and sleep until it 1722 * If the task is active, request it to be stopped and sleep until it
1730 * has completed. 1723 * has completed.
@@ -4597,9 +4590,6 @@ get_cmd:
4597 case TRANSPORT_PROCESS_WRITE: 4590 case TRANSPORT_PROCESS_WRITE:
4598 transport_generic_process_write(cmd); 4591 transport_generic_process_write(cmd);
4599 break; 4592 break;
4600 case TRANSPORT_FREE_CMD_INTR:
4601 transport_generic_free_cmd(cmd, 0);
4602 break;
4603 case TRANSPORT_PROCESS_TMR: 4593 case TRANSPORT_PROCESS_TMR:
4604 transport_generic_do_tmr(cmd); 4594 transport_generic_do_tmr(cmd);
4605 break; 4595 break;
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index 35aa786f93da..d571bcfd16ad 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -89,7 +89,6 @@ enum transport_state_table {
89 TRANSPORT_PROCESS_TMR = 9, 89 TRANSPORT_PROCESS_TMR = 9,
90 TRANSPORT_ISTATE_PROCESSING = 11, 90 TRANSPORT_ISTATE_PROCESSING = 11,
91 TRANSPORT_NEW_CMD_MAP = 16, 91 TRANSPORT_NEW_CMD_MAP = 16,
92 TRANSPORT_FREE_CMD_INTR = 17,
93 TRANSPORT_COMPLETE_QF_WP = 18, 92 TRANSPORT_COMPLETE_QF_WP = 18,
94 TRANSPORT_COMPLETE_QF_OK = 19, 93 TRANSPORT_COMPLETE_QF_OK = 19,
95}; 94};
diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h
index a037a1a6fbba..d1b68c9ccb75 100644
--- a/include/target/target_core_transport.h
+++ b/include/target/target_core_transport.h
@@ -160,7 +160,6 @@ extern int transport_generic_handle_cdb_map(struct se_cmd *);
160extern int transport_generic_handle_data(struct se_cmd *); 160extern int transport_generic_handle_data(struct se_cmd *);
161extern void transport_new_cmd_failure(struct se_cmd *); 161extern void transport_new_cmd_failure(struct se_cmd *);
162extern int transport_generic_handle_tmr(struct se_cmd *); 162extern int transport_generic_handle_tmr(struct se_cmd *);
163extern void transport_generic_free_cmd_intr(struct se_cmd *);
164extern bool target_stop_task(struct se_task *task, unsigned long *flags); 163extern bool target_stop_task(struct se_task *task, unsigned long *flags);
165extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, 164extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32,
166 struct scatterlist *, u32); 165 struct scatterlist *, u32);