diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-11-02 11:28:20 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-11-02 11:58:46 -0400 |
commit | 3151d069e9e77043b0e791719bc65896cf24d9f0 (patch) | |
tree | 7913988d9a7efc0ac7ef6cd44ca892243adcb9bd | |
parent | 88dd9e26d6d3e743f9c7e4562b94b2ad3c2994d3 (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.c | 10 | ||||
-rw-r--r-- | drivers/target/target_core_transport.c | 10 | ||||
-rw-r--r-- | include/target/target_core_base.h | 1 | ||||
-rw-r--r-- | include/target/target_core_transport.h | 1 |
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 | } |
1719 | EXPORT_SYMBOL(transport_generic_handle_tmr); | 1719 | EXPORT_SYMBOL(transport_generic_handle_tmr); |
1720 | 1720 | ||
1721 | void transport_generic_free_cmd_intr( | ||
1722 | struct se_cmd *cmd) | ||
1723 | { | ||
1724 | transport_add_cmd_to_queue(cmd, TRANSPORT_FREE_CMD_INTR, false); | ||
1725 | } | ||
1726 | EXPORT_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 *); | |||
160 | extern int transport_generic_handle_data(struct se_cmd *); | 160 | extern int transport_generic_handle_data(struct se_cmd *); |
161 | extern void transport_new_cmd_failure(struct se_cmd *); | 161 | extern void transport_new_cmd_failure(struct se_cmd *); |
162 | extern int transport_generic_handle_tmr(struct se_cmd *); | 162 | extern int transport_generic_handle_tmr(struct se_cmd *); |
163 | extern void transport_generic_free_cmd_intr(struct se_cmd *); | ||
164 | extern bool target_stop_task(struct se_task *task, unsigned long *flags); | 163 | extern bool target_stop_task(struct se_task *task, unsigned long *flags); |
165 | extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, | 164 | extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, |
166 | struct scatterlist *, u32); | 165 | struct scatterlist *, u32); |