Przeglądaj źródła

ibmvscsi: Abort init sequence during error recovery

If a CRQ reset is triggered for some reason while in the middle
of performing VSCSI adapter initialization, we don't want to
call the done function for the initialization MAD commands as
this will only result in two threads attempting initialization
at the same time, resulting in failures.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Acked-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Christoph Hellwig <hch@lst.de>
Brian King 11 lat temu
rodzic
commit
9ee755974b
1 zmienionych plików z 2 dodań i 1 usunięć
  1. 2 1
      drivers/scsi/ibmvscsi/ibmvscsi.c

+ 2 - 1
drivers/scsi/ibmvscsi/ibmvscsi.c

@@ -797,7 +797,8 @@ static void purge_requests(struct ibmvscsi_host_data *hostdata, int error_code)
 				       evt->hostdata->dev);
 				       evt->hostdata->dev);
 			if (evt->cmnd_done)
 			if (evt->cmnd_done)
 				evt->cmnd_done(evt->cmnd);
 				evt->cmnd_done(evt->cmnd);
-		} else if (evt->done)
+		} else if (evt->done && evt->crq.format != VIOSRP_MAD_FORMAT &&
+			   evt->iu.srp.login_req.opcode != SRP_LOGIN_REQ)
 			evt->done(evt);
 			evt->done(evt);
 		free_event_struct(&evt->hostdata->pool, evt);
 		free_event_struct(&evt->hostdata->pool, evt);
 		spin_lock_irqsave(hostdata->host->host_lock, flags);
 		spin_lock_irqsave(hostdata->host->host_lock, flags);