Commit e6a2573f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Nicholas Bellinger

target: remove transport_generic_remove

All callers that never have the session_reinstatement flag set can trivially
be converted to transport_put_cmd.  Opencode the session reinstatement code
in transport_generic_free_cmd, which was the only caller ever asking for it.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 4911e3cc
...@@ -86,8 +86,6 @@ static u32 transport_allocate_tasks(struct se_cmd *cmd, ...@@ -86,8 +86,6 @@ static u32 transport_allocate_tasks(struct se_cmd *cmd,
enum dma_data_direction data_direction, enum dma_data_direction data_direction,
struct scatterlist *sgl, unsigned int nents); struct scatterlist *sgl, unsigned int nents);
static int transport_generic_get_mem(struct se_cmd *cmd); static int transport_generic_get_mem(struct se_cmd *cmd);
static int transport_generic_remove(struct se_cmd *cmd,
int session_reinstatement);
static bool transport_put_cmd(struct se_cmd *cmd); static bool transport_put_cmd(struct se_cmd *cmd);
static void transport_remove_cmd_from_queue(struct se_cmd *cmd, static void transport_remove_cmd_from_queue(struct se_cmd *cmd,
struct se_queue_obj *qobj); struct se_queue_obj *qobj);
...@@ -599,7 +597,7 @@ void transport_cmd_finish_abort(struct se_cmd *cmd, int remove) ...@@ -599,7 +597,7 @@ void transport_cmd_finish_abort(struct se_cmd *cmd, int remove)
return; return;
if (remove) { if (remove) {
transport_remove_cmd_from_queue(cmd, &cmd->se_dev->dev_queue_obj); transport_remove_cmd_from_queue(cmd, &cmd->se_dev->dev_queue_obj);
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
} }
...@@ -610,7 +608,7 @@ void transport_cmd_finish_abort_tmr(struct se_cmd *cmd) ...@@ -610,7 +608,7 @@ void transport_cmd_finish_abort_tmr(struct se_cmd *cmd)
if (transport_cmd_check_stop_to_fabric(cmd)) if (transport_cmd_check_stop_to_fabric(cmd))
return; return;
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
static void transport_add_cmd_to_queue( static void transport_add_cmd_to_queue(
...@@ -2072,7 +2070,7 @@ static void transport_generic_request_timeout(struct se_cmd *cmd) ...@@ -2072,7 +2070,7 @@ static void transport_generic_request_timeout(struct se_cmd *cmd)
unsigned long flags; unsigned long flags;
/* /*
* Reset cmd->t_se_count to allow transport_generic_remove() * Reset cmd->t_se_count to allow transport_put_cmd()
* to allow last call to free memory resources. * to allow last call to free memory resources.
*/ */
spin_lock_irqsave(&cmd->t_state_lock, flags); spin_lock_irqsave(&cmd->t_state_lock, flags);
...@@ -2083,7 +2081,7 @@ static void transport_generic_request_timeout(struct se_cmd *cmd) ...@@ -2083,7 +2081,7 @@ static void transport_generic_request_timeout(struct se_cmd *cmd)
} }
spin_unlock_irqrestore(&cmd->t_state_lock, flags); spin_unlock_irqrestore(&cmd->t_state_lock, flags);
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
static inline u32 transport_lba_21(unsigned char *cdb) static inline u32 transport_lba_21(unsigned char *cdb)
...@@ -3772,24 +3770,6 @@ static bool transport_put_cmd(struct se_cmd *cmd) ...@@ -3772,24 +3770,6 @@ static bool transport_put_cmd(struct se_cmd *cmd)
return false; return false;
} }
static int
transport_generic_remove(struct se_cmd *cmd, int session_reinstatement)
{
unsigned long flags;
if (!transport_put_cmd(cmd)) {
if (session_reinstatement) {
spin_lock_irqsave(&cmd->t_state_lock, flags);
transport_all_task_dev_remove_state(cmd);
spin_unlock_irqrestore(&cmd->t_state_lock,
flags);
}
return 1;
}
return 0;
}
/* /*
* transport_generic_map_mem_to_cmd - Use fabric-alloced pages instead of * transport_generic_map_mem_to_cmd - Use fabric-alloced pages instead of
* allocating in the core. * allocating in the core.
...@@ -4379,7 +4359,13 @@ void transport_generic_free_cmd( ...@@ -4379,7 +4359,13 @@ void transport_generic_free_cmd(
transport_free_dev_tasks(cmd); transport_free_dev_tasks(cmd);
transport_generic_remove(cmd, session_reinstatement); if (!transport_put_cmd(cmd) && session_reinstatement) {
unsigned long flags;
spin_lock_irqsave(&cmd->t_state_lock, flags);
transport_all_task_dev_remove_state(cmd);
spin_unlock_irqrestore(&cmd->t_state_lock, flags);
}
} }
} }
EXPORT_SYMBOL(transport_generic_free_cmd); EXPORT_SYMBOL(transport_generic_free_cmd);
...@@ -5066,7 +5052,7 @@ static void transport_processing_shutdown(struct se_device *dev) ...@@ -5066,7 +5052,7 @@ static void transport_processing_shutdown(struct se_device *dev)
transport_lun_remove_cmd(cmd); transport_lun_remove_cmd(cmd);
if (transport_cmd_check_stop(cmd, 1, 0)) if (transport_cmd_check_stop(cmd, 1, 0))
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
spin_lock_irqsave(&dev->execute_task_lock, flags); spin_lock_irqsave(&dev->execute_task_lock, flags);
...@@ -5094,7 +5080,7 @@ static void transport_processing_shutdown(struct se_device *dev) ...@@ -5094,7 +5080,7 @@ static void transport_processing_shutdown(struct se_device *dev)
transport_lun_remove_cmd(cmd); transport_lun_remove_cmd(cmd);
if (transport_cmd_check_stop(cmd, 1, 0)) if (transport_cmd_check_stop(cmd, 1, 0))
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
spin_lock_irqsave(&dev->execute_task_lock, flags); spin_lock_irqsave(&dev->execute_task_lock, flags);
...@@ -5117,7 +5103,7 @@ static void transport_processing_shutdown(struct se_device *dev) ...@@ -5117,7 +5103,7 @@ static void transport_processing_shutdown(struct se_device *dev)
} else { } else {
transport_lun_remove_cmd(cmd); transport_lun_remove_cmd(cmd);
if (transport_cmd_check_stop(cmd, 1, 0)) if (transport_cmd_check_stop(cmd, 1, 0))
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
} }
} }
} }
...@@ -5192,7 +5178,7 @@ static int transport_processing_thread(void *param) ...@@ -5192,7 +5178,7 @@ static int transport_processing_thread(void *param)
transport_generic_complete_ok(cmd); transport_generic_complete_ok(cmd);
break; break;
case TRANSPORT_REMOVE: case TRANSPORT_REMOVE:
transport_generic_remove(cmd, 0); transport_put_cmd(cmd);
break; break;
case TRANSPORT_FREE_CMD_INTR: case TRANSPORT_FREE_CMD_INTR:
transport_generic_free_cmd(cmd, 0, 0); transport_generic_free_cmd(cmd, 0, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment