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>
This commit is contained in:
parent
88dd9e26d6
commit
3151d069e9
@ -329,16 +329,6 @@ static void core_tmr_drain_cmd_list(
|
||||
*/
|
||||
if (prout_cmd == cmd)
|
||||
continue;
|
||||
/*
|
||||
* Skip direct processing of TRANSPORT_FREE_CMD_INTR for
|
||||
* HW target mode fabrics.
|
||||
*/
|
||||
spin_lock(&cmd->t_state_lock);
|
||||
if (cmd->t_state == TRANSPORT_FREE_CMD_INTR) {
|
||||
spin_unlock(&cmd->t_state_lock);
|
||||
continue;
|
||||
}
|
||||
spin_unlock(&cmd->t_state_lock);
|
||||
|
||||
atomic_set(&cmd->t_transport_queue_active, 0);
|
||||
atomic_dec(&qobj->queue_cnt);
|
||||
|
@ -1718,13 +1718,6 @@ int transport_generic_handle_tmr(
|
||||
}
|
||||
EXPORT_SYMBOL(transport_generic_handle_tmr);
|
||||
|
||||
void transport_generic_free_cmd_intr(
|
||||
struct se_cmd *cmd)
|
||||
{
|
||||
transport_add_cmd_to_queue(cmd, TRANSPORT_FREE_CMD_INTR, false);
|
||||
}
|
||||
EXPORT_SYMBOL(transport_generic_free_cmd_intr);
|
||||
|
||||
/*
|
||||
* If the task is active, request it to be stopped and sleep until it
|
||||
* has completed.
|
||||
@ -4597,9 +4590,6 @@ static int transport_processing_thread(void *param)
|
||||
case TRANSPORT_PROCESS_WRITE:
|
||||
transport_generic_process_write(cmd);
|
||||
break;
|
||||
case TRANSPORT_FREE_CMD_INTR:
|
||||
transport_generic_free_cmd(cmd, 0);
|
||||
break;
|
||||
case TRANSPORT_PROCESS_TMR:
|
||||
transport_generic_do_tmr(cmd);
|
||||
break;
|
||||
|
@ -89,7 +89,6 @@ enum transport_state_table {
|
||||
TRANSPORT_PROCESS_TMR = 9,
|
||||
TRANSPORT_ISTATE_PROCESSING = 11,
|
||||
TRANSPORT_NEW_CMD_MAP = 16,
|
||||
TRANSPORT_FREE_CMD_INTR = 17,
|
||||
TRANSPORT_COMPLETE_QF_WP = 18,
|
||||
TRANSPORT_COMPLETE_QF_OK = 19,
|
||||
};
|
||||
|
@ -160,7 +160,6 @@ extern int transport_generic_handle_cdb_map(struct se_cmd *);
|
||||
extern int transport_generic_handle_data(struct se_cmd *);
|
||||
extern void transport_new_cmd_failure(struct se_cmd *);
|
||||
extern int transport_generic_handle_tmr(struct se_cmd *);
|
||||
extern void transport_generic_free_cmd_intr(struct se_cmd *);
|
||||
extern bool target_stop_task(struct se_task *task, unsigned long *flags);
|
||||
extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32,
|
||||
struct scatterlist *, u32);
|
||||
|
Loading…
Reference in New Issue
Block a user