isci: cleanup "starting" state handling
The lldd actively disallows requests in the "starting" state. Retrying or holding off commands in this state is sub-optimal: 1/ it adds another state check to the fast path 2/ retrying can cause libsas to give up However, isci's ->lldd_dev_found() routine already waits for controller start to complete before allowing further progress. Checking the "starting" state in isci_task_execute_task and the isr is redundant and misleading. Clean this up and introduce a controller-wide event queue to start reeling in "completion" proliferation in the driver. The "stopping" state cleanups are in a similar vein, rely on the the isr and other paths being precluded from occurring rather than implementing state checking logic. Reported-by: Christoph Hellwig <hch@infradead.org> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Edmund Nadolski <edmund.nadolski@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -164,8 +164,7 @@ int isci_task_execute_task(struct sas_task *task, int num, gfp_t gfp_flags)
|
||||
* for the quiesce spinlock.
|
||||
*/
|
||||
|
||||
if (isci_host_get_state(isci_host) == isci_starting ||
|
||||
(device && ((isci_remote_device_get_state(device) == isci_ready) ||
|
||||
if ((device && ((isci_remote_device_get_state(device) == isci_ready) ||
|
||||
(isci_remote_device_get_state(device) == isci_host_quiesce)))) {
|
||||
|
||||
/* Forces a retry from scsi mid layer. */
|
||||
|
Reference in New Issue
Block a user