target: Stop execution if CMD_T_STOP has been set
Stop execution if CMD_T_STOP has been set for a command just after the command has been added to the device command list and before .write_pending() is called. The following sequence can trigger this: - transport_handle_cdb_direct() gets called. This function namely sets CMD_T_ACTIVE before it calls transport_generic_new_cmd(). - __transport_wait_for_tasks() is called concurrently. This function sets CMD_T_STOP for all active commands that have not been aborted. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Andy Grover <agrover@redhat.com> Cc: David Disseldorp <ddiss@suse.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
2d4760ee47
commit
a5eb307f37
|
@ -2452,7 +2452,8 @@ transport_generic_new_cmd(struct se_cmd *cmd)
|
|||
target_execute_cmd(cmd);
|
||||
return 0;
|
||||
}
|
||||
transport_cmd_check_stop(cmd, false, true);
|
||||
if (transport_cmd_check_stop(cmd, false, true))
|
||||
return 0;
|
||||
|
||||
ret = cmd->se_tfo->write_pending(cmd);
|
||||
if (ret == -EAGAIN || ret == -ENOMEM)
|
||||
|
|
Loading…
Reference in New Issue